@altruist03/ui 0.0.0-stage → 0.2.0
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/assets/images/noData.webp +0 -0
- package/dist/index.js +15318 -0
- package/dist/index.js.map +1 -0
- package/dist/noData-XPRHKMFR.webp +0 -0
- package/package.json +51 -4
- package/src/ThemeProvider/ThemeContext.tsx +75 -0
- package/src/ThemeProvider/index.ts +7 -0
- package/src/assets/images/noData.webp +0 -0
- package/src/assets.d.ts +10 -0
- package/src/components/Accordion/Accordion.stories.tsx +64 -0
- package/src/components/Accordion/Accordion.tsx +219 -0
- package/src/components/Accordion/Accordion.types.ts +16 -0
- package/src/components/Avatar/Avatar.stories.tsx +304 -0
- package/src/components/Avatar/Avatar.tsx +211 -0
- package/src/components/Avatar/Avatar.types.ts +33 -0
- package/src/components/Badge/Badge.stories.tsx +143 -0
- package/src/components/Badge/Badge.tsx +138 -0
- package/src/components/Badge/Badge.types.ts +24 -0
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +114 -0
- package/src/components/Breadcrumb/Breadcrumb.tsx +120 -0
- package/src/components/Breadcrumb/Breadcrumb.types.ts +22 -0
- package/src/components/Button/Button.stories.tsx +457 -0
- package/src/components/Button/Button.tsx +202 -0
- package/src/components/Button/Button.types.ts +18 -0
- package/src/components/Checkbox/Checkbox.stories.tsx +254 -0
- package/src/components/Checkbox/Checkbox.tsx +352 -0
- package/src/components/Checkbox/Checkbox.types.ts +123 -0
- package/src/components/CloseButton/CloseButton.stories.tsx +100 -0
- package/src/components/CloseButton/CloseButton.tsx +117 -0
- package/src/components/CloseButton/CloseButton.types.ts +15 -0
- package/src/components/CollapsibleSearch/CollapsibleSearch.tsx +120 -0
- package/src/components/DataTable/DataTable.stories.tsx +233 -0
- package/src/components/DataTable/DataTable.tsx +968 -0
- package/src/components/DataTable/DataTable.types.ts +49 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +341 -0
- package/src/components/DatePicker/DatePicker.tsx +669 -0
- package/src/components/DatePicker/DatePicker.types.ts +105 -0
- package/src/components/DatePicker/DateTimePicker.tsx +35 -0
- package/src/components/DateRangePicker/DateRangePicker.tsx +179 -0
- package/src/components/DateRangePicker/DateRangePicker.types.ts +34 -0
- package/src/components/Drawer/Drawer.stories.tsx +243 -0
- package/src/components/Drawer/Drawer.tsx +196 -0
- package/src/components/Drawer/Drawer.types.ts +60 -0
- package/src/components/FileUpload/FileUpload.stories.tsx +162 -0
- package/src/components/FileUpload/FileUpload.tsx +216 -0
- package/src/components/FileUpload/FileUpload.types.ts +80 -0
- package/src/components/FilterPopover/FilterPopover.stories.tsx +173 -0
- package/src/components/FilterPopover/FilterPopover.tsx +310 -0
- package/src/components/FilterPopover/FilterPopover.types.ts +26 -0
- package/src/components/ImageViewer/ImageViewerToolbar.jsx +81 -0
- package/src/components/ImageViewer/useImagePanRotate.js +102 -0
- package/src/components/IpWhitelistField/IpWhitelistField.stories.tsx +138 -0
- package/src/components/IpWhitelistField/IpWhitelistField.tsx +164 -0
- package/src/components/IpWhitelistField/IpWhitelistField.types.ts +42 -0
- package/src/components/Loader/Loader.stories.tsx +95 -0
- package/src/components/Loader/Loader.tsx +132 -0
- package/src/components/Loader/Loader.types.ts +6 -0
- package/src/components/Menu/Menu.tsx +143 -0
- package/src/components/Menu/Menu.types.ts +28 -0
- package/src/components/MenuButton/MenuButton.stories.tsx +140 -0
- package/src/components/MenuButton/MenuButton.tsx +45 -0
- package/src/components/MenuButton/MenuButton.types.ts +21 -0
- package/src/components/Modal/Modal.stories.tsx +266 -0
- package/src/components/Modal/Modal.tsx +399 -0
- package/src/components/Modal/index.ts +2 -0
- package/src/components/Modal/types.ts +126 -0
- package/src/components/Pagination/Pagination.stories.tsx +167 -0
- package/src/components/Pagination/Pagination.tsx +266 -0
- package/src/components/Pagination/Pagination.types.ts +20 -0
- package/src/components/PeriodSelector/PeriodSelector.stories.tsx +50 -0
- package/src/components/PeriodSelector/PeriodSelector.tsx +47 -0
- package/src/components/PeriodSelector/PeriodSelector.types.ts +10 -0
- package/src/components/PhoneField/PhoneField.stories.tsx +141 -0
- package/src/components/PhoneField/PhoneField.tsx +284 -0
- package/src/components/PhoneField/PhoneField.types.ts +89 -0
- package/src/components/PhoneField/countryCodes.ts +236 -0
- package/src/components/Progress/Progress.stories.tsx +83 -0
- package/src/components/Progress/Progress.tsx +91 -0
- package/src/components/Progress/Progress.types.ts +22 -0
- package/src/components/RadioButton/RadioButton.stories.tsx +332 -0
- package/src/components/RadioButton/RadioButton.tsx +427 -0
- package/src/components/RadioButton/RadioButton.types.ts +117 -0
- package/src/components/ReportCard/ReportCard.tsx +183 -0
- package/src/components/ReportCard/ReportCard.types.ts +17 -0
- package/src/components/SectionIcon/SectionIcon.tsx +87 -0
- package/src/components/SectionIcon/SectionIcon.types.ts +23 -0
- package/src/components/SegmentedInputField/SegmentedInputField.stories.tsx +165 -0
- package/src/components/SegmentedInputField/SegmentedInputField.tsx +174 -0
- package/src/components/SegmentedInputField/SegmentedInputField.types.ts +51 -0
- package/src/components/SelectScroll/SelectScroll.stories.tsx +336 -0
- package/src/components/SelectScroll/SelectScroll.tsx +1119 -0
- package/src/components/SelectScroll/SelectScroll.types.ts +60 -0
- package/src/components/Selector/Selector.stories.tsx +382 -0
- package/src/components/Selector/Selector.tsx +1310 -0
- package/src/components/Selector/Selector.types.ts +71 -0
- package/src/components/Skeleton/Skeleton.stories.tsx +133 -0
- package/src/components/Skeleton/Skeleton.tsx +20 -0
- package/src/components/Skeleton/Skeleton.types.ts +3 -0
- package/src/components/Spinner/Spinner.stories.tsx +84 -0
- package/src/components/Spinner/Spinner.tsx +79 -0
- package/src/components/Spinner/Spinner.types.ts +8 -0
- package/src/components/StatCard/StatCard.stories.tsx +125 -0
- package/src/components/StatCard/StatCard.tsx +167 -0
- package/src/components/StatCard/StatCard.types.ts +20 -0
- package/src/components/StatusBadge/StatusBadge.stories.tsx +179 -0
- package/src/components/StatusBadge/StatusBadge.tsx +74 -0
- package/src/components/StatusBadge/StatusBadge.types.ts +23 -0
- package/src/components/Stepper/Stepper.stories.tsx +85 -0
- package/src/components/Stepper/Stepper.tsx +138 -0
- package/src/components/Stepper/Stepper.types.ts +16 -0
- package/src/components/SubTabs/SubTabs.stories.tsx +128 -0
- package/src/components/SubTabs/SubTabs.tsx +279 -0
- package/src/components/SubTabs/SubTabs.types.ts +44 -0
- package/src/components/SummaryCard/SummaryCard.stories.tsx +100 -0
- package/src/components/SummaryCard/SummaryCard.tsx +141 -0
- package/src/components/SummaryCard/SummaryCard.types.ts +22 -0
- package/src/components/Switch/Switch.stories.tsx +59 -0
- package/src/components/Switch/Switch.tsx +217 -0
- package/src/components/Switch/Switch.types.ts +22 -0
- package/src/components/Tabs/Tabs.stories.tsx +178 -0
- package/src/components/Tabs/Tabs.tsx +197 -0
- package/src/components/Tabs/Tabs.types.ts +34 -0
- package/src/components/TextField/TextField.stories.tsx +249 -0
- package/src/components/TextField/TextField.tsx +462 -0
- package/src/components/TextField/TextField.types.ts +141 -0
- package/src/components/Toast/Toast.stories.tsx +237 -0
- package/src/components/Toast/Toast.tsx +246 -0
- package/src/components/Toast/Toast.types.ts +31 -0
- package/src/components/ToggleButton/ToggleButton.stories.tsx +105 -0
- package/src/components/ToggleButton/ToggleButton.tsx +267 -0
- package/src/components/ToggleButton/ToggleButton.types.ts +19 -0
- package/src/components/UploadDropzone/UploadDropzone.jsx +78 -0
- package/src/components/UploadDropzone2/UploadDropzone.stories.tsx +94 -0
- package/src/components/UploadDropzone2/UploadDropzone.tsx +222 -0
- package/src/components/UploadDropzone2/UploadDropzone.types.ts +54 -0
- package/src/components/ViewEditToggle/ViewEditToggle.stories.tsx +40 -0
- package/src/components/ViewEditToggle/ViewEditToggle.tsx +239 -0
- package/src/components/ViewEditToggle/ViewEditToggle.types.ts +27 -0
- package/src/components/index.ts +157 -0
- package/src/icons/ReportDollarIcon.tsx +71 -0
- package/src/icons/index.ts +27 -0
- package/src/index.ts +214 -0
- package/src/storybook/preview.tsx +64 -0
- package/src/theme/index.ts +4 -0
- package/src/theme/types.d.ts +1 -0
- package/src/themes/cpc.ts +4 -0
- package/src/themes/firebird.ts +4 -0
- package/src/tokens/brands/cpc/themes/dark.json +82 -0
- package/src/tokens/brands/cpc/themes/light.json +1 -0
- package/src/tokens/brands/default/brand.json +20 -0
- package/src/tokens/brands/firebird/themes/dark.json +28 -0
- package/src/tokens/brands/firebird/themes/light.json +20 -0
- package/src/tokens/button.ts +24 -0
- package/src/tokens/components/accordion.json +52 -0
- package/src/tokens/components/avatar.json +40 -0
- package/src/tokens/components/badge.json +41 -0
- package/src/tokens/components/breadcrumb.json +13 -0
- package/src/tokens/components/button.json +67 -0
- package/src/tokens/components/card.json +39 -0
- package/src/tokens/components/checkbox.json +64 -0
- package/src/tokens/components/closebutton.json +55 -0
- package/src/tokens/components/datatable.json +40 -0
- package/src/tokens/components/datepicker.json +99 -0
- package/src/tokens/components/drawer.json +23 -0
- package/src/tokens/components/field.json +29 -0
- package/src/tokens/components/fileupload.json +57 -0
- package/src/tokens/components/filterpopover.json +29 -0
- package/src/tokens/components/input.json +31 -0
- package/src/tokens/components/ipwhitelistfield.json +16 -0
- package/src/tokens/components/loader.json +15 -0
- package/src/tokens/components/menu.json +21 -0
- package/src/tokens/components/modal.json +25 -0
- package/src/tokens/components/pagination.json +45 -0
- package/src/tokens/components/phonefield.json +41 -0
- package/src/tokens/components/progress.json +12 -0
- package/src/tokens/components/radio.json +87 -0
- package/src/tokens/components/reportcard.json +17 -0
- package/src/tokens/components/selector.json +87 -0
- package/src/tokens/components/selectscroll.json +65 -0
- package/src/tokens/components/skeleton.json +6 -0
- package/src/tokens/components/stepper.json +38 -0
- package/src/tokens/components/subtabs.json +45 -0
- package/src/tokens/components/switch.json +55 -0
- package/src/tokens/components/tabs.json +38 -0
- package/src/tokens/components/textfield.json +59 -0
- package/src/tokens/components/togglebutton.json +48 -0
- package/src/tokens/components/uploaddropzone.json +61 -0
- package/src/tokens/drawer.ts +37 -0
- package/src/tokens/foundation/breakpoints.json +10 -0
- package/src/tokens/foundation/colors.json +122 -0
- package/src/tokens/foundation/opacity.json +16 -0
- package/src/tokens/foundation/radius.json +14 -0
- package/src/tokens/foundation/size.json +38 -0
- package/src/tokens/foundation/spacing.json +19 -0
- package/src/tokens/foundation/typography.json +43 -0
- package/src/tokens/index.ts +3665 -0
- package/src/tokens/modal.ts +42 -0
- package/src/tokens/semantic/color.json +148 -0
- package/src/tokens/semantic/field.json +28 -0
- package/src/tokens/semantic/opacity.json +5 -0
- package/src/tokens/semantic/size.json +722 -0
- package/src/tokens/semantic/spacing.json +27 -0
- package/src/tokens/semantic/typography.json +87 -0
- package/src/utils/scrollLock.ts +44 -0
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tokens/foundation/size.json","../src/tokens/foundation/spacing.json","../src/tokens/foundation/radius.json","../src/tokens/foundation/colors.json","../src/tokens/foundation/typography.json","../src/tokens/foundation/opacity.json","../src/tokens/foundation/breakpoints.json","../src/tokens/semantic/color.json","../src/tokens/semantic/spacing.json","../src/tokens/semantic/typography.json","../src/tokens/semantic/field.json","../src/tokens/semantic/size.json","../src/tokens/semantic/opacity.json","../src/tokens/components/button.json","../src/tokens/components/input.json","../src/tokens/components/textfield.json","../src/tokens/components/card.json","../src/tokens/components/checkbox.json","../src/tokens/components/selectscroll.json","../src/tokens/components/selector.json","../src/tokens/components/datepicker.json","../src/tokens/components/field.json","../src/tokens/components/radio.json","../src/tokens/components/pagination.json","../src/tokens/components/closebutton.json","../src/tokens/components/avatar.json","../src/tokens/components/tabs.json","../src/tokens/components/subtabs.json","../src/tokens/components/menu.json","../src/tokens/components/fileupload.json","../src/tokens/components/uploaddropzone.json","../src/tokens/components/phonefield.json","../src/tokens/components/badge.json","../src/tokens/components/filterpopover.json","../src/tokens/components/togglebutton.json","../src/tokens/components/switch.json","../src/tokens/components/breadcrumb.json","../src/tokens/components/loader.json","../src/tokens/components/datatable.json","../src/tokens/components/modal.json","../src/tokens/components/drawer.json","../src/tokens/components/progress.json","../src/tokens/components/skeleton.json","../src/tokens/components/ipwhitelistfield.json","../src/tokens/components/stepper.json","../src/tokens/components/accordion.json","../src/tokens/components/reportcard.json","../src/tokens/brands/firebird/themes/light.json","../src/tokens/brands/firebird/themes/dark.json","../src/tokens/brands/cpc/themes/light.json","../src/tokens/brands/cpc/themes/dark.json","../src/tokens/index.ts","../src/ThemeProvider/ThemeContext.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Button/Button.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/TextField/TextField.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/DatePicker/DateTimePicker.tsx","../src/components/DateRangePicker/DateRangePicker.tsx","../src/components/RadioButton/RadioButton.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/CloseButton/CloseButton.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Tabs/Tabs.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/ViewEditToggle/ViewEditToggle.tsx","../src/components/Switch/Switch.tsx","../src/components/MenuButton/MenuButton.tsx","../src/components/Menu/Menu.tsx","../src/components/Badge/Badge.tsx","../src/components/Selector/Selector.tsx","../src/components/FileUpload/FileUpload.tsx","../src/components/UploadDropzone2/UploadDropzone.tsx","../src/components/PhoneField/countryCodes.ts","../src/components/PhoneField/PhoneField.tsx","../src/components/StatusBadge/StatusBadge.tsx","../src/components/FilterPopover/FilterPopover.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/Loader/Loader.tsx","../src/components/DataTable/DataTable.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Accordion/Accordion.tsx","../src/components/StatCard/StatCard.tsx","../src/components/ReportCard/ReportCard.tsx","../src/components/SummaryCard/SummaryCard.tsx","../src/components/SectionIcon/SectionIcon.tsx","../src/components/CollapsibleSearch/CollapsibleSearch.tsx","../src/tokens/modal.ts","../src/utils/scrollLock.ts","../src/components/Modal/Modal.tsx","../src/tokens/drawer.ts","../src/components/Drawer/Drawer.tsx","../src/components/Pagination/Pagination.tsx","../src/components/PeriodSelector/PeriodSelector.tsx","../src/components/SelectScroll/SelectScroll.tsx","../src/components/Progress/Progress.tsx","../src/components/SegmentedInputField/SegmentedInputField.tsx","../src/components/IpWhitelistField/IpWhitelistField.tsx","../src/components/SubTabs/SubTabs.tsx","../src/components/Toast/Toast.tsx","../src/icons/ReportDollarIcon.tsx","../src/themes/firebird.ts","../src/themes/cpc.ts","../src/theme/index.ts"],"names":["spacing_default","typography_default","size_default","opacity_default","field_default","light_default","dark_default","tokens","mergedSemanticColor","mergedSemantic","cbSize","useEffect","jsx","useState","jsxs","useRef","Fragment","ExampleCustomInput","React","forwardRef","useCallback","parsePx","CloseIcon","useMemo","badgeSize","createPortal","options","theme","useContext","result","Skeleton","name","VIEWPORT_EDGE_MARGIN_PX","parsed","toColor","KEYFRAMES_ID","ensureKeyframes","_","defaultAriaLabel","isValidElement","cloneElement","MOBILE_MAX_WIDTH","useIsMobileScreen","t","memo","LIST_MAX_HEIGHT","getOptionLabelDefault","OptionItemInner","OptionItem","label","useLayoutEffect","createContext","ReportDollarIcon"],"mappings":"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","file":"index.js","sourcesContent":["{\r\n \"size\": {\r\n \"0\": \"0px\",\r\n \"1\": \"1px\",\r\n \"2\": \"2px\",\r\n \"4\": \"4px\",\r\n \"8\": \"8px\",\r\n \"12\": \"12px\",\r\n \"15\": \"15px\",\r\n \"16\": \"16px\",\r\n \"20\": \"20px\",\r\n \"24\": \"24px\",\r\n \"28\": \"28px\",\r\n \"30\": \"30px\",\r\n \"32\": \"32px\",\r\n \"34\": \"34px\",\r\n \"36\": \"36px\",\r\n \"38\": \"38px\",\r\n \"40\": \"40px\",\r\n \"44\": \"44px\",\r\n \"48\": \"48px\",\r\n \"52\": \"52px\",\r\n \"56\": \"56px\",\r\n \"60\": \"60px\",\r\n \"64\": \"64px\",\r\n \"76\": \"76px\",\r\n \"116\": \"116px\",\r\n \"180\": \"180px\",\r\n \"320\": \"320px\",\r\n \"380\": \"380px\",\r\n \"420\": \"420px\",\r\n \"480\": \"480px\",\r\n \"520\": \"520px\",\r\n \"550\": \"550px\",\r\n \"1200\": \"1200px\",\r\n \"60vh\": \"60vh\"\r\n }\r\n}\r\n","{\r\n \"spacing\": {\r\n \"0\": \"0px\",\r\n \"xxs\": \"2px\",\r\n \"1\": \"4px\",\r\n \"1_25\": \"5px\",\r\n \"1_5\": \"6px\",\r\n \"1_75\": \"7px\",\r\n \"2\": \"8px\",\r\n \"3\": \"12px\",\r\n \"4\": \"16px\",\r\n \"5\": \"20px\",\r\n \"6\": \"24px\",\r\n \"7\": \"32px\",\r\n \"8\": \"40px\",\r\n \"9\": \"48px\",\r\n \"10\": \"64px\"\r\n }\r\n}\r\n","{\r\n \"radius\": {\r\n \"none\": \"0px\",\r\n \"xs\": \"1px\",\r\n \"sm\": \"2px\",\r\n \"md\": \"8px\",\r\n \"control\": \"6px\",\r\n \"lg\": \"8px\",\r\n \"xl\": \"12px\",\r\n \"2xl\": \"16px\",\r\n \"full\": \"9999px\",\r\n \"pill\": \"50px\"\r\n }\r\n}\r\n","{\r\n \"colors\": {\r\n \"white\": \"#FFFFFF\",\r\n \"black\": \"#000000\",\r\n \"transparent\": \"transparent\",\r\n \"gray\": {\r\n \"50\": \"#F9FAFB\",\r\n \"75\": \"#F3F5F6\",\r\n \"100\": \"#F3F4F6\",\r\n \"150\": \"#F1EDE1\",\r\n \"175\": \"#E5EEEF\",\r\n \"200\": \"#E5E9EB\",\r\n \"250\": \"#D6DCE0\",\r\n \"300\": \"#D1D5DB\",\r\n \"400\": \"#9CA3AF\",\r\n \"500\": \"#6B7280\",\r\n \"600\": \"#4B5563\",\r\n \"650\": \"#5A6B77\",\r\n \"686\": \"#686868\",\r\n \"700\": \"#374151\",\r\n \"750\": \"#353535\",\r\n \"800\": \"#1F2937\",\r\n \"850\": \"#1F1F1F\",\r\n \"900\": \"#111827\",\r\n \"925\": \"#131925\",\r\n \"950\": \"#F2F2F7\",\r\n \"1000\": \"#7B809A\",\r\n \"1100\": \"#272727\",\r\n \"1200\": \"#4C4C4C\",\r\n \"1300\": \"#FFFFFF66\",\r\n \"1400\": \"#FFFFFF10\",\r\n \"1500\": \"#332F24\"\r\n },\r\n \"green\": {\r\n \"25\": \"#F4FFDC\",\r\n \"50\": \"#F0F9F4\",\r\n \"100\": \"#DCF2E3\",\r\n \"200\": \"#B8E5C7\",\r\n \"300\": \"#94D8AB\",\r\n \"400\": \"#70CB8F\",\r\n \"500\": \"#52760A\",\r\n \"600\": \"#384F0A\",\r\n \"700\": \"#2A3D08\",\r\n \"800\": \"#1C2B05\",\r\n \"900\": \"#0E1A03\",\r\n \"positive\": \"#1F7735\",\r\n \"positiveLight\": \"#D6F4DE\"\r\n },\r\n \"red\": {\r\n \"50\": \"#FFF2F4\",\r\n \"100\": \"#FFD3DA\",\r\n \"200\": \"#FECACA\",\r\n \"300\": \"#FCA5A5\",\r\n \"400\": \"#F87171\",\r\n \"500\": \"#EF4444\",\r\n \"600\": \"#DC2626\",\r\n \"650\": \"#C72D44\",\r\n \"700\": \"#BA0000\",\r\n \"800\": \"#991B1B\",\r\n \"900\": \"#7F1D1D\"\r\n },\r\n \"blue\": {\r\n \"50\": \"#EFF6FF\",\r\n \"100\": \"#DBEAFE\",\r\n \"200\": \"#BFDBFE\",\r\n \"300\": \"#93C5FD\",\r\n \"400\": \"#60A5FA\",\r\n \"500\": \"#3B82F6\",\r\n \"600\": \"#00545E\",\r\n \"650\": \"#5A6B77\",\r\n \"700\": \"#00424A\",\r\n \"800\": \"#00424A\",\r\n \"900\": \"#1E3A8A\",\r\n \"warningTertiary\": \"#DAF2FF\"\r\n },\r\n \"orange\": {\r\n \"500\": \"#F5A623\",\r\n \"warning\": \"#B16F15\",\r\n \"warningLight\": \"#F9E6CC\"\r\n },\r\n \"yellow\": {\r\n \"50\": \"#FEFCE8\",\r\n \"100\": \"#FEF9C3\",\r\n \"200\": \"#FEF08A\",\r\n \"300\": \"#FDE047\",\r\n \"400\": \"#FACC15\",\r\n \"500\": \"#EAB308\",\r\n \"600\": \"#CA8A04\",\r\n \"700\": \"#A16207\",\r\n \"800\": \"#854D0E\",\r\n \"900\": \"#713F12\",\r\n \"1000\": \"#826D3A\",\r\n \"1100\": \"#826D3ACC\"\r\n },\r\n \"softRed\": { \"500\": \"#F0645A\" },\r\n \"brand\": {\r\n \"arabianGulf\": \"#00545E\",\r\n \"gold\": \"#BBA367\",\r\n \"goldDark\": \"#826D3A\",\r\n \"cream\": \"#EAE3D1\",\r\n \"alphaPrimary30\": \"#C9A6644D\",\r\n \"alphaBlack10\": \"#1F1F1F1A\",\r\n \"alphaBorderRadio\": \"#5A6B774D\"\r\n },\r\n \"icon\": {\r\n \"tertiary\": \"#9BA7B5\",\r\n \"light\": \"#CBD5E1\"\r\n },\r\n \"border\": {\r\n \"default\": \"#E7EBEE\",\r\n \"input\": \"#C7CED6\"\r\n },\r\n \"button\": {\r\n \"secondaryDefault\": \"#F6F7F8\",\r\n \"stroke\": \"#FFFFFF\"\r\n },\r\n \"background\": {\r\n \"labelsDark\": \"#F3F5F6\",\r\n \"warmLight\": \"#FAF8F4\"\r\n }\r\n }\r\n}\r\n","{\r\n \"typography\": {\r\n \"fontFamily\": {\r\n \"sans\": \"\\\"Inter\\\", sans-serif\",\r\n \"mono\": \"monospace\"\r\n },\r\n \"fontSize\": {\r\n \"xs\": \"10px\",\r\n \"sm\": \"12px\",\r\n \"base\": \"14px\",\r\n \"md\": \"16px\",\r\n \"lg\": \"18px\",\r\n \"xl\": \"20px\",\r\n \"2xl\": \"24px\",\r\n \"3xl\": \"30px\"\r\n },\r\n \"fontWeight\": {\r\n \"light\": 300,\r\n \"normal\": 400,\r\n \"medium\": 500,\r\n \"semibold\": 600,\r\n \"bold\": 700\r\n },\r\n \"lineHeight\": {\r\n \"xs\": \"18px\",\r\n \"sm\": \"20px\",\r\n \"md\": \"24px\",\r\n \"lg\": \"28px\",\r\n \"none\": 1,\r\n \"tight\": 1.25,\r\n \"snug\": 1.375,\r\n \"normal\": 1.5,\r\n \"relaxed\": 1.625,\r\n \"loose\": 2\r\n },\r\n \"paragraphSpacing\": {\r\n \"xs\": \"12px\",\r\n \"sm\": \"14px\",\r\n \"md\": \"16px\",\r\n \"lg\": \"18px\"\r\n }\r\n }\r\n}\r\n","{\r\n \"opacity\": {\r\n \"0\": \"0\",\r\n \"10\": \"0.1\",\r\n \"20\": \"0.2\",\r\n \"30\": \"0.3\",\r\n \"40\": \"0.4\",\r\n \"50\": \"0.5\",\r\n \"60\": \"0.6\",\r\n \"70\": \"0.7\",\r\n \"80\": \"0.8\",\r\n \"90\": \"0.9\",\r\n \"100\": \"1\"\r\n }\r\n}\r\n\r\n","{\r\n \"breakpoints\": {\r\n \"mobile\": 0,\r\n \"tablet\": 768,\r\n \"laptop\": 1024,\r\n \"desktop\": 1440,\r\n \"wide\": 1920,\r\n \"ultra\": 2560\r\n }\r\n}\r\n","{\r\n \"color\": {\r\n \"primary\": {\r\n \"default\": \"{colors.green.500}\",\r\n \"hover\": \"{colors.green.600}\",\r\n \"active\": \"{colors.green.700}\",\r\n \"light\": \"{colors.green.100}\",\r\n \"dark\": \"{colors.green.800}\"\r\n },\r\n \"secondary\": {\r\n \"default\": \"{colors.gray.200}\",\r\n \"hover\": \"{colors.gray.300}\",\r\n \"active\": \"{colors.gray.400}\"\r\n },\r\n \"destructive\": {\r\n \"default\": \"{colors.red.50}\",\r\n \"hover\": \"{colors.red.100}\",\r\n \"active\": \"{colors.red.800}\",\r\n \"text\": \"{colors.red.650}\"\r\n },\r\n \"neutral\": {\r\n \"default\": \"{colors.gray.200}\",\r\n \"hover\": \"{colors.gray.250}\",\r\n \"active\": \"{colors.gray.800}\"\r\n },\r\n \"text\": {\r\n \"primary\": \"{colors.gray.686}\",\r\n \"secondary\": \"{colors.gray.700}\",\r\n \"tertiary\": \"{colors.gray.850}\",\r\n \"placeholder\": \"{colors.blue.650}\",\r\n \"disabled\": \"{colors.gray.400}\",\r\n \"inverse\": \"{colors.white}\",\r\n \"fileupload\": \"{colors.blue.600}\",\r\n \"badge\": \"{colors.gray.850}\",\r\n \"description\": \"{colors.gray.1000}\",\r\n \"cross\": \"{colors.white}\",\r\n \"tableHeader\": \"{colors.white}\"\r\n },\r\n \"background\": {\r\n \"default\": \"{colors.gray.75}\",\r\n \"secondary\": \"{colors.gray.50}\",\r\n \"tertiary\": \"{colors.gray.100}\",\r\n \"disabled\": \"{colors.gray.200}\",\r\n \"labelsDark\": \"{colors.background.labelsDark}\",\r\n \"closeButton\": \"{colors.gray.200}\",\r\n \"warm\": \"{colors.background.warmLight}\",\r\n \"badge\": \"{colors.white}\",\r\n \"chip\": \"{colors.white}\",\r\n \"dropdown\": \"{colors.white}\",\r\n \"groupHeading\": \"{colors.gray.1500}\",\r\n \"filterpopover\": \"{colors.white}\",\r\n \"tabsBackground\": \"{colors.white}\",\r\n \"tableHeader\": \"{colors.green.500}\",\r\n \"tableRow\": \"{colors.white}\",\r\n \"tableRowStripe\": \"{colors.gray.75}\",\r\n \"tableRowHover\": \"{colors.gray.150}\",\r\n \"modalHeader\": \"{colors.green.500}\",\r\n \"overlay\": \"rgba(107, 114, 128, 0.75)\",\r\n \"selectBox\": \"{colors.white}\",\r\n \"uploaddropzone\": \"{colors.white}\"\r\n },\r\n \"border\": {\r\n \"default\": \"{colors.gray.400}\",\r\n \"secondary\": \"{colors.gray.650}\",\r\n \"transparent\": \"{colors.transparent}\",\r\n \"active\": \"{colors.green.500}\",\r\n \"error\": \"{colors.red.500}\",\r\n \"disabled\": \"{colors.gray.200}\",\r\n \"radio\": \"{colors.brand.alphaBorderRadio}\",\r\n \"input\": \"{colors.border.input}\",\r\n \"radioActive\": \"{colors.gray.850}\",\r\n \"tableHeaderPartition\": \"{colors.white}\",\r\n \"tableBorder\": \"{colors.gray.200}\"\r\n },\r\n \"error\": {\r\n \"default\": \"{colors.red.650}\",\r\n \"light\": \"{colors.red.100}\",\r\n \"dark\": \"{colors.red.900}\"\r\n },\r\n \"success\": {\r\n \"default\": \"{colors.green.500}\",\r\n \"light\": \"{colors.green.100}\",\r\n \"dark\": \"{colors.green.600}\"\r\n },\r\n \"warning\": {\r\n \"default\": \"{colors.orange.warning}\",\r\n \"light\": \"{colors.orange.warningLight}\",\r\n \"tertiary\": \"{colors.blue.warningTertiary}\",\r\n \"dark\": \"{colors.yellow.700}\"\r\n },\r\n \"info\": {\r\n \"default\": \"{colors.blue.500}\",\r\n \"light\": \"{colors.blue.100}\",\r\n \"dark\": \"{colors.blue.600}\"\r\n },\r\n \"brand\": {\r\n \"default\": \"{colors.brand.gold}\",\r\n \"secondary\": \"{colors.brand.cream}\",\r\n \"textDefault\": \"{colors.brand.goldDark}\",\r\n \"textSecondary\": \"{colors.brand.arabianGulf}\"\r\n },\r\n \"icon\": {\r\n \"default\": \"{colors.gray.850}\",\r\n \"secondary\": \"{colors.gray.650}\",\r\n \"tertiary\": \"{colors.icon.tertiary}\",\r\n \"light\": \"{colors.icon.light}\",\r\n \"caption\": \"{colors.gray.650}\"\r\n },\r\n \"radio\": {\r\n \"color\": {\r\n \"inactive\": \"{colors.gray.850}\",\r\n \"active\": \"{colors.green.500}\",\r\n \"dot\": \"{colors.green.500}\"\r\n },\r\n \"option\": {\r\n \"border\": {\r\n \"active\": \"{colors.green.500}\",\r\n \"inactive\": \"{colors.border.input}\"\r\n },\r\n \"background\": {\r\n \"active\": \"{colors.green.25}\",\r\n \"inactive\": \"{colors.button.secondaryDefault}\"\r\n },\r\n \"text\": {\r\n \"active\": \"{colors.green.500}\",\r\n \"inactive\": \"{colors.gray.850}\"\r\n }\r\n },\r\n \"label\": {\r\n \"color\": {\r\n \"active\": \"{colors.gray.850}\",\r\n \"inactive\": \"{colors.blue.850}\"\r\n },\r\n \"background\": \"{colors.white}\"\r\n }\r\n },\r\n \"button\": {\r\n \"secondaryDefault\": \"{colors.button.secondaryDefault}\",\r\n \"stroke\": \"{colors.button.stroke}\"\r\n },\r\n \"checkbox\": {\r\n \"color\": {\r\n \"active\": \"{colors.green.500}\",\r\n \"inactive\": \"{colors.transparent}\"\r\n }\r\n }\r\n }\r\n}\r\n","{\r\n \"spacing\": {\r\n \"layout\": {\r\n \"xs\": \"{spacing.1}\",\r\n \"sm\": \"{spacing.2}\",\r\n \"md\": \"{spacing.3}\",\r\n \"lg\": \"{spacing.4}\",\r\n \"xl\": \"{spacing.6}\",\r\n \"2xl\": \"{spacing.7}\"\r\n },\r\n \"component\": {\r\n \"xxs\": \"{spacing.1_5}\",\r\n \"xs\": \"{spacing.1}\",\r\n \"sm\": \"{spacing.2}\",\r\n \"md\": \"{spacing.3}\",\r\n \"lg\": \"{spacing.4}\",\r\n \"xl\": \"{spacing.5}\"\r\n },\r\n \"section\": {\r\n \"xs\": \"{spacing.4}\",\r\n \"sm\": \"{spacing.6}\",\r\n \"md\": \"{spacing.7}\",\r\n \"lg\": \"{spacing.9}\",\r\n \"xl\": \"{spacing.10}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"typography\": {\r\n \"heading\": {\r\n \"h1\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.3xl}\",\r\n \"fontWeight\": \"{typography.fontWeight.bold}\",\r\n \"lineHeight\": \"{typography.lineHeight.tight}\"\r\n },\r\n \"h2\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.2xl}\",\r\n \"fontWeight\": \"{typography.fontWeight.bold}\",\r\n \"lineHeight\": \"{typography.lineHeight.tight}\"\r\n },\r\n \"h3\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.xl}\",\r\n \"fontWeight\": \"{typography.fontWeight.semibold}\",\r\n \"lineHeight\": \"{typography.lineHeight.snug}\"\r\n },\r\n \"h4\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.lg}\",\r\n \"fontWeight\": \"{typography.fontWeight.semibold}\",\r\n \"lineHeight\": \"{typography.lineHeight.normal}\"\r\n }\r\n },\r\n \"body\": {\r\n \"large\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.md}\",\r\n \"fontWeight\": \"{typography.fontWeight.normal}\",\r\n \"lineHeight\": \"{typography.lineHeight.relaxed}\"\r\n },\r\n \"medium\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.base}\",\r\n \"fontWeight\": \"{typography.fontWeight.normal}\",\r\n \"lineHeight\": \"{typography.lineHeight.normal}\"\r\n },\r\n \"small\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.sm}\",\r\n \"fontWeight\": \"{typography.fontWeight.normal}\",\r\n \"lineHeight\": \"{typography.lineHeight.normal}\"\r\n },\r\n \"xsmall\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.xs}\",\r\n \"fontWeight\": \"{typography.fontWeight.normal}\",\r\n \"lineHeight\": \"{typography.lineHeight.normal}\"\r\n }\r\n },\r\n \"label\": {\r\n \"large\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.md}\",\r\n \"fontWeight\": \"{typography.fontWeight.medium}\",\r\n \"lineHeight\": \"{typography.lineHeight.normal}\"\r\n },\r\n \"medium\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.base}\",\r\n \"fontWeight\": \"{typography.fontWeight.medium}\",\r\n \"lineHeight\": \"{typography.lineHeight.normal}\"\r\n },\r\n \"small\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.xs}\",\r\n \"fontWeight\": \"{typography.fontWeight.medium}\",\r\n \"lineHeight\": \"{typography.lineHeight.normal}\"\r\n }\r\n },\r\n \"icon\": {\r\n \"size\": {\r\n \"fontSize\": \"{typography.fontSize.2xl}\"\r\n }\r\n },\r\n \"radio\": {\r\n \"label\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontWeight\": \"{typography.fontWeight.semibold}\"\r\n }\r\n }\r\n }\r\n}\r\n","{\r\n \"field\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"otpWidth\": \"{semantic.size.md.otpWidth}\",\r\n \"borderRadius\": \"{semantic.size.md.radius}\",\r\n\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n\r\n \"color\": \"{color.text.primary}\",\r\n \"background\": \"{color.background.default}\",\r\n \"backgroundDisabled\": \"{color.background.disabled}\",\r\n\r\n \"border\": {\r\n \"default\": \"1px solid {color.border.default}\",\r\n \"focus\": \"2px solid {color.primary.default}\",\r\n \"error\": \"2px solid {color.error.default}\"\r\n },\r\n\r\n \"labelColor\": \"{color.text.primary}\",\r\n \"labelRequiredColor\": \"{color.error.default}\",\r\n\r\n \"helperColor\": \"{color.text.secondary}\",\r\n \"helperErrorColor\": \"{color.error.default}\",\r\n\r\n \"paddingY\": \"{semantic.size.md.paddingY}\",\r\n \"paddingX\": \"{semantic.size.md.paddingX}\"\r\n }\r\n}\r\n","{\r\n \"size\": {\r\n \"xs\": {\r\n \"mobile\": {\r\n \"height\": \"{size.28}\",\r\n \"width\": \"{size.28}\",\r\n \"paddingX\": \"{spacing.1}\",\r\n \"paddingY\": \"{spacing.1}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"radius\": \"{radius.sm}\"\r\n },\r\n \"tablet\": {\r\n \"height\": \"{size.28}\",\r\n \"width\": \"{size.28}\",\r\n \"paddingX\": \"{spacing.1}\",\r\n \"paddingY\": \"{spacing.1}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"radius\": \"{radius.sm}\"\r\n },\r\n \"desktop\": {\r\n \"height\": \"{size.28}\",\r\n \"width\": \"{size.28}\",\r\n \"paddingX\": \"{spacing.1}\",\r\n \"paddingY\": \"{spacing.1}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"radius\": \"{radius.sm}\"\r\n },\r\n \"wide\": {\r\n \"height\": \"{size.28}\",\r\n \"width\": \"{size.28}\",\r\n \"paddingX\": \"{spacing.1}\",\r\n \"paddingY\": \"{spacing.1}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"radius\": \"{radius.sm}\"\r\n }\r\n },\r\n\r\n \"sm\": {\r\n \"mobile\": {\r\n \"height\": \"{size.28}\",\r\n \"paddingX\": \"{spacing.2}\",\r\n \"paddingY\": \"{spacing.1}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"radius\": \"{radius.sm}\",\r\n \"otpWidth\": \"{size.32}\"\r\n },\r\n \"tablet\": {\r\n \"height\": \"{size.30}\",\r\n \"paddingX\": \"{spacing.2}\",\r\n \"paddingY\": \"{spacing.1}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"radius\": \"{radius.sm}\",\r\n \"otpWidth\": \"{size.32}\"\r\n },\r\n \"desktop\": {\r\n \"height\": \"{size.32}\",\r\n \"paddingX\": \"{spacing.2}\",\r\n \"paddingY\": \"{spacing.1}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"radius\": \"{radius.sm}\",\r\n \"otpWidth\": \"{size.32}\"\r\n },\r\n \"wide\": {\r\n \"height\": \"{size.32}\",\r\n \"paddingX\": \"{spacing.2}\",\r\n \"paddingY\": \"{spacing.1}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"radius\": \"{radius.sm}\",\r\n \"otpWidth\": \"{size.32}\"\r\n }\r\n },\r\n\r\n \"md\": {\r\n \"mobile\": {\r\n \"height\": \"{size.34}\",\r\n \"paddingX\": \"{spacing.3}\",\r\n \"paddingY\": \"{spacing.1}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"radius\": \"{radius.md}\",\r\n \"otpWidth\": \"{size.40}\"\r\n },\r\n \"tablet\": {\r\n \"height\": \"{size.36}\",\r\n \"paddingX\": \"{spacing.3}\",\r\n \"paddingY\": \"{spacing.1}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"radius\": \"{radius.md}\",\r\n \"otpWidth\": \"{size.40}\"\r\n },\r\n \"desktop\": {\r\n \"height\": \"{size.40}\",\r\n \"paddingX\": \"{spacing.4}\",\r\n \"paddingY\": \"{spacing.2}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"radius\": \"{radius.md}\",\r\n \"otpWidth\": \"{size.40}\"\r\n },\r\n \"wide\": {\r\n \"height\": \"{size.40}\",\r\n \"paddingX\": \"{spacing.4}\",\r\n \"paddingY\": \"{spacing.2}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"radius\": \"{radius.md}\",\r\n \"otpWidth\": \"{size.40}\"\r\n }\r\n },\r\n\r\n \"lg\": {\r\n \"mobile\": {\r\n \"height\": \"{spacing.8}\",\r\n \"paddingX\": \"{spacing.3}\",\r\n \"paddingY\": \"{spacing.2}\",\r\n \"fontSize\": \"{typography.body.large.fontSize}\",\r\n \"radius\": \"{radius.lg}\",\r\n \"otpWidth\": \"{spacing.9}\"\r\n },\r\n \"tablet\": {\r\n \"height\": \"{spacing.9}\",\r\n \"paddingX\": \"{spacing.4}\",\r\n \"paddingY\": \"{spacing.2}\",\r\n \"fontSize\": \"{typography.body.large.fontSize}\",\r\n \"radius\": \"{radius.lg}\",\r\n \"otpWidth\": \"{spacing.9}\"\r\n },\r\n \"desktop\": {\r\n \"height\": \"{spacing.9}\",\r\n \"paddingX\": \"{spacing.4}\",\r\n \"paddingY\": \"{spacing.2}\",\r\n \"fontSize\": \"{typography.body.large.fontSize}\",\r\n \"radius\": \"{radius.lg}\",\r\n \"otpWidth\": \"{spacing.9}\"\r\n },\r\n \"wide\": {\r\n \"height\": \"{spacing.9}\",\r\n \"paddingX\": \"{spacing.4}\",\r\n \"paddingY\": \"{spacing.3}\",\r\n \"fontSize\": \"{typography.body.large.fontSize}\",\r\n \"radius\": \"{radius.lg}\",\r\n \"otpWidth\": \"{spacing.9}\"\r\n }\r\n },\r\n\r\n \"control\": {\r\n \"radius\": \"{radius.control}\"\r\n },\r\n\r\n \"menu\": {\r\n \"mobile\": {\r\n \"minWidth\": \"{size.180}\",\r\n \"listMaxHeight\": \"{size.320}\"\r\n },\r\n \"tablet\": {\r\n \"minWidth\": \"{size.180}\",\r\n \"listMaxHeight\": \"{size.320}\"\r\n },\r\n \"desktop\": {\r\n \"minWidth\": \"{size.180}\",\r\n \"listMaxHeight\": \"{size.320}\"\r\n },\r\n \"wide\": {\r\n \"minWidth\": \"{size.180}\",\r\n \"listMaxHeight\": \"{size.320}\"\r\n }\r\n },\r\n\r\n \"radio\": {\r\n \"sm\": {\r\n \"mobile\": {\r\n \"radioSize\": \"{size.16}\",\r\n \"dotSize\": \"{size.8}\",\r\n \"labelFontSize\": \"{typography.body.small.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.small.fontSize}\"\r\n },\r\n \"tablet\": {\r\n \"radioSize\": \"{size.16}\",\r\n \"dotSize\": \"{size.8}\",\r\n \"labelFontSize\": \"{typography.body.small.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.small.fontSize}\"\r\n },\r\n \"desktop\": {\r\n \"radioSize\": \"{size.16}\",\r\n \"dotSize\": \"{size.8}\",\r\n \"labelFontSize\": \"{typography.body.small.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.small.fontSize}\"\r\n },\r\n \"wide\": {\r\n \"radioSize\": \"{size.16}\",\r\n \"dotSize\": \"{size.8}\",\r\n \"labelFontSize\": \"{typography.body.small.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.small.fontSize}\"\r\n }\r\n },\r\n \"md\": {\r\n \"mobile\": {\r\n \"radioSize\": \"{size.20}\",\r\n \"dotSize\": \"{size.8}\",\r\n \"labelFontSize\": \"{typography.body.medium.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.medium.fontSize}\"\r\n },\r\n \"tablet\": {\r\n \"radioSize\": \"{size.20}\",\r\n \"dotSize\": \"{size.8}\",\r\n \"labelFontSize\": \"{typography.body.medium.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.medium.fontSize}\"\r\n },\r\n \"desktop\": {\r\n \"radioSize\": \"{size.20}\",\r\n \"dotSize\": \"{size.8}\",\r\n \"labelFontSize\": \"{typography.body.medium.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.medium.fontSize}\"\r\n },\r\n \"wide\": {\r\n \"radioSize\": \"{size.20}\",\r\n \"dotSize\": \"{size.8}\",\r\n \"labelFontSize\": \"{typography.body.medium.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.medium.fontSize}\"\r\n }\r\n },\r\n \"lg\": {\r\n \"mobile\": {\r\n \"radioSize\": \"{size.24}\",\r\n \"dotSize\": \"{size.15}\",\r\n \"labelFontSize\": \"{typography.body.large.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.large.fontSize}\",\r\n \"descriptionFontSize\": \"{typography.body.sm.fontSize}\"\r\n },\r\n \"tablet\": {\r\n \"radioSize\": \"{size.24}\",\r\n \"dotSize\": \"{size.15}\",\r\n \"labelFontSize\": \"{typography.body.large.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.large.fontSize}\",\r\n \"descriptionFontSize\": \"{typography.body.sm.fontSize}\"\r\n },\r\n \"desktop\": {\r\n \"radioSize\": \"{size.24}\",\r\n \"dotSize\": \"{size.15}\",\r\n \"labelFontSize\": \"{typography.body.large.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.large.fontSize}\",\r\n \"descriptionFontSize\": \"{typography.body.medium.fontSize}\"\r\n },\r\n \"wide\": {\r\n \"radioSize\": \"{size.24}\",\r\n \"dotSize\": \"{size.15}\",\r\n \"labelFontSize\": \"{typography.body.large.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.large.fontSize}\",\r\n \"descriptionFontSize\": \"{typography.body.medium.fontSize}\"\r\n }\r\n }\r\n },\r\n\r\n \"closebutton\": {\r\n \"xs\": {\r\n \"mobile\": {\r\n \"size\": \"{size.20}\",\r\n \"padding\": \"{spacing.1}\",\r\n \"iconSize\": \"{typography.fontSize.xs}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"tablet\": {\r\n \"size\": \"{size.20}\",\r\n \"padding\": \"{spacing.1}\",\r\n \"iconSize\": \"{typography.fontSize.xs}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"desktop\": {\r\n \"size\": \"{size.20}\",\r\n \"padding\": \"{spacing.1}\",\r\n \"iconSize\": \"{typography.fontSize.xs}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"wide\": {\r\n \"size\": \"{size.20}\",\r\n \"padding\": \"{spacing.1}\",\r\n \"iconSize\": \"{typography.fontSize.xs}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n }\r\n },\r\n \"sm\": {\r\n \"mobile\": {\r\n \"size\": \"{size.24}\",\r\n \"padding\": \"{spacing.1_25}\",\r\n \"iconSize\": \"{typography.fontSize.sm}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"tablet\": {\r\n \"size\": \"{size.24}\",\r\n \"padding\": \"{spacing.1_25}\",\r\n \"iconSize\": \"{typography.fontSize.sm}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"desktop\": {\r\n \"size\": \"{size.24}\",\r\n \"padding\": \"{spacing.1_25}\",\r\n \"iconSize\": \"{typography.fontSize.sm}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"wide\": {\r\n \"size\": \"{size.24}\",\r\n \"padding\": \"{spacing.1_25}\",\r\n \"iconSize\": \"{typography.fontSize.sm}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n }\r\n },\r\n \"md\": {\r\n \"mobile\": {\r\n \"size\": \"{size.28}\",\r\n \"padding\": \"{spacing.1_5}\",\r\n \"iconSize\": \"{typography.fontSize.md}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"tablet\": {\r\n \"size\": \"{size.28}\",\r\n \"padding\": \"{spacing.1_5}\",\r\n \"iconSize\": \"{typography.fontSize.md}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"desktop\": {\r\n \"size\": \"{size.28}\",\r\n \"padding\": \"{spacing.1_5}\",\r\n \"iconSize\": \"{typography.fontSize.md}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"wide\": {\r\n \"size\": \"{size.28}\",\r\n \"padding\": \"{spacing.1_5}\",\r\n \"iconSize\": \"{typography.fontSize.md}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n }\r\n },\r\n \"lg\": {\r\n \"mobile\": {\r\n \"size\": \"{size.32}\",\r\n \"padding\": \"{spacing.1_75}\",\r\n \"iconSize\": \"{typography.fontSize.lg}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"tablet\": {\r\n \"size\": \"{size.32}\",\r\n \"padding\": \"{spacing.1_75}\",\r\n \"iconSize\": \"{typography.fontSize.lg}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"desktop\": {\r\n \"size\": \"{size.32}\",\r\n \"padding\": \"{spacing.1_75}\",\r\n \"iconSize\": \"{typography.fontSize.lg}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n },\r\n \"wide\": {\r\n \"size\": \"{size.32}\",\r\n \"padding\": \"{spacing.1_75}\",\r\n \"iconSize\": \"{typography.fontSize.lg}\",\r\n \"borderRadius\": \"{radius.full}\"\r\n }\r\n }\r\n },\r\n\r\n \"avatar\": {\r\n \"xs\": {\r\n \"mobile\": {\r\n \"size\": \"{size.20}\",\r\n \"fontSize\": \"{typography.body.xsmall.fontSize}\",\r\n \"iconSize\": \"{typography.body.xsmall.fontSize}\"\r\n },\r\n \"tablet\": {\r\n \"size\": \"{size.20}\",\r\n \"fontSize\": \"{typography.body.xsmall.fontSize}\",\r\n \"iconSize\": \"{typography.body.xsmall.fontSize}\"\r\n },\r\n \"desktop\": {\r\n \"size\": \"{size.20}\",\r\n \"fontSize\": \"{typography.body.xsmall.fontSize}\",\r\n \"iconSize\": \"{typography.body.xsmall.fontSize}\"\r\n },\r\n \"wide\": {\r\n \"size\": \"{size.20}\",\r\n \"fontSize\": \"{typography.body.xsmall.fontSize}\",\r\n \"iconSize\": \"{typography.body.xsmall.fontSize}\"\r\n }\r\n },\r\n \"sm\": {\r\n \"mobile\": {\r\n \"size\": \"{size.28}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"iconSize\": \"{typography.body.small.fontSize}\"\r\n },\r\n \"tablet\": {\r\n \"size\": \"{size.28}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"iconSize\": \"{typography.body.small.fontSize}\"\r\n },\r\n \"desktop\": {\r\n \"size\": \"{size.28}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"iconSize\": \"{typography.body.small.fontSize}\"\r\n },\r\n \"wide\": {\r\n \"size\": \"{size.28}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"iconSize\": \"{typography.body.small.fontSize}\"\r\n }\r\n },\r\n \"md\": {\r\n \"mobile\": {\r\n \"size\": \"{size.36}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"iconSize\": \"{typography.body.medium.fontSize}\"\r\n },\r\n \"tablet\": {\r\n \"size\": \"{size.36}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"iconSize\": \"{typography.body.medium.fontSize}\"\r\n },\r\n \"desktop\": {\r\n \"size\": \"{size.36}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"iconSize\": \"{typography.body.medium.fontSize}\"\r\n },\r\n \"wide\": {\r\n \"size\": \"{size.36}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"iconSize\": \"{typography.body.medium.fontSize}\"\r\n }\r\n },\r\n \"lg\": {\r\n \"mobile\": {\r\n \"size\": \"{size.44}\",\r\n \"fontSize\": \"{typography.body.large.fontSize}\",\r\n \"iconSize\": \"{typography.body.large.fontSize}\"\r\n },\r\n \"tablet\": {\r\n \"size\": \"{size.44}\",\r\n \"fontSize\": \"{typography.body.large.fontSize}\",\r\n \"iconSize\": \"{typography.body.large.fontSize}\"\r\n },\r\n \"desktop\": {\r\n \"size\": \"{size.44}\",\r\n \"fontSize\": \"{typography.body.large.fontSize}\",\r\n \"iconSize\": \"{typography.body.large.fontSize}\"\r\n },\r\n \"wide\": {\r\n \"size\": \"{size.44}\",\r\n \"fontSize\": \"{typography.body.large.fontSize}\",\r\n \"iconSize\": \"{typography.body.large.fontSize}\"\r\n }\r\n },\r\n \"xl\": {\r\n \"mobile\": {\r\n \"size\": \"{size.60}\",\r\n \"fontSize\": \"{typography.heading.h4.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h4.fontSize}\"\r\n },\r\n \"tablet\": {\r\n \"size\": \"{size.60}\",\r\n \"fontSize\": \"{typography.heading.h4.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h4.fontSize}\"\r\n },\r\n \"desktop\": {\r\n \"size\": \"{size.60}\",\r\n \"fontSize\": \"{typography.heading.h4.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h4.fontSize}\"\r\n },\r\n \"wide\": {\r\n \"size\": \"{size.60}\",\r\n \"fontSize\": \"{typography.heading.h4.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h4.fontSize}\"\r\n }\r\n },\r\n \"xxl\": {\r\n \"mobile\": {\r\n \"size\": \"{size.76}\",\r\n \"fontSize\": \"{typography.heading.h3.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h3.fontSize}\"\r\n },\r\n \"tablet\": {\r\n \"size\": \"{size.76}\",\r\n \"fontSize\": \"{typography.heading.h3.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h3.fontSize}\"\r\n },\r\n \"desktop\": {\r\n \"size\": \"{size.76}\",\r\n \"fontSize\": \"{typography.heading.h3.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h3.fontSize}\"\r\n },\r\n \"wide\": {\r\n \"size\": \"{size.76}\",\r\n \"fontSize\": \"{typography.heading.h3.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h3.fontSize}\"\r\n }\r\n },\r\n \"xxxl\": {\r\n \"mobile\": {\r\n \"size\": \"{size.116}\",\r\n \"fontSize\": \"{typography.heading.h2.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h2.fontSize}\"\r\n },\r\n \"tablet\": {\r\n \"size\": \"{size.116}\",\r\n \"fontSize\": \"{typography.heading.h2.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h2.fontSize}\"\r\n },\r\n \"desktop\": {\r\n \"size\": \"{size.116}\",\r\n \"fontSize\": \"{typography.heading.h2.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h2.fontSize}\"\r\n },\r\n \"wide\": {\r\n \"size\": \"{size.116}\",\r\n \"fontSize\": \"{typography.heading.h2.fontSize}\",\r\n \"iconSize\": \"{typography.heading.h2.fontSize}\"\r\n }\r\n }\r\n },\r\n\r\n \"toggleButton\": {\r\n \"mobile\": {\r\n \"height\": \"{size.32}\",\r\n \"paddingX\": \"{spacing.2}\",\r\n \"paddingY\": \"{spacing.2}\",\r\n \"radius\": \"{radius.lg}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"tablet\": {\r\n \"height\": \"{size.32}\",\r\n \"paddingX\": \"{spacing.2}\",\r\n \"paddingY\": \"{spacing.2}\",\r\n \"radius\": \"{radius.lg}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"desktop\": {\r\n \"height\": \"{size.32}\",\r\n \"paddingX\": \"{spacing.2}\",\r\n \"paddingY\": \"{spacing.2}\",\r\n \"radius\": \"{radius.lg}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"wide\": {\r\n \"height\": \"{size.32}\",\r\n \"paddingX\": \"{spacing.2}\",\r\n \"paddingY\": \"{spacing.2}\",\r\n \"radius\": \"{radius.lg}\",\r\n \"borderWidth\": \"{size.1}\"\r\n }\r\n },\r\n\r\n \"switch\": {\r\n \"sm\": {\r\n \"mobile\": {\r\n \"width\": \"{size.44}\",\r\n \"height\": \"{size.28}\",\r\n \"thumbSize\": \"{size.24}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"tablet\": {\r\n \"width\": \"{size.44}\",\r\n \"height\": \"{size.28}\",\r\n \"thumbSize\": \"{size.24}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"desktop\": {\r\n \"width\": \"{size.44}\",\r\n \"height\": \"{size.28}\",\r\n \"thumbSize\": \"{size.24}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"wide\": {\r\n \"width\": \"{size.44}\",\r\n \"height\": \"{size.28}\",\r\n \"thumbSize\": \"{size.24}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n }\r\n },\r\n \"md\": {\r\n \"mobile\": {\r\n \"width\": \"{size.52}\",\r\n \"height\": \"{size.32}\",\r\n \"thumbSize\": \"{size.28}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"tablet\": {\r\n \"width\": \"{size.52}\",\r\n \"height\": \"{size.32}\",\r\n \"thumbSize\": \"{size.28}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"desktop\": {\r\n \"width\": \"{size.52}\",\r\n \"height\": \"{size.32}\",\r\n \"thumbSize\": \"{size.28}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"wide\": {\r\n \"width\": \"{size.52}\",\r\n \"height\": \"{size.32}\",\r\n \"thumbSize\": \"{size.28}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n }\r\n },\r\n \"lg\": {\r\n \"mobile\": {\r\n \"width\": \"{size.52}\",\r\n \"height\": \"{size.32}\",\r\n \"thumbSize\": \"{size.28}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"tablet\": {\r\n \"width\": \"{size.52}\",\r\n \"height\": \"{size.32}\",\r\n \"thumbSize\": \"{size.28}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"desktop\": {\r\n \"width\": \"{size.52}\",\r\n \"height\": \"{size.32}\",\r\n \"thumbSize\": \"{size.28}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n },\r\n \"wide\": {\r\n \"width\": \"{size.52}\",\r\n \"height\": \"{size.32}\",\r\n \"thumbSize\": \"{size.28}\",\r\n \"trackPadding\": \"{spacing.xxs}\",\r\n \"radius\": \"{radius.full}\",\r\n \"borderWidth\": \"{size.1}\"\r\n }\r\n }\r\n },\r\n\r\n \"tabs\": {\r\n \"sm\": {\r\n \"height\": \"{size.28}\",\r\n \"padding\": \"{spacing.2} {spacing.1}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"radius\": \"{radius.sm}\"\r\n },\r\n \"md\": {\r\n \"height\": \"{size.36}\",\r\n \"padding\": \"{spacing.3} {spacing.1}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"radius\": \"{radius.md}\"\r\n },\r\n \"lg\": {\r\n \"height\": \"{size.44}\",\r\n \"padding\": \"{spacing.3} {spacing.6}\",\r\n \"fontSize\": \"{typography.body.large.fontSize}\",\r\n \"radius\": \"{radius.lg}\"\r\n }\r\n },\r\n\r\n \"filterpopover\": {\r\n \"mobile\": {\r\n \"minWidth\": \"{size.320}\",\r\n \"minHeight\": \"{size.1}\",\r\n \"maxHeight\": \"{size.60vh}\",\r\n \"padding\": \"{spacing.3}\",\r\n \"borderRadius\": \"{radius.xl}\",\r\n \"innerBorderRadius\": \"{radius.xl} {radius.xl} {radius.none} {radius.none}\"\r\n },\r\n \"tablet\": {\r\n \"minWidth\": \"{size.380}\",\r\n \"minHeight\": \"{size.1}\",\r\n \"maxHeight\": \"{size.60vh}\",\r\n \"padding\": \"{spacing.4}\",\r\n \"borderRadius\": \"{radius.2xl}\",\r\n \"innerBorderRadius\": \"{radius.2xl} {radius.2xl} {radius.none} {radius.none}\"\r\n },\r\n \"desktop\": {\r\n \"minWidth\": \"{size.380}\",\r\n \"minHeight\": \"{size.1}\",\r\n \"maxHeight\": \"{size.60vh}\",\r\n \"padding\": \"{spacing.4}\",\r\n \"borderRadius\": \"{radius.2xl}\",\r\n \"innerBorderRadius\": \"{radius.2xl} {radius.2xl} {radius.none} {radius.none}\"\r\n },\r\n \"wide\": {\r\n \"minWidth\": \"{size.380}\",\r\n \"minHeight\": \"{size.1}\",\r\n \"maxHeight\": \"{size.60vh}\",\r\n \"padding\": \"{spacing.4}\",\r\n \"borderRadius\": \"{radius.2xl}\",\r\n \"innerBorderRadius\": \"{radius.2xl} {radius.2xl} {radius.none} {radius.none}\"\r\n }\r\n },\r\n\r\n \"modal\": {\r\n \"sm\": {\r\n \"mobile\": { \"width\": \"100%\" },\r\n \"tablet\": { \"width\": \"100%\" },\r\n \"desktop\": { \"width\": \"{size.550}\" },\r\n \"wide\": { \"width\": \"{size.550}\" }\r\n },\r\n \"lg\": {\r\n \"mobile\": { \"width\": \"100%\" },\r\n \"tablet\": { \"width\": \"100%\" },\r\n \"desktop\": { \"width\": \"{size.1200}\" },\r\n \"wide\": { \"width\": \"{size.1200}\" }\r\n }\r\n }\r\n }\r\n}\r\n","{\r\n \"opacity\": {\r\n \"disabled\": \"{opacity.50}\"\r\n }\r\n}\r\n","{\r\n \"button\": {\r\n \"variant\": {\r\n \"blue\": {\r\n \"background\": \"{color.primary.default}\",\r\n \"color\": \"{color.text.inverse}\",\r\n \"hover\": {\r\n \"background\": \"{color.primary.hover}\",\r\n \"color\": \"{color.text.inverse}\"\r\n },\r\n \"border\": \"none\"\r\n },\r\n \"red\": {\r\n \"background\": \"#c82f2f\",\r\n \"color\": \"{color.text.inverse}\",\r\n \"hover\": {\r\n \"background\": \"{color.destructive.active}\",\r\n \"color\": \"{color.text.inverse}\"\r\n },\r\n \"border\": \"none\"\r\n },\r\n \"grey\": {\r\n \"background\": \"{color.neutral.default}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"hover\": {\r\n \"background\": \"{color.neutral.hover}\",\r\n \"color\": \"{color.text.primary}\"\r\n },\r\n \"border\": \"none\"\r\n }\r\n },\r\n \"size\": {\r\n \"sm\": {\r\n \"height\": \"{semantic.size.sm.height}\",\r\n \"padding\": \"{semantic.size.sm.paddingY} {semantic.size.sm.paddingX}\",\r\n \"fontSize\": \"{semantic.size.sm.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\",\r\n \"contentGap\": \"{spacing.1_25}\"\r\n },\r\n \"md\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"padding\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\",\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\",\r\n \"contentGap\": \"{spacing.2}\"\r\n },\r\n \"lg\": {\r\n \"height\": \"{semantic.size.lg.height}\",\r\n \"padding\": \"{semantic.size.lg.paddingY} {semantic.size.lg.paddingX}\",\r\n \"fontSize\": \"{semantic.size.lg.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\",\r\n \"contentGap\": \"{spacing.3}\"\r\n }\r\n },\r\n \"shape\": {\r\n \"rounded\": \"{radius.xl}\",\r\n \"square\": \"{radius.sm}\",\r\n \"pill\": \"{radius.pill}\"\r\n },\r\n \"fontFamily\": \"{typography.body.medium.fontFamily}\",\r\n \"fontWeight\": \"{typography.label.medium.fontWeight}\",\r\n \"lineHeight\": \"{typography.body.medium.lineHeight}\",\r\n \"disabled\": {\r\n \"opacity\": \"0.3\"\r\n }\r\n }\r\n}\r\n","{\r\n \"input\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"borderRadius\": \"{semantic.size.md.radius}\",\r\n \"fontFamily\": \"{typography.body.medium.fontFamily}\",\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n \"label\": {\r\n \"fontSize\": \"{typography.label.medium.fontSize}\",\r\n \"activeFontSize\": \"{typography.label.medium.fontSize}\",\r\n \"color\": \"{color.text.tertiary}\",\r\n \"activeColor\": \"{color.primary.default}\"\r\n },\r\n \"helper\": {\r\n \"fontSize\": \"{typography.body.small.fontSize}\"\r\n },\r\n \"textColor\": \"{color.text.primary}\",\r\n \"outline\": {\r\n \"default\": \"{color.border.default}\",\r\n \"active\": \"{color.border.active}\",\r\n \"error\": \"{color.error.default}\"\r\n },\r\n \"error\": {\r\n \"color\": \"{color.error.default}\"\r\n },\r\n \"background\": \"{color.background.default}\",\r\n \"padding\": {\r\n \"sm\": \"{semantic.size.sm.paddingY} {semantic.size.sm.paddingX}\",\r\n \"md\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"textfield\": {\r\n \"size\": {\r\n \"sm\": {\r\n \"height\": \"{semantic.size.sm.height}\",\r\n \"padding\": \"{semantic.size.sm.paddingY} {semantic.size.sm.paddingX}\",\r\n \"fontSize\": \"{semantic.size.sm.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"md\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"padding\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\",\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"lg\": {\r\n \"height\": \"{semantic.size.lg.height}\",\r\n \"padding\": \"{semantic.size.lg.paddingY} {semantic.size.lg.paddingX}\",\r\n \"fontSize\": \"{semantic.size.lg.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n }\r\n },\r\n \"fontFamily\": \"{typography.body.medium.fontFamily}\",\r\n \"label\": {\r\n \"fontSize\": \"{typography.label.medium.fontSize}\",\r\n \"activeFontSize\": \"{typography.label.medium.fontSize}\",\r\n \"fontWeight\": \"{typography.label.medium.fontWeight}\",\r\n \"marginBottom\": \"{spacing.2}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"activeColor\": \"{color.primary.default}\"\r\n },\r\n \"helper\": {\r\n \"fontSize\": \"{typography.body.small.fontSize}\"\r\n },\r\n \"textColor\": \"{color.text.primary}\",\r\n \"placeholderColor\": \"{color.text.placeholder}\",\r\n \"outline\": {\r\n \"default\": \"{color.border.input}\",\r\n \"active\": \"{color.border.active}\",\r\n \"error\": \"{color.error.default}\"\r\n },\r\n \"error\": {\r\n \"color\": \"{color.error.default}\"\r\n },\r\n \"caption\": {\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"textColor\": \"{color.icon.secondary}\",\r\n \"labelCaptionColor\": \"{color.icon.caption}\"\r\n },\r\n \"background\": \"{color.background.default}\",\r\n \"backgroundWhite\": \"{color.background.selectBox}\",\r\n \"disabledOpacity\": \"{semantic.opacity.disabled}\",\r\n \"iconPaddingLeft\": \"{spacing.9}\",\r\n \"icon\": {\r\n \"startLeft\": \"{spacing.4}\",\r\n \"endRight\": \"{spacing.2}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"card\": {\r\n \"background\": \"{color.background.default}\",\r\n \"border\": \"1px solid {color.border.default}\",\r\n \"borderRadius\": \"{semantic.size.md.radius}\",\r\n \"padding\": {\r\n \"sm\": \"{semantic.size.sm.paddingY} {semantic.size.sm.paddingX}\",\r\n \"md\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\",\r\n \"lg\": \"{semantic.size.lg.paddingY} {semantic.size.lg.paddingX}\"\r\n },\r\n \"shadow\": {\r\n \"sm\": \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\r\n \"md\": \"0 4px 6px -1px rgba(0, 0, 0, 0.1)\",\r\n \"lg\": \"0 10px 15px -3px rgba(0, 0, 0, 0.1)\"\r\n }\r\n },\r\n \"statCard\": {\r\n \"surfaceBackground\": \"{color.background.badge}\",\r\n \"border\": \"1px solid {color.border.default}\",\r\n \"borderRadius\": \"{radius.xl}\",\r\n \"padding\": \"{spacing.3} {spacing.4}\",\r\n \"gap\": \"{spacing.3}\",\r\n \"iconWell\": {\r\n \"size\": \"{size.34}\",\r\n \"borderRadius\": \"{radius.md}\",\r\n \"accentMixPercent\": \"14\"\r\n },\r\n \"label\": {\r\n \"fontSize\": \"{typography.fontSize.sm}\",\r\n \"fontWeight\": \"{typography.fontWeight.semibold}\",\r\n \"color\": \"{color.text.primary}\"\r\n },\r\n \"value\": {\r\n \"fontSize\": \"{typography.fontSize.lg}\",\r\n \"fontWeight\": \"{typography.fontWeight.bold}\",\r\n \"color\": \"{color.text.description}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"checkbox\": {\r\n \"heading\": {\r\n \"fontSize\": \"{typography.label.medium.fontSize}\",\r\n \"fontWeight\": \"{typography.label.medium.fontWeight}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"marginBottom\": \"{spacing.2}\"\r\n },\r\n \"label\": {\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"fontWeight\": \"{typography.body.medium.fontWeight}\",\r\n \"color\": {\r\n \"active\": \"{color.text.primary}\",\r\n \"inactive\": \"{color.text.secondary}\"\r\n },\r\n \"marginLeft\": \"{spacing.2}\"\r\n },\r\n \"group\": {\r\n \"gapHorizontal\": \"{spacing.4}\",\r\n \"gapVertical\": \"{spacing.3}\"\r\n },\r\n \"checkbox\": {\r\n \"size\": \"18px\",\r\n \"borderRadius\": \"{radius.sm}\",\r\n \"color\": {\r\n \"active\": \"{color.checkbox.color.active}\",\r\n \"inactive\": \"{colors.gray.650}\"\r\n },\r\n \"background\": {\r\n \"inactive\": \"{color.background.default}\"\r\n },\r\n \"border\": {\r\n \"checked\": \"{colors.blue.600}\"\r\n }\r\n },\r\n \"size\": {\r\n \"sm\": {\r\n \"checkboxSize\": \"{size.16}\",\r\n \"borderRadius\": \"{radius.sm}\",\r\n \"labelFontSize\": \"{typography.body.small.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.medium.fontSize}\"\r\n },\r\n \"md\": {\r\n \"checkboxSize\": \"18px\",\r\n \"borderRadius\": \"{radius.sm}\",\r\n \"labelFontSize\": \"{typography.body.medium.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.medium.fontSize}\"\r\n },\r\n \"lg\": {\r\n \"checkboxSize\": \"{size.20}\",\r\n \"borderRadius\": \"{radius.sm}\",\r\n \"labelFontSize\": \"{typography.body.large.fontSize}\",\r\n \"headingFontSize\": \"{typography.label.medium.fontSize}\"\r\n }\r\n },\r\n \"helper\": {\r\n \"textFontSizes\": \"{typography.body.medium.fontSize}\",\r\n \"textFontWeight\": \"{typography.body.small.fontWeight}\",\r\n \"textColor\": \"{color.icon.caption}\",\r\n \"errorColor\": \"{color.error.default}\",\r\n \"marginTop\": \"{spacing.1}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"selectscroll\": {\r\n \"input\": {\r\n \"size\": {\r\n \"sm\": {\r\n \"height\": \"{semantic.size.sm.height}\",\r\n \"padding\": \"{semantic.size.sm.paddingY} {semantic.size.sm.paddingX}\",\r\n \"fontSize\": \"{semantic.size.sm.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"md\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"padding\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\",\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"lg\": {\r\n \"height\": \"{semantic.size.lg.height}\",\r\n \"padding\": \"{semantic.size.lg.paddingY} {semantic.size.lg.paddingX}\",\r\n \"fontSize\": \"{semantic.size.lg.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n }\r\n },\r\n \"border\": {\r\n \"default\": \"2px solid {color.border.transparent}\",\r\n \"active\": \"2px solid {color.border.active}\",\r\n \"error\": \"2px solid {color.error.default}\"\r\n },\r\n \"color\": \"{color.text.primary}\",\r\n \"background\": \"{color.background.default}\",\r\n \"backgroundWhite\": \"{colors.white}\",\r\n \"backgroundDisabled\": \"{color.background.disabled}\",\r\n \"disabledOpacity\": \"{semantic.opacity.disabled}\"\r\n },\r\n \"listbox\": {\r\n \"background\": \"{color.background.default}\",\r\n \"border\": \"1px solid {color.border.default}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"option\": {\r\n \"padding\": \"{spacing.component.md} {spacing.component.lg}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"hoverBackground\": \"{color.background.tertiary}\"\r\n },\r\n \"label\": {\r\n \"fontSize\": \"{typography.label.medium.fontSize}\",\r\n \"fontWeight\": \"{typography.label.medium.fontWeight}\",\r\n \"marginBottom\": \"{spacing.2}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"requiredColor\": \"{color.error.default}\"\r\n },\r\n \"helper\": {\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"color\": \"{color.text.secondary}\",\r\n \"errorColor\": \"{color.error.default}\"\r\n },\r\n \"placeholderColor\": \"{color.text.tertiary}\",\r\n \"button\": {\r\n \"hoverBackground\": \"{color.background.tertiary}\",\r\n \"hoverColor\": \"{color.text.secondary}\",\r\n \"color\": \"{color.text.primary}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"selector\": {\r\n \"input\": {\r\n \"size\": {\r\n \"xs\": {\r\n \"height\": \"{semantic.size.xs.height}\",\r\n \"padding\": \"{semantic.size.xs.paddingY} {semantic.size.xs.paddingX}\",\r\n \"fontSize\": \"{semantic.size.xs.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"sm\": {\r\n \"height\": \"{semantic.size.sm.height}\",\r\n \"padding\": \"{semantic.size.sm.paddingY} {semantic.size.sm.paddingX}\",\r\n \"fontSize\": \"{semantic.size.sm.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"md\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"padding\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\",\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"lg\": {\r\n \"height\": \"{semantic.size.lg.height}\",\r\n \"padding\": \"{semantic.size.lg.paddingY} {semantic.size.lg.paddingX}\",\r\n \"fontSize\": \"{semantic.size.lg.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n }\r\n },\r\n \"border\": {\r\n \"default\": \"2px solid {color.border.transparent}\",\r\n \"active\": \"2px solid {color.border.active}\",\r\n \"error\": \"2px solid {color.error.default}\"\r\n },\r\n \"color\": \"{color.text.primary}\",\r\n \"background\": \"{color.background.default}\",\r\n \"backgroundWhite\": \"{color.white}\",\r\n \"backgroundDisabled\": \"{colors.white}\",\r\n \"disabledOpacity\": \"{semantic.opacity.disabled}\"\r\n },\r\n \"listbox\": {\r\n \"background\": \"{color.background.dropdown}\",\r\n \"groupHeadingBackground\": \"{color.background.groupHeading}\",\r\n \"groupHeadingBorder\": \"1px solid {color.border.default}\",\r\n \"border\": \"1px solid {color.border.default}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"option\": {\r\n \"padding\": \"{spacing.component.md} {spacing.component.lg}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"hoverBackground\": \"{color.background.tertiary}\"\r\n },\r\n \"wrapper\": {\r\n \"background\": \"{color.background.default}\",\r\n \"backgroundWhite\": \"{colors.white}\",\r\n \"backgroundDisabled\": \"{colors.white}\",\r\n \"borderRadius\": \"{radius.xl}\"\r\n },\r\n \"chip\": {\r\n \"background\": \"{color.background.chip}\",\r\n \"color\": \"{color.text.badge}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"borderRadius\": \"{radius.xl}\"\r\n },\r\n \"checkbox\": {\r\n \"accentColor\": \"{color.primary.default}\"\r\n },\r\n \"label\": {\r\n \"fontSize\": \"{typography.label.medium.fontSize}\",\r\n \"fontWeight\": \"{typography.label.medium.fontWeight}\",\r\n \"marginBottom\": \"{spacing.2}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"requiredColor\": \"{color.error.default}\"\r\n },\r\n \"helper\": {\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"color\": \"{color.text.secondary}\",\r\n \"errorColor\": \"{color.error.default}\"\r\n },\r\n \"button\": {\r\n \"hoverBackground\": \"{color.background.tertiary}\",\r\n \"hoverColor\": \"{color.text.secondary}\",\r\n \"color\": \"{color.text.primary}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"datepicker\": {\r\n \"wrapper\": {\r\n \"padding\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\",\r\n \"paddingRightIcon\": \"56px\",\r\n \"border\": {\r\n \"default\": \"1px solid {color.border.default}\",\r\n \"active\": \"2px solid {color.border.active}\",\r\n \"error\": \"2px solid {color.error.default}\"\r\n },\r\n \"borderRadius\": \"{semantic.size.md.radius}\",\r\n \"background\": \"{color.background.default}\",\r\n \"backgroundDisabled\": \"{color.background.disabled}\"\r\n },\r\n \"input\": {\r\n \"fontSize\": \"{semantic.typography.size.md.fontSize}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"fontFamily\": \"{typography.body.medium.fontFamily}\"\r\n },\r\n \"header\": {\r\n \"padding\": \"{spacing.component.xs} {spacing.component.sm}\",\r\n \"borderBottom\": \"1px solid {color.border.default}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\"\r\n },\r\n \"headerButton\": {\r\n \"padding\": \"2px\",\r\n \"fontSize\": \"{typography.body.large.fontSize}\"\r\n },\r\n \"headerSelect\": {\r\n \"padding\": \"2px 6px\",\r\n \"borderRadius\": \"{radius.md}\",\r\n \"border\": \"1px solid {color.border.default}\",\r\n \"background\": \"{color.background.default}\",\r\n \"fontSize\": \"{typography.body.small.fontSize}\"\r\n },\r\n \"label\": {\r\n \"fontSize\": \"{typography.label.medium.fontSize}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"requiredColor\": \"{color.error.default}\"\r\n },\r\n \"helper\": {\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"bgColor\": \"{color.text.secondary}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"errorColor\": \"{color.error.default}\"\r\n },\r\n \"placeholderColor\": \"{color.text.tertiary}\",\r\n \"calendar\": {\r\n \"border\": \"1px solid {color.border.default}\",\r\n \"borderRadius\": \"{radius.xl}\",\r\n \"headerBackground\": \"{color.background.default}\",\r\n \"selectedBackground\": \"{color.primary.default}\",\r\n \"selectedColor\": \"{color.text.inverse}\",\r\n \"hoverBackground\": \"{color.background.tertiary}\",\r\n \"disabledColor\": \"{color.border.default}\"\r\n },\r\n \"size\": {\r\n \"sm\": {\r\n \"inputFontSize\": \"{semantic.typography.size.sm.fontSize}\",\r\n \"wrapperBorderRadius\": \"{semantic.size.sm.radius}\",\r\n \"wrapperPadding\": \"{semantic.size.sm.paddingY} {semantic.size.sm.paddingX}\",\r\n \"labelFontSize\": \"{typography.label.small.fontSize}\",\r\n \"wrapperBorder\": {\r\n \"default\": \"1px solid {color.border.default}\",\r\n \"active\": \"2px solid {color.border.active}\",\r\n \"error\": \"2px solid {color.error.default}\"\r\n },\r\n \"wrapperBackground\": \"{color.background.default}\",\r\n \"wrapperBackgroundDisabled\": \"{color.background.disabled}\"\r\n },\r\n \"md\": {\r\n \"inputFontSize\": \"{semantic.typography.size.md.fontSize}\",\r\n \"wrapperBorderRadius\": \"{semantic.size.md.radius}\",\r\n \"wrapperPadding\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\",\r\n \"labelFontSize\": \"{typography.label.medium.fontSize}\",\r\n \"wrapperBorder\": {\r\n \"default\": \"1px solid {color.border.default}\",\r\n \"active\": \"2px solid {color.border.active}\",\r\n \"error\": \"2px solid {color.error.default}\"\r\n },\r\n \"wrapperBackground\": \"{color.background.default}\",\r\n \"wrapperBackgroundDisabled\": \"{color.background.disabled}\"\r\n },\r\n \"lg\": {\r\n \"inputFontSize\": \"{semantic.typography.size.lg.fontSize}\",\r\n \"wrapperBorderRadius\": \"{semantic.size.lg.radius}\",\r\n \"wrapperPadding\": \"{semantic.size.lg.paddingY} {semantic.size.lg.paddingX}\",\r\n \"labelFontSize\": \"{typography.label.large.fontSize}\",\r\n \"wrapperBorder\": {\r\n \"default\": \"1px solid {color.border.default}\",\r\n \"active\": \"2px solid {color.border.active}\",\r\n \"error\": \"2px solid {color.error.default}\"\r\n },\r\n \"wrapperBackground\": \"{color.background.default}\",\r\n \"wrapperBackgroundDisabled\": \"{color.background.disabled}\"\r\n }\r\n }\r\n }\r\n}\r\n","{\r\n \"field\": {\r\n \"input\": {\r\n \"height\": \"{semantic.field.height}\",\r\n \"padding\": \"{semantic.field.paddingY} {semantic.field.paddingX}\",\r\n \"borderRadius\": \"{semantic.field.borderRadius}\",\r\n \"fontSize\": \"{semantic.field.fontSize}\",\r\n \"color\": \"{semantic.field.color}\",\r\n \"background\": \"{semantic.field.background}\",\r\n \"backgroundDisabled\": \"{semantic.field.backgroundDisabled}\",\r\n\r\n \"border\": {\r\n \"default\": \"{semantic.field.border.default}\",\r\n \"focus\": \"{semantic.field.border.focus}\",\r\n \"error\": \"{semantic.field.border.error}\"\r\n }\r\n },\r\n\r\n \"label\": {\r\n \"color\": \"{semantic.field.labelColor}\",\r\n \"requiredColor\": \"{semantic.field.labelRequiredColor}\"\r\n },\r\n\r\n \"helper\": {\r\n \"color\": \"{semantic.field.helperColor}\",\r\n \"errorColor\": \"{semantic.field.helperErrorColor}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"radio\": {\r\n \"heading\": {\r\n \"fontSize\": \"{typography.label.medium.fontSize}\",\r\n \"fontWeight\": \"{typography.label.medium.fontWeight}\",\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"marginBottom\": \"{spacing.2}\"\r\n },\r\n \"label\": {\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"fontWeight\": \"{typography.radio.label.fontWeight}\",\r\n \"fontFamily\": \"{typography.radio.label.fontFamily}\",\r\n \"color\": {\r\n \"active\": \"{color.radio.label.color.active}\",\r\n \"inactive\": \"{color.radio.label.color.inactive}\"\r\n },\r\n \"marginBottom\": \"{spacing.0}\",\r\n \"marginLeft\": \"{spacing.4}\"\r\n },\r\n \"description\": {\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"fontWeight\": \"{typography.body.small.fontWeight}\",\r\n \"fontFamily\": \"{typography.body.small.fontFamily}\",\r\n \"color\": \"{color.text.description}\"\r\n },\r\n \"radio\": {\r\n \"size\": \"{typography.icon.size.fontSize}\",\r\n \"borderRadius\": \"{radius.xs}\",\r\n \"strokeWidth\": \"1px\",\r\n \"color\": {\r\n \"active\": \"{color.radio.color.active}\",\r\n \"inactive\": \"{color.radio.color.inactive}\",\r\n \"dot\": \"{color.radio.color.dot}\"\r\n },\r\n \"background\": \"{color.radio.background}\",\r\n \"focusRing\": \"0 0 0 1px {color.border.radioActive}\"\r\n },\r\n \"option\": {\r\n \"border\": {\r\n \"active\": \"{color.radio.option.border.active}\",\r\n \"inactive\": \"{color.radio.option.border.inactive}\"\r\n },\r\n \"background\": {\r\n \"active\": \"{color.radio.option.background.active}\",\r\n \"inactive\": \"{color.radio.option.background.inactive}\"\r\n },\r\n \"text\": {\r\n \"active\": \"{color.radio.option.text.active}\",\r\n \"inactive\": \"{color.radio.option.text.inactive}\"\r\n }\r\n },\r\n \"size\": {\r\n \"sm\": {\r\n \"radioSize\": \"{size.radio.sm.radioSize}\",\r\n \"labelFontSize\": \"{size.radio.sm.labelFontSize}\",\r\n \"headingFontSize\": \"{size.radio.sm.headingFontSize}\",\r\n \"descriptionFontSize\": \"{size.radio.sm.descriptionFontSize}\",\r\n \"dotSize\": \"{size.radio.sm.dotSize}\"\r\n },\r\n \"md\": {\r\n \"radioSize\": \"{size.radio.md.radioSize}\",\r\n \"labelFontSize\": \"{size.radio.md.labelFontSize}\",\r\n \"headingFontSize\": \"{size.radio.md.headingFontSize}\",\r\n \"descriptionFontSize\": \"{size.radio.md.descriptionFontSize}\",\r\n \"dotSize\": \"{size.radio.md.dotSize}\"\r\n },\r\n \"lg\": {\r\n \"radioSize\": \"{size.radio.lg.radioSize}\",\r\n \"labelFontSize\": \"{size.radio.lg.labelFontSize}\",\r\n \"headingFontSize\": \"{size.radio.lg.headingFontSize}\",\r\n \"descriptionFontSize\": \"{size.radio.lg.descriptionFontSize}\",\r\n \"dotSize\": \"{size.radio.lg.dotSize}\"\r\n }\r\n },\r\n \"group\": {\r\n \"gapHorizontal\": \"{spacing.6}\",\r\n \"gapVertical\": \"{spacing.3}\"\r\n },\r\n \"helper\": {\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"color\": \"{color.text.secondary}\",\r\n \"errorColor\": \"{color.error.default}\",\r\n \"marginTop\": \"{spacing.1}\"\r\n }\r\n }\r\n}","{\r\n \"pagination\": {\r\n \"size\": {\r\n \"xs\": {\r\n \"height\": \"{semantic.size.xs.height}\",\r\n \"minWidth\": \"{semantic.size.xs.width}\",\r\n \"padding\": \"{semantic.size.xs.paddingY} {semantic.size.xs.paddingX}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"borderRadius\": \"{semantic.size.lg.radius}\"\r\n },\r\n \"sm\": {\r\n \"height\": \"{semantic.size.sm.height}\",\r\n \"minWidth\": \"{semantic.size.sm.height}\",\r\n \"padding\": \"{semantic.size.sm.paddingY} {semantic.size.sm.paddingX}\",\r\n \"fontSize\": \"{semantic.size.sm.fontSize}\",\r\n \"borderRadius\": \"{semantic.size.lg.radius}\"\r\n },\r\n \"md\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"minWidth\": \"{semantic.size.md.height}\",\r\n \"padding\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\",\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n \"borderRadius\": \"{semantic.size.lg.radius}\"\r\n },\r\n \"lg\": {\r\n \"height\": \"{semantic.size.lg.height}\",\r\n \"minWidth\": \"{semantic.size.lg.height}\",\r\n \"padding\": \"{semantic.size.lg.paddingY} {semantic.size.lg.paddingX}\",\r\n \"fontSize\": \"{semantic.size.lg.fontSize}\",\r\n \"borderRadius\": \"{semantic.size.lg.radius}\"\r\n }\r\n },\r\n \"item\": {\r\n \"activeBackground\": \"{color.primary.default}\",\r\n \"activeColor\": \"{color.text.inverse}\",\r\n \"inactiveColor\": \"{color.text.primary}\",\r\n \"iconColor\": \"{color.text.primary}\",\r\n \"hoverBackground\": \"{color.background.tertiary}\",\r\n \"disabledOpacity\": \"{semantic.opacity.disabled}\"\r\n },\r\n \"gap\": \"{spacing.2}\",\r\n \"fontFamily\": \"{typography.body.medium.fontFamily}\",\r\n \"fontWeight\": \"{typography.label.medium.fontWeight}\"\r\n }\r\n}\r\n","{\r\n \"closebutton\": {\r\n \"variant\": {\r\n \"filled\": {\r\n \"background\": \"{color.background.closeButton}\",\r\n \"backgroundWhite\": \"{colors.white}\",\r\n \"color\": \"{color.icon.default}\",\r\n \"hover\": {\r\n \"background\": \"{color.background.tertiary}\",\r\n \"backgroundWhite\": \"{colors.white}\",\r\n \"color\": \"{color.icon.default}\"\r\n },\r\n \"border\": \"none\"\r\n },\r\n \"outline\": {\r\n \"background\": \"transparent\",\r\n \"color\": \"{color.icon.default}\",\r\n \"border\": \"{color.border.default}\",\r\n \"hover\": {\r\n \"border\": \"{color.border.secondary}\",\r\n \"color\": \"{color.icon.secondary}\"\r\n }\r\n }\r\n },\r\n \"size\": {\r\n \"xs\": {\r\n \"size\": \"{size.closebutton.xs.size}\",\r\n \"padding\": \"{size.closebutton.xs.padding}\",\r\n \"iconSize\": \"{size.closebutton.xs.iconSize}\",\r\n \"borderRadius\": \"{size.closebutton.xs.borderRadius}\"\r\n },\r\n \"sm\": {\r\n \"size\": \"{size.closebutton.sm.size}\",\r\n \"padding\": \"{size.closebutton.sm.padding}\",\r\n \"iconSize\": \"{size.closebutton.sm.iconSize}\",\r\n \"borderRadius\": \"{size.closebutton.sm.borderRadius}\"\r\n },\r\n \"md\": {\r\n \"size\": \"{size.closebutton.md.size}\",\r\n \"padding\": \"{size.closebutton.md.padding}\",\r\n \"iconSize\": \"{size.closebutton.md.iconSize}\",\r\n \"borderRadius\": \"{size.closebutton.md.borderRadius}\"\r\n },\r\n \"lg\": {\r\n \"size\": \"{size.closebutton.lg.size}\",\r\n \"padding\": \"{size.closebutton.lg.padding}\",\r\n \"iconSize\": \"{size.closebutton.lg.iconSize}\",\r\n \"borderRadius\": \"{size.closebutton.lg.borderRadius}\"\r\n }\r\n },\r\n \"disabled\": {\r\n \"opacity\": \"0.5\"\r\n }\r\n }\r\n}\r\n","{\r\n \"avatar\": {\r\n \"background\": \"{color.background.secondary}\",\r\n \"textColor\": \"{color.text.primary}\",\r\n \"iconColor\": \"{color.icon.default}\",\r\n \"placeholderBackground\": \"{color.background.tertiary}\",\r\n \"placeholderShape\": \"{color.border.secondary}\",\r\n \"shape\": {\r\n \"circle\": \"{radius.full}\",\r\n \"square\": \"{radius.sm}\"\r\n },\r\n \"size\": {\r\n \"xs\": \"{size.avatar.xs.size}\",\r\n \"sm\": \"{size.avatar.sm.size}\",\r\n \"md\": \"{size.avatar.md.size}\",\r\n \"lg\": \"{size.avatar.lg.size}\",\r\n \"xl\": \"{size.avatar.xl.size}\",\r\n \"xxl\": \"{size.avatar.xxl.size}\",\r\n \"xxxl\": \"{size.avatar.xxxl.size}\"\r\n },\r\n \"fontSize\": {\r\n \"xs\": \"{size.avatar.xs.fontSize}\",\r\n \"sm\": \"{size.avatar.sm.fontSize}\",\r\n \"md\": \"{size.avatar.md.fontSize}\",\r\n \"lg\": \"{size.avatar.lg.fontSize}\",\r\n \"xl\": \"{size.avatar.xl.fontSize}\",\r\n \"xxl\": \"{size.avatar.xxl.fontSize}\",\r\n \"xxxl\": \"{size.avatar.xxxl.fontSize}\"\r\n },\r\n \"iconSize\": {\r\n \"xs\": \"{size.avatar.xs.iconSize}\",\r\n \"sm\": \"{size.avatar.sm.iconSize}\",\r\n \"md\": \"{size.avatar.md.iconSize}\",\r\n \"lg\": \"{size.avatar.lg.iconSize}\",\r\n \"xl\": \"{size.avatar.xl.iconSize}\",\r\n \"xxl\": \"{size.avatar.xxl.iconSize}\",\r\n \"xxxl\": \"{size.avatar.xxxl.iconSize}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"tabs\": {\r\n \"activeBackground\": \"{color.primary.default}\",\r\n \"activeColor\": \"{color.text.inverse}\",\r\n \"inactiveColor\": \"{color.text.secondary}\",\r\n \"inactiveBackground\": \"{color.border.transparent}\",\r\n \"inactiveBackgroundWhite\": \"{colors.white}\",\r\n \"containerBackground\": \"{color.background.tabsBackground}\",\r\n \"containerBackgroundWhite\": \"{colors.white}\",\r\n \"borderRadius\": \"{radius.md}\",\r\n \"containerBorderRadius\": \"{radius.md}\",\r\n \"paddingX\": \"{spacing.component.xxs}\",\r\n \"paddingY\": \"0px\",\r\n \"gap\": \"{spacing.component.sm}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"fontWeight\": \"{typography.body.medium.fontWeight}\",\r\n \"size\": {\r\n \"sm\": {\r\n \"height\": \"{semantic.size.sm.height}\",\r\n \"padding\": \"{semantic.size.sm.paddingY} {semantic.size.sm.paddingX}\",\r\n \"fontSize\": \"{semantic.size.sm.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"md\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"padding\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\",\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"lg\": {\r\n \"height\": \"{semantic.size.lg.height}\",\r\n \"padding\": \"{semantic.size.tabs.lg.padding}\",\r\n \"fontSize\": \"{semantic.size.lg.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n }\r\n }\r\n }\r\n}\r\n","{\r\n \"subTabs\": {\r\n \"gap\": \"{spacing.component.xxs}\",\r\n \"trackPadding\": \"6px\",\r\n \"trackBorderRadius\": \"{radius.lg}\",\r\n \"trackBackground\": \"{color.background.default}\",\r\n \"trackBorder\": \"{color.border.default}\",\r\n \"fontWeight\": \"{typography.body.medium.fontWeight}\",\r\n \"activeFontWeight\": \"{typography.heading.h4.fontWeight}\",\r\n \"size\": {\r\n \"sm\": {\r\n \"height\": \"{semantic.size.sm.height}\",\r\n \"padding\": \"{semantic.size.sm.paddingY} {semantic.size.md.paddingX}\",\r\n \"fontSize\": \"{semantic.size.sm.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\",\r\n \"iconSize\": \"22px\"\r\n },\r\n \"md\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"padding\": \"{semantic.size.md.paddingY} {semantic.size.lg.paddingX}\",\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n \"borderRadius\": \"{radius.md}\",\r\n \"iconSize\": \"26px\"\r\n }\r\n },\r\n \"colors\": {\r\n \"primary\": {\r\n \"accent\": \"{color.primary.default}\",\r\n \"accentLight\": \"{color.background.default}\",\r\n \"activeText\": \"{color.primary.default}\",\r\n \"inactiveText\": \"{color.text.secondary}\",\r\n \"activeIconBackground\": \"{color.primary.default}\",\r\n \"inactiveIconBackground\": \"{color.background.default}\"\r\n },\r\n \"green\": {\r\n \"accent\": \"#52760A\",\r\n \"accentLight\": \"#F3F6EC\",\r\n \"activeText\": \"#52760A\",\r\n \"inactiveText\": \"#6B7280\",\r\n \"activeIconBackground\": \"#52760A\",\r\n \"inactiveIconBackground\": \"#EEF1E4\"\r\n }\r\n }\r\n }\r\n}\r\n","{\r\n \"menu\": {\r\n \"minWidth\": \"{size.menu.minWidth}\",\r\n \"borderRadius\": \"{radius.2xl}\",\r\n \"padding\": \"{spacing.component.md}\",\r\n \"marginTop\": \"{spacing.component.md}\",\r\n \"itemPaddingY\": \"{spacing.component.md}\",\r\n \"itemPaddingX\": \"{spacing.component.lg}\",\r\n \"itemIconLabelGap\": \"{spacing.component.md}\",\r\n \"itemBorderRadius\": \"{radius.control}\",\r\n \"fontFamily\": \"{typography.body.large.fontFamily}\",\r\n \"fontSize\": \"{typography.body.large.fontSize}\",\r\n \"fontWeight\": \"{typography.body.large.fontWeight}\",\r\n \"lineHeight\": \"{typography.body.large.lineHeight}\",\r\n \"textColor\": \"{color.text.primary}\",\r\n \"selectedBackground\": \"{color.background.secondary}\",\r\n \"hoverBackground\": \"{color.background.tertiary}\",\r\n \"background\": \"{color.background.default}\",\r\n \"listMaxHeight\": \"{size.menu.listMaxHeight}\"\r\n }\r\n}\r\n","{\r\n \"fileupload\": {\r\n \"size\": {\r\n \"sm\": {\r\n \"height\": \"{semantic.size.sm.height}\",\r\n \"padding\": \"{semantic.size.sm.paddingY} {semantic.size.sm.paddingX}\",\r\n \"fontSize\": \"{semantic.size.sm.fontSize}\",\r\n \"borderRadius\": \"{radius.lg}\"\r\n },\r\n \"md\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"padding\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\",\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n \"borderRadius\": \"{radius.xl}\"\r\n },\r\n \"lg\": {\r\n \"height\": \"{semantic.size.lg.height}\",\r\n \"padding\": \"{semantic.size.lg.paddingY} {semantic.size.lg.paddingX}\",\r\n \"fontSize\": \"{semantic.size.lg.fontSize}\",\r\n \"borderRadius\": \"{radius.xl}\"\r\n }\r\n },\r\n \"container\": {\r\n \"borderRadius\": \"{radius.xl}\",\r\n \"background\": \"{color.background.default}\",\r\n \"backgroundWhite\": \"{colors.white}\",\r\n \"border\": \"1px solid {color.border.transparent}\",\r\n \"borderFocus\": \"{semantic.field.border.focus}\",\r\n \"borderError\": \"{semantic.field.border.error}\",\r\n \"gap\": \"{spacing.3}\"\r\n },\r\n \"label\": {\r\n \"fontSize\": \"{typography.label.medium.fontSize}\",\r\n \"fontWeight\": \"{typography.label.medium.fontWeight}\",\r\n \"fontFamily\": \"{typography.label.medium.fontFamily}\",\r\n \"color\": \"{semantic.field.labelColor}\",\r\n \"requiredColor\": \"{semantic.field.labelRequiredColor}\",\r\n \"marginBottom\": \"{spacing.2}\"\r\n },\r\n \"button\": {\r\n \"fontWeight\": \"{typography.label.medium.fontWeight}\",\r\n \"fontFamily\": \"{typography.body.medium.fontFamily}\",\r\n \"color\": \"{color.text.fileupload}\",\r\n \"background\": \"{color.background.default}\",\r\n \"border\": \"{color.border.default}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"placeholder\": {\r\n \"fontFamily\": \"{typography.body.medium.fontFamily}\",\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"color\": \"{color.text.secondary}\"\r\n },\r\n \"disabled\": {\r\n \"opacity\": \"{semantic.opacity.disabled}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"uploaddropzone\": {\r\n \"title\": {\r\n \"fontSize\": \"{typography.heading.h4.fontSize}\",\r\n \"fontWeight\": \"{typography.fontWeight.bold}\",\r\n \"fontFamily\": \"{typography.heading.h4.fontFamily}\",\r\n \"lineHeight\": \"{typography.heading.h4.lineHeight}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"marginBottom\": \"{spacing.4}\"\r\n },\r\n \"zone\": {\r\n \"background\": \"{color.background.uploaddropzone}\",\r\n \"border\": \"1px dashed {color.border.default}\",\r\n \"borderRadius\": \"{radius.lg}\",\r\n \"borderActive\": \"1px dashed {color.border.active}\",\r\n \"backgroundActive\": \"{color.primary.light}\",\r\n \"paddingY\": \"{spacing.6}\",\r\n \"paddingX\": \"{spacing.2}\",\r\n \"gap\": \"{spacing.0}\"\r\n },\r\n \"icon\": {\r\n \"size\": \"{size.48}\",\r\n \"marginBottom\": \"{spacing.2}\",\r\n \"background\": \"{color.primary.light}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"borderRadius\": \"{radius.lg}\",\r\n \"border\": \"1px solid {color.primary.default}\"\r\n },\r\n \"instruction\": {\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"fontWeight\": \"{typography.fontWeight.bold}\",\r\n \"fontFamily\": \"{typography.body.medium.fontFamily}\",\r\n \"lineHeight\": \"{typography.body.medium.lineHeight}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"marginBottom\": \"{spacing.0}\"\r\n },\r\n \"hint\": {\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"fontWeight\": \"{typography.fontWeight.normal}\",\r\n \"fontFamily\": \"{typography.body.small.fontFamily}\",\r\n \"lineHeight\": \"{typography.body.small.lineHeight}\",\r\n \"color\": \"{color.text.secondary}\",\r\n \"marginBottom\": \"{spacing.2}\"\r\n },\r\n \"button\": {\r\n \"fontWeight\": \"{typography.fontWeight.normal}\",\r\n \"color\": \"{color.primary.default}\",\r\n \"background\": \"{colors.white}\",\r\n \"border\": \"1px solid {color.primary.default}\"\r\n },\r\n \"selectedFile\": {\r\n \"fontSize\": \"{typography.body.small.fontSize}\",\r\n \"fontFamily\": \"{typography.body.small.fontFamily}\",\r\n \"color\": \"{color.text.secondary}\",\r\n \"marginTop\": \"{spacing.4}\"\r\n },\r\n \"disabled\": {\r\n \"opacity\": \"{semantic.opacity.disabled}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"phonefield\": {\r\n \"size\": {\r\n \"sm\": {\r\n \"borderRadius\": \"{radius.md}\",\r\n \"selectorWidth\": \"100\"\r\n },\r\n \"md\": {\r\n \"borderRadius\": \"{radius.md}\",\r\n \"selectorWidth\": \"110\"\r\n },\r\n \"lg\": {\r\n \"borderRadius\": \"{radius.md}\",\r\n \"selectorWidth\": \"120\"\r\n }\r\n },\r\n \"label\": {\r\n \"fontSize\": \"{typography.label.medium.fontSize}\",\r\n \"fontWeight\": \"{typography.label.medium.fontWeight}\",\r\n \"marginBottom\": \"{spacing.2}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"requiredColor\": \"{color.error.default}\"\r\n },\r\n \"container\": {\r\n \"border\": \"2px solid {color.border.transparent}\",\r\n \"borderError\": \"2px solid {color.error.default}\"\r\n },\r\n \"selector\": {\r\n \"background\": \"{colors.background.default}\",\r\n \"backgroundWhite\": \"{colors.white}\",\r\n \"borderRight\": \"1px solid {color.border.default}\"\r\n },\r\n \"fontFamily\": \"{typography.body.medium.fontFamily}\",\r\n \"outline\": {\r\n \"default\": \"{color.border.transparent}\",\r\n \"active\": \"{color.border.active}\",\r\n \"error\": \"{color.error.default}\"\r\n },\r\n \"disabledOpacity\": \"{semantic.opacity.disabled}\"\r\n }\r\n}\r\n","{\r\n \"badge\": {\r\n \"size\": {\r\n \"xs\": {\r\n \"height\": \"{size.20}\",\r\n \"padding\": \"{spacing.xxs} {spacing.1_5}\",\r\n \"fontSize\": \"{typography.fontSize.xs}\",\r\n \"borderRadius\": \"{radius.xl}\",\r\n \"removeIconSize\": \"{typography.fontSize.xs}\"\r\n },\r\n \"sm\": {\r\n \"height\": \"{semantic.size.sm.height}\",\r\n \"padding\": \"{semantic.size.sm.paddingY} {semantic.size.sm.paddingX}\",\r\n \"fontSize\": \"{semantic.size.sm.fontSize}\",\r\n \"borderRadius\": \"{radius.xl}\",\r\n \"removeIconSize\": \"{typography.fontSize.sm}\"\r\n },\r\n \"md\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"padding\": \"{semantic.size.md.paddingY} {semantic.size.md.paddingX}\",\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n \"borderRadius\": \"{radius.xl}\",\r\n \"removeIconSize\": \"{typography.fontSize.sm}\"\r\n },\r\n \"lg\": {\r\n \"height\": \"{semantic.size.lg.height}\",\r\n \"padding\": \"{semantic.size.lg.paddingY} {semantic.size.lg.paddingX}\",\r\n \"fontSize\": \"{semantic.size.lg.fontSize}\",\r\n \"borderRadius\": \"{radius.xl}\",\r\n \"removeIconSize\": \"{typography.fontSize.base}\"\r\n }\r\n },\r\n \"background\": \"{color.background.badge}\",\r\n \"backgroundWhite\": \"{colors.white}\",\r\n \"color\": \"{color.text.badge}\",\r\n \"removeButtonColor\": \"{color.text.primary}\",\r\n \"removeButtonHoverColor\": \"{color.text.secondary}\",\r\n \"boxShadow\": \"0 1px 2px rgba(0, 0, 0, 0.05)\",\r\n \"borderColor\": \"{color.border.default}\"\r\n }\r\n}\r\n","{\r\n \"filterpopover\": {\r\n \"minWidth\": \"{size.filterpopover.minWidth}\",\r\n \"minHeight\": \"{size.filterpopover.minHeight}\",\r\n \"padding\": \"{size.filterpopover.padding}\",\r\n \"borderRadius\": \"{size.filterpopover.borderRadius}\",\r\n \"innerBorderRadius\": \"{size.filterpopover.innerBorderRadius}\",\r\n \"background\": \"{color.background.filterpopover}\",\r\n \"border\": \"1px solid {color.border.default}\",\r\n \"boxShadow\": \"0px 3px 15px -3px rgba(16, 24, 40, 0.1), 0px 2px 8px -4px rgba(16, 24, 40, 0.1)\",\r\n \"header\": {\r\n \"background\": \"{color.background.warm}\",\r\n \"padding\": \"{spacing.4}\",\r\n \"titleFontSize\": \"{typography.fontSize.md}\",\r\n \"titleFontWeight\": \"{typography.fontWeight.medium}\",\r\n \"titleColor\": \"{color.text.primary}\",\r\n \"marginBottom\": \"{spacing.0}\"\r\n },\r\n \"content\": {\r\n \"padding\": \"{spacing.4}\",\r\n \"gap\": \"{spacing.3}\"\r\n },\r\n \"footer\": {\r\n \"padding\": \"{spacing.4}\",\r\n \"gap\": \"{spacing.4}\",\r\n \"marginTop\": \"{spacing.0}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"toggleButton\": {\r\n \"gap\": \"{spacing.0}\",\r\n \"button\": {\r\n \"fontFamily\": \"{semantic.typography.label.small.fontFamily}\",\r\n \"lineHeight\": \"{semantic.typography.label.small.lineHeight}\",\r\n \"fontWeight\": \"{semantic.typography.label.small.fontWeight}\",\r\n \"activeFontWeight\": \"{semantic.typography.heading.h4.fontWeight}\"\r\n },\r\n \"size\": {\r\n \"sm\": {\r\n \"height\": \"{semantic.size.sm.height}\",\r\n \"paddingX\": \"{semantic.size.sm.paddingX}\",\r\n \"paddingY\": \"{semantic.size.sm.paddingY}\",\r\n \"fontSize\": \"{semantic.size.sm.fontSize}\",\r\n \"borderRadius\": \"{radius.lg}\",\r\n \"borderWidth\": \"{semantic.size.toggleButton.borderWidth}\"\r\n },\r\n \"md\": {\r\n \"height\": \"{semantic.size.md.height}\",\r\n \"paddingX\": \"{semantic.size.md.paddingX}\",\r\n \"paddingY\": \"{semantic.size.md.paddingY}\",\r\n \"fontSize\": \"{semantic.size.md.fontSize}\",\r\n \"borderRadius\": \"{radius.xl}\",\r\n \"borderWidth\": \"{semantic.size.toggleButton.borderWidth}\"\r\n },\r\n \"lg\": {\r\n \"height\": \"{semantic.size.lg.height}\",\r\n \"paddingX\": \"{semantic.size.lg.paddingX}\",\r\n \"paddingY\": \"{semantic.size.lg.paddingY}\",\r\n \"fontSize\": \"{semantic.size.lg.fontSize}\",\r\n \"borderRadius\": \"{radius.xl}\",\r\n \"borderWidth\": \"{semantic.size.toggleButton.borderWidth}\"\r\n }\r\n },\r\n \"inactive\": {\r\n \"background\": \"{color.background.default}\",\r\n \"backgroundWhite\": \"{colors.white}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"border\": \"{color.border.default}\"\r\n },\r\n \"active\": {\r\n \"background\": \"{color.primary.default}\",\r\n \"color\": \"{color.text.inverse}\",\r\n \"border\": \"{color.primary.default}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"switch\": {\r\n \"size\": {\r\n \"sm\": {\r\n \"width\": \"{semantic.size.switch.sm.width}\",\r\n \"height\": \"{semantic.size.switch.sm.height}\",\r\n \"thumbSize\": \"{semantic.size.switch.sm.thumbSize}\",\r\n \"trackPadding\": \"{semantic.size.switch.sm.trackPadding}\",\r\n \"radius\": \"{semantic.size.switch.sm.radius}\",\r\n \"borderWidth\": \"{semantic.size.switch.sm.borderWidth}\"\r\n },\r\n \"md\": {\r\n \"width\": \"{semantic.size.switch.md.width}\",\r\n \"height\": \"{semantic.size.switch.md.height}\",\r\n \"thumbSize\": \"{semantic.size.switch.md.thumbSize}\",\r\n \"trackPadding\": \"{semantic.size.switch.md.trackPadding}\",\r\n \"radius\": \"{semantic.size.switch.md.radius}\",\r\n \"borderWidth\": \"{semantic.size.switch.md.borderWidth}\"\r\n },\r\n \"lg\": {\r\n \"width\": \"{semantic.size.switch.lg.width}\",\r\n \"height\": \"{semantic.size.switch.lg.height}\",\r\n \"thumbSize\": \"{semantic.size.switch.lg.thumbSize}\",\r\n \"trackPadding\": \"{semantic.size.switch.lg.trackPadding}\",\r\n \"radius\": \"{semantic.size.switch.lg.radius}\",\r\n \"borderWidth\": \"{semantic.size.switch.lg.borderWidth}\"\r\n }\r\n },\r\n \"track\": {\r\n \"background\": \"{color.background.default}\",\r\n \"border\": \"{color.text.primary}\",\r\n \"backgroundActive\": \"{color.primary.default}\",\r\n \"borderActive\": \"{color.primary.default}\"\r\n },\r\n \"thumb\": {\r\n \"background\": \"{color.text.primary}\",\r\n \"backgroundActive\": \"{color.text.inverse}\"\r\n },\r\n \"label\": {\r\n \"fontSize\": \"{typography.label.large.fontSize}\",\r\n \"fontWeight\": \"{typography.label.large.fontWeight}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"marginBottom\": \"{spacing.2}\"\r\n },\r\n \"caption\": {\r\n \"fontSize\": \"{typography.body.medium.fontSize}\",\r\n \"textColor\": \"{color.icon.caption}\"\r\n },\r\n \"helper\": {\r\n \"textFontSize\": \"{typography.body.medium.fontSize}\",\r\n \"textColor\": \"{color.icon.caption}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"breadcrumb\": {\r\n \"itemColor\": \"{color.text.primary}\",\r\n \"currentColor\": \"{color.text.primary}\",\r\n \"separatorColor\": \"{color.text.primary}\",\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.base}\",\r\n \"fontWeight\": \"{typography.fontWeight.normal}\",\r\n \"itemFontWeight\": \"{typography.fontWeight.semibold}\",\r\n \"lineHeight\": \"{typography.lineHeight.md}\",\r\n \"gap\": \"{spacing.2}\"\r\n }\r\n}\r\n","{\r\n \"loader\": {\r\n \"backdrop\": {\r\n \"background\": \"{colors.black}\",\r\n \"opacity\": \"{semantic.opacity.disabled}\",\r\n \"zIndex\": \"9999\"\r\n },\r\n \"dot\": {\r\n \"color\": \"{color.primary.default}\",\r\n \"size\": \"{spacing.1}\",\r\n \"activeSpread\": \"{spacing.1_25}\",\r\n \"gap\": \"{spacing.5}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"datatable\": {\r\n \"header\": {\r\n \"background\": \"{color.background.tableHeader}\",\r\n \"color\": \"{color.text.tableHeader}\",\r\n \"fontWeight\": \"{typography.fontWeight.medium}\",\r\n \"fontSize\": \"{typography.fontSize.sm}\",\r\n \"padding\": \"{spacing.4}\",\r\n \"borderBottom\": \"{color.border.default}\",\r\n \"borderRight\": \"{color.border.tableHeaderPartition}\"\r\n },\r\n \"cell\": {\r\n \"padding\": \"{spacing.4}\",\r\n \"fontSize\": \"{typography.fontSize.sm}\",\r\n \"color\": \"{color.text.primary}\",\r\n \"borderBottom\": \"{color.border.default}\"\r\n },\r\n \"row\": {\r\n \"background\": \"{color.background.tableRow}\",\r\n \"stripeBackground\": \"{color.background.tableRowStripe}\",\r\n \"hoverBackground\": \"{color.background.tableRowHover}\"\r\n },\r\n \"skeleton\": {\r\n \"baseColor\": \"{color.background.tertiary}\",\r\n \"height\": \"{spacing.4}\",\r\n \"borderRadius\": \"{radius.md}\"\r\n },\r\n \"emptyState\": {\r\n \"color\": \"{color.text.secondary}\",\r\n \"fontSize\": \"{typography.fontSize.md}\"\r\n },\r\n \"table\": {\r\n \"border\": \"{color.border.tableBorder}\"\r\n },\r\n \"sortIcon\": {\r\n \"width\": \"{typography.fontSize.md}\",\r\n \"height\": \"{typography.fontSize.md}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"modal\": {\r\n \"background\": \"{color.background.dropdown}\",\r\n \"backdrop\": {\r\n \"background\": \"{color.background.overlay}\",\r\n \"opacityVisible\": \"1\",\r\n \"opacityHidden\": \"0\"\r\n },\r\n \"radius\": \"{radius.md}\",\r\n \"padding\": \"{spacing.component.lg}\",\r\n \"title\": {\r\n \"background\": \"{color.background.modalHeader}\",\r\n \"color\": \"{color.text.tableHeader}\",\r\n \"typography\": \"{typography.heading.h4}\"\r\n },\r\n \"size\": {\r\n \"sm\": {\r\n \"width\": \"{size.modal.sm.width}\"\r\n },\r\n \"lg\": {\r\n \"width\": \"{size.modal.lg.width}\"\r\n }\r\n }\r\n }\r\n}\r\n","{\r\n \"drawer\": {\r\n \"background\": \"{color.background.dropdown}\",\r\n \"backdrop\": {\r\n \"background\": \"{color.background.overlay}\",\r\n \"opacityVisible\": \"1\",\r\n \"opacityHidden\": \"0\"\r\n },\r\n \"radius\": \"{radius.md}\",\r\n \"transitionDuration\": \"300ms\",\r\n \"size\": {\r\n \"sm\": {\r\n \"width\": \"{size.550}\"\r\n },\r\n \"md\": {\r\n \"width\": \"800px\"\r\n },\r\n \"lg\": {\r\n \"width\": \"{size.1200}\"\r\n }\r\n }\r\n }\r\n}\r\n","{\r\n \"progress\": {\r\n \"height\": \"{size.8}\",\r\n \"borderRadius\": \"{radius.md}\",\r\n \"track\": {\r\n \"background\": \"{color.primary.light}\"\r\n },\r\n \"bar\": {\r\n \"background\": \"{color.primary.default}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"skeleton\": {\r\n \"baseColor\": \"{color.background.disabled}\",\r\n \"highlightColor\": \"{color.background.default}\"\r\n }\r\n}\r\n","{\r\n \"ipwhitelistfield\": {\r\n \"label\": {\r\n \"marginTop\": \"{spacing.3}\",\r\n \"color\": \"{semantic.field.labelColor}\",\r\n \"requiredColor\": \"{semantic.field.labelRequiredColor}\",\r\n \"requiredGap\": \"{spacing.1}\"\r\n },\r\n \"row\": {\r\n \"marginTop\": \"{spacing.4}\",\r\n \"groupGap\": \"{spacing.3}\",\r\n \"buttonsGap\": \"{spacing.2}\",\r\n \"width\": \"{semantic.field.otpWidth}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"stepper\": {\r\n \"gap\": \"{spacing.2}\",\r\n \"stepGap\": \"{spacing.2}\",\r\n \"line\": {\r\n \"width\": \"{size.40}\",\r\n \"height\": \"{size.2}\",\r\n \"completedBackground\": \"{color.success.default}\",\r\n \"pendingBackground\": \"{color.border.default}\"\r\n },\r\n \"indicator\": {\r\n \"size\": \"{size.34}\",\r\n \"borderWidth\": \"{size.2}\",\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.base}\",\r\n \"fontWeight\": \"{typography.fontWeight.semibold}\",\r\n \"lineHeight\": \"{typography.lineHeight.normal}\",\r\n \"completedBackground\": \"{color.success.default}\",\r\n \"completedBorder\": \"{color.success.default}\",\r\n \"completedColor\": \"{color.text.inverse}\",\r\n \"activeBackground\": \"{color.success.light}\",\r\n \"activeBorder\": \"{color.success.default}\",\r\n \"activeColor\": \"{color.success.dark}\",\r\n \"pendingBackground\": \"{color.background.default}\",\r\n \"pendingBorder\": \"{color.border.default}\",\r\n \"pendingColor\": \"{color.text.disabled}\"\r\n },\r\n \"label\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.2xl}\",\r\n \"fontWeight\": \"{typography.fontWeight.semibold}\",\r\n \"lineHeight\": \"{typography.lineHeight.normal}\",\r\n \"completedColor\": \"{color.success.dark}\",\r\n \"activeColor\": \"{color.success.dark}\",\r\n \"pendingColor\": \"{color.text.disabled}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"accordion\": {\r\n \"container\": {\r\n \"width\": \"100%\",\r\n \"borderWidth\": \"{size.1}\",\r\n \"borderColor\": \"{color.border.default}\",\r\n \"borderRadius\": \"{radius.lg}\",\r\n \"background\": \"{color.background.default}\"\r\n },\r\n \"header\": {\r\n \"padding\": \"{spacing.5}\",\r\n \"gap\": \"{spacing.4}\",\r\n \"contentGap\": \"{spacing.4}\",\r\n \"defaultBackground\": \"{color.background.subtle}\",\r\n \"hoverBackground\": \"{color.background.surface}\",\r\n \"expandedBackground\": \"{color.success.light}\"\r\n },\r\n \"statusIcon\": {\r\n \"size\": \"{size.40}\",\r\n \"background\": \"{color.success.default}\",\r\n \"color\": \"{color.text.inverse}\",\r\n \"symbol\": \"✓\",\r\n \"fontSize\": \"{typography.fontSize.2xl}\",\r\n \"fontWeight\": \"{typography.fontWeight.bold}\",\r\n \"lineHeight\": \"{typography.lineHeight.tight}\"\r\n },\r\n \"title\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.base}\",\r\n \"fontWeight\": \"{typography.fontWeight.bold}\",\r\n \"lineHeight\": \"{typography.lineHeight.normal}\",\r\n \"color\": \"{color.text.primary}\"\r\n },\r\n \"subtitle\": {\r\n \"fontFamily\": \"{typography.fontFamily.sans}\",\r\n \"fontSize\": \"{typography.fontSize.sm}\",\r\n \"fontStyle\": \"italic\",\r\n \"fontWeight\": \"{typography.fontWeight.medium}\",\r\n \"lineHeight\": \"{typography.lineHeight.normal}\",\r\n \"color\": \"{color.text.secondary}\"\r\n },\r\n \"actionIcon\": {\r\n \"size\": \"{size.24}\",\r\n \"color\": \"{color.success.default}\",\r\n \"strokeWidth\": \"{size.2}\"\r\n },\r\n \"content\": {\r\n \"padding\": \"{spacing.5}\",\r\n \"background\": \"{color.background.default}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"reportcard\": {\r\n \"header\": {\r\n \"background\": \"{color.primary.default}\",\r\n \"color\": \"{colors.white}\"\r\n },\r\n \"body\": {\r\n \"background\": \"{colors.white}\",\r\n \"dividerColor\": \"{colors.gray.200}\",\r\n \"bulletColor\": \"{colors.gray.300}\",\r\n \"itemColor\": \"{colors.gray.600}\",\r\n \"itemHoverColor\": \"{color.primary.default}\"\r\n },\r\n \"borderRadius\": \"8px\",\r\n \"shadow\": \"0 1px 4px rgba(0,0,0,0.08)\"\r\n }\r\n}\r\n","{\r\n \"color\": {\r\n \"primary\": {\r\n \"default\": \"{colors.blue.600}\",\r\n \"hover\": \"{colors.blue.700}\",\r\n \"active\": \"{colors.blue.800}\"\r\n },\r\n \"brand\": {\r\n \"default\": \"{colors.brand.gold}\",\r\n \"secondary\": \"{colors.brand.cream}\",\r\n \"textDefault\": \"{colors.brand.goldDark}\",\r\n \"textSecondary\": \"{colors.brand.arabianGulf}\"\r\n },\r\n \"background\": {\r\n \"default\": \"{colors.gray.75}\",\r\n \"brandDefault\": \"{colors.brand.gold}\",\r\n \"brandSecondary\": \"{colors.brand.cream}\"\r\n }\r\n }\r\n}\r\n","{\r\n \"color\": {\r\n \"primary\": {\r\n \"default\": \"{colors.gray.600}\",\r\n \"hover\": \"{colors.gray.700}\",\r\n \"active\": \"{colors.gray.800}\"\r\n },\r\n \"border\": {\r\n \"default\": \"{colors.gray.600}\",\r\n \"active\": \"{colors.gray.500}\",\r\n \"disabled\": \"{colors.gray.600}\"\r\n },\r\n \"background\": {\r\n \"default\": \"{colors.gray.900}\",\r\n \"secondary\": \"{colors.gray.800}\",\r\n \"tertiary\": \"{colors.gray.700}\",\r\n \"disabled\": \"{colors.gray.600}\",\r\n \"modalHeader\": \"{colors.gray.800}\"\r\n },\r\n \"text\": {\r\n \"primary\": \"{colors.white}\",\r\n \"secondary\": \"{colors.gray.300}\",\r\n \"tertiary\": \"{colors.gray.400}\",\r\n \"disabled\": \"{colors.gray.500}\",\r\n \"inverse\": \"{colors.gray.900}\"\r\n }\r\n }\r\n}\r\n","{}\r\n","{\r\n \"color\": {\r\n \"primary\": {\r\n \"default\": \"{colors.yellow.1000}\",\r\n \"hover\": \"{colors.yellow.1100}\",\r\n \"active\": \"{colors.yellow.800}\"\r\n },\r\n \"border\": {\r\n \"transparent\": \"{colors.transparent}\",\r\n \"default\": \"{colors.gray.850}\",\r\n \"active\": \"{colors.gray.650}\",\r\n \"disabled\": \"{colors.gray.600}\",\r\n \"closeButton\": \"{colors.white}\",\r\n \"radioActive\": \"{colors.white}\",\r\n \"tableHeaderPartition\": \"{colors.white}\",\r\n \"tableBorder\": \"{colors.gray.1100}\"\r\n },\r\n \"background\": {\r\n \"default\": \"{colors.gray.1100}\",\r\n \"secondary\": \"{colors.gray.800}\",\r\n \"tertiary\": \"{colors.gray.700}\",\r\n \"disabled\": \"{colors.gray.600}\",\r\n \"badge\": \"{colors.gray.850}\",\r\n \"warm\": \"{colors.gray.1500}\",\r\n \"chip\": \"{colors.gray.850}\",\r\n \"checkbox\": \"{colors.gray.1200}\",\r\n \"closeButton\": \"{colors.gray.1400}\",\r\n \"dropdown\": \"{colors.gray.1100}\",\r\n \"filterpopover\": \"{colors.gray.850}\",\r\n \"tabsBackground\": \"{colors.gray.850}\",\r\n \"tableHeader\": \"{colors.gray.750}\",\r\n \"tableRow\": \"{colors.gray.1100}\",\r\n \"tableRowStripe\": \"{colors.gray.850}\",\r\n \"tableRowHover\": \"{colors.gray.1500}\",\r\n \"modalHeader\": \"{colors.gray.1500}\",\r\n \"selectBox\": \"{colors.gray.850}\"\r\n },\r\n \"text\": {\r\n \"primary\": \"{colors.white}\",\r\n \"secondary\": \"{colors.white}\",\r\n \"tertiary\": \"{colors.white}\",\r\n \"disabled\": \"{colors.gray.500}\",\r\n \"inverse\": \"{colors.white}\",\r\n \"fileupload\": \"{colors.white}\",\r\n \"badge\": \"{colors.white}\",\r\n \"description\": \"{colors.white}\",\r\n \"cross\": \"{colors.gray.850}\",\r\n \"tableHeader\": \"{colors.white}\"\r\n },\r\n \"neutral\": {\r\n \"default\": \"{colors.gray.1200}\",\r\n \"hover\": \"{colors.gray.1300}\"\r\n },\r\n \"checkbox\": {\r\n \"color\": {\r\n \"active\": \"{colors.yellow.1000}\",\r\n \"inactive\": \"{colors.gray.1200}\"\r\n }\r\n },\r\n \"radio\": {\r\n \"color\": {\r\n \"active\": \"{colors.white}\",\r\n \"inactive\": \"{colors.white}\",\r\n \"dot\": \"{colors.white}\"\r\n },\r\n \"label\": {\r\n \"color\": {\r\n \"active\": \"{colors.white}\",\r\n \"inactive\": \"{colors.white}\"\r\n }\r\n },\r\n \"background\": \"{colors.transparent}\"\r\n },\r\n \"badge\": {\r\n \"background\": \"{colors.gray.1100}\"\r\n },\r\n \"icon\": {\r\n \"default\": \"{colors.white}\",\r\n \"caption\": \"{colors.white}\"\r\n }\r\n }\r\n}\r\n","// Foundation tokens\r\nimport foundationSize from './foundation/size.json';\r\nimport foundationSpacing from './foundation/spacing.json';\r\nimport foundationRadius from './foundation/radius.json';\r\nimport foundationColors from './foundation/colors.json';\r\nimport foundationTypography from './foundation/typography.json';\r\nimport foundationOpacity from './foundation/opacity.json';\r\nimport foundationBreakpoints from './foundation/breakpoints.json';\r\n\r\n// Semantic tokens\r\nimport semanticColor from './semantic/color.json';\r\nimport semanticSpacing from './semantic/spacing.json';\r\nimport semanticTypography from './semantic/typography.json';\r\nimport semanticField from './semantic/field.json';\r\nimport semanticSize from './semantic/size.json';\r\nimport semanticOpacity from './semantic/opacity.json';\r\n\r\n// Component tokens\r\nimport componentButton from './components/button.json';\r\nimport componentInput from './components/input.json';\r\nimport componentTextfield from './components/textfield.json';\r\nimport componentCard from './components/card.json';\r\nimport componentCheckbox from './components/checkbox.json';\r\nimport componentSelectScroll from './components/selectscroll.json';\r\nimport componentSelector from './components/selector.json';\r\nimport componentDatePicker from './components/datepicker.json';\r\nimport componentField from './components/field.json';\r\nimport componentRadio from './components/radio.json';\r\nimport componentPagination from './components/pagination.json';\r\nimport componentCloseButton from './components/closebutton.json';\r\nimport componentAvatar from './components/avatar.json';\r\nimport componentTabs from './components/tabs.json';\r\nimport componentSubTabs from './components/subtabs.json';\r\nimport componentMenu from './components/menu.json';\r\nimport componentFileUpload from './components/fileupload.json';\r\nimport componentUploadDropzone from './components/uploaddropzone.json';\r\nimport componentPhonefield from './components/phonefield.json';\r\nimport componentBadge from './components/badge.json';\r\nimport componentFilterPopover from './components/filterpopover.json';\r\nimport componentToggleButton from './components/togglebutton.json';\r\nimport componentSwitch from './components/switch.json';\r\nimport componentBreadcrumb from './components/breadcrumb.json';\r\nimport componentLoader from './components/loader.json';\r\nimport componentDataTable from './components/datatable.json';\r\nimport componentModal from './components/modal.json';\r\nimport componentDrawer from './components/drawer.json';\r\nimport componentProgress from './components/progress.json';\r\nimport componentSkeleton from './components/skeleton.json';\r\nimport componentIpWhitelistField from './components/ipwhitelistfield.json';\r\nimport componentStepper from './components/stepper.json';\r\nimport componentAccordion from './components/accordion.json';\r\nimport componentReportCard from './components/reportcard.json';\r\n\r\n// Brand theme tokens (per-brand, per-mode)\r\nimport firebirdLight from './brands/firebird/themes/light.json';\r\nimport firebirdDark from './brands/firebird/themes/dark.json';\r\nimport cpcLight from './brands/cpc/themes/light.json';\r\nimport cpcDark from './brands/cpc/themes/dark.json';\r\n\r\nimport type {\r\n ButtonVariant,\r\n ButtonSize,\r\n ButtonShape,\r\n ButtonColorToken,\r\n ButtonSizeToken,\r\n} from './button';\r\n\r\nexport type BrandKey = 'firebird' | 'cpc';\r\nexport type ThemeMode = 'light' | 'dark';\r\n\r\nexport type ScreenKey = 'mobile' | 'tablet' | 'laptop' | 'desktop' | 'wide' | 'ultra';\r\n\r\nexport interface GetTokensOptions {\r\n brand?: BrandKey;\r\n mode?: ThemeMode;\r\n /** Current screen for responsive size resolution. If omitted, detected from window (client) or \"desktop\" (SSR). */\r\n screen?: ScreenKey;\r\n}\r\n\r\nexport interface ResolvedTokens {\r\n foundation: Record<string, any>;\r\n semantic: Record<string, any>;\r\n components: Record<string, any>;\r\n brands: Record<BrandKey, Record<ThemeMode, any>>;\r\n}\r\n\r\n/* ---------------------------------- */\r\n/* Utilities */\r\n/* ---------------------------------- */\r\n\r\nfunction resolveTokenReferences(obj: any, tokens: any): any {\r\n if (typeof obj === 'string') {\r\n return obj.replace(/\\{([^}]+)\\}/g, (match, path) => {\r\n const keys = path.split('.');\r\n let value: any = tokens;\r\n for (const key of keys) {\r\n value = value?.[key];\r\n if (value === undefined) break;\r\n }\r\n return value !== undefined ? value : match;\r\n });\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n return obj.map((item) => resolveTokenReferences(item, tokens));\r\n }\r\n\r\n if (obj && typeof obj === 'object') {\r\n const resolved: any = {};\r\n for (const key in obj) {\r\n resolved[key] = resolveTokenReferences(obj[key], tokens);\r\n }\r\n return resolved;\r\n }\r\n\r\n return obj;\r\n}\r\n\r\nfunction deepMerge(base: any, override: any): any {\r\n if (!override) return base;\r\n\r\n const result = { ...base };\r\n\r\n for (const key in override) {\r\n const baseValue = base[key];\r\n const overrideValue = override[key];\r\n\r\n if (\r\n baseValue &&\r\n typeof baseValue === 'object' &&\r\n !Array.isArray(baseValue) &&\r\n overrideValue &&\r\n typeof overrideValue === 'object' &&\r\n !Array.isArray(overrideValue)\r\n ) {\r\n result[key] = deepMerge(baseValue, overrideValue);\r\n } else {\r\n result[key] = overrideValue;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function getScreen(breakpoints: Record<string, number>): ScreenKey {\r\n if (typeof window === 'undefined') return 'desktop';\r\n\r\n const width = window.innerWidth;\r\n\r\n if (width >= breakpoints.ultra) return 'ultra';\r\n if (width >= breakpoints.wide) return 'wide';\r\n if (width >= breakpoints.desktop) return 'desktop';\r\n if (width >= breakpoints.laptop) return 'laptop';\r\n if (width >= breakpoints.tablet) return 'tablet';\r\n return 'mobile';\r\n}\r\n\r\nconst DEFAULT_BREAKPOINTS: Record<string, number> = {\r\n mobile: 0,\r\n tablet: 768,\r\n laptop: 1024,\r\n desktop: 1440,\r\n wide: 1920,\r\n ultra: 2560,\r\n};\r\n\r\n/** Breakpoints used for responsive size resolution. Use with getScreen() and getTokens({ screen }). */\r\nexport function getBreakpoints(): Record<string, number> {\r\n return (foundationBreakpoints as any)?.breakpoints ?\r\n { ...(foundationBreakpoints as any).breakpoints }\r\n : { ...DEFAULT_BREAKPOINTS };\r\n}\r\n\r\nconst BREAKPOINT_KEYS = ['mobile', 'tablet', 'laptop', 'desktop', 'wide', 'ultra'];\r\n\r\nfunction parsePxToNumber(value: unknown): number | undefined {\r\n if (typeof value === 'number' && !Number.isNaN(value)) return value;\r\n if (typeof value === 'string') {\r\n const num = parseInt(value.replace(/px$/i, ''), 10);\r\n return Number.isNaN(num) ? undefined : num;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction pickBreakpoint(obj: any, screen: ScreenKey): any {\r\n const chosen = obj?.[screen];\r\n if (chosen !== undefined) return chosen;\r\n for (const bp of BREAKPOINT_KEYS) {\r\n if (obj?.[bp] !== undefined) return obj[bp];\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction resolveResponsiveSizes(rawSizes: any, screen: ScreenKey): any {\r\n const resolved: any = {};\r\n\r\n for (const sizeKey in rawSizes) {\r\n const sizeToken = rawSizes[sizeKey];\r\n\r\n // Non-responsive tokens (like control.radius)\r\n if (!sizeToken.mobile && typeof sizeToken !== 'object') {\r\n resolved[sizeKey] = sizeToken;\r\n continue;\r\n }\r\n\r\n // Top-level breakpoint keys: pick one for current screen\r\n const hasBreakpoint = BREAKPOINT_KEYS.some((bp) => sizeToken[bp]);\r\n if (hasBreakpoint) {\r\n resolved[sizeKey] = pickBreakpoint(sizeToken, screen);\r\n continue;\r\n }\r\n\r\n // Nested responsive (e.g. radio: { sm: { mobile, tablet, ... }, md: {...}, lg: {...} })\r\n const firstVal = sizeToken?.sm ?? sizeToken?.md ?? sizeToken?.lg;\r\n const nestedHasBreakpoint =\r\n firstVal && typeof firstVal === 'object' && BREAKPOINT_KEYS.some((bp) => firstVal[bp]);\r\n if (nestedHasBreakpoint && sizeToken && typeof sizeToken === 'object') {\r\n resolved[sizeKey] = {};\r\n for (const variantKey of Object.keys(sizeToken)) {\r\n const chosen = pickBreakpoint(sizeToken[variantKey], screen);\r\n if (chosen !== undefined) resolved[sizeKey][variantKey] = chosen;\r\n }\r\n continue;\r\n }\r\n\r\n // Variant-only, no breakpoints — keep as-is\r\n resolved[sizeKey] = sizeToken;\r\n }\r\n\r\n return resolved;\r\n}\r\n\r\n/* ---------------------------------- */\r\n/* Foundation tokens */\r\n/* ---------------------------------- */\r\n\r\nconst foundation = {\r\n size: foundationSize.size,\r\n spacing: foundationSpacing.spacing,\r\n radius: foundationRadius.radius,\r\n colors: foundationColors.colors,\r\n typography: foundationTypography.typography,\r\n opacity: foundationOpacity.opacity,\r\n};\r\n\r\nconst allTokens = { ...foundation };\r\n\r\n/* ---------------------------------- */\r\n/* Semantic base */\r\n/* ---------------------------------- */\r\n\r\nconst semanticBase = {\r\n color: resolveTokenReferences(semanticColor.color, allTokens),\r\n spacing: resolveTokenReferences(semanticSpacing.spacing, allTokens),\r\n typography: resolveTokenReferences(semanticTypography.typography, allTokens),\r\n opacity: resolveTokenReferences(semanticOpacity.opacity, allTokens),\r\n};\r\n\r\n/* ---------------------------------- */\r\n/* Brand theme resolution (brand + mode) */\r\n/* ---------------------------------- */\r\n\r\nconst resolvedBrandThemes = {\r\n firebird: {\r\n light: {\r\n color: resolveTokenReferences(firebirdLight.color || {}, allTokens),\r\n spacing: resolveTokenReferences((firebirdLight as any).spacing || {}, allTokens),\r\n typography: resolveTokenReferences((firebirdLight as any).typography || {}, allTokens),\r\n },\r\n dark: {\r\n color: resolveTokenReferences(firebirdDark.color || {}, allTokens),\r\n spacing: resolveTokenReferences((firebirdDark as any).spacing || {}, allTokens),\r\n typography: resolveTokenReferences((firebirdDark as any).typography || {}, allTokens),\r\n },\r\n },\r\n cpc: {\r\n light: {\r\n color: resolveTokenReferences((cpcLight as any).color || {}, allTokens),\r\n spacing: resolveTokenReferences((cpcLight as any).spacing || {}, allTokens),\r\n typography: resolveTokenReferences((cpcLight as any).typography || {}, allTokens),\r\n },\r\n dark: {\r\n color: resolveTokenReferences(cpcDark.color || {}, allTokens),\r\n spacing: resolveTokenReferences((cpcDark as any).spacing || {}, allTokens),\r\n typography: resolveTokenReferences((cpcDark as any).typography || {}, allTokens),\r\n },\r\n },\r\n};\r\n\r\n/* ---------------------------------- */\r\n/* Active brand */\r\n/* ---------------------------------- */\r\n\r\nexport const activeBrandKey: BrandKey =\r\n (typeof process !== 'undefined' &&\r\n (process as any).env?.DESIGN_SYSTEM_BRAND === 'firebird' &&\r\n 'firebird') ||\r\n 'cpc';\r\n\r\n/* ---------------------------------- */\r\n/* Main resolver */\r\n/* ---------------------------------- */\r\n\r\nexport function getTokens(options: GetTokensOptions = {}): ResolvedTokens {\r\n const brand: BrandKey = options.brand ?? activeBrandKey;\r\n const mode: ThemeMode = options.mode ?? 'light';\r\n\r\n // Step 1: semantic base\r\n let mergedSemanticColor = { ...semanticBase.color };\r\n let mergedSemanticSpacing = { ...semanticBase.spacing };\r\n let mergedSemanticTypography = { ...semanticBase.typography };\r\n\r\n // Step 2: apply brand-specific theme (brand + mode)\r\n const brandTheme = resolvedBrandThemes[brand]?.[mode] || {};\r\n mergedSemanticColor = deepMerge(mergedSemanticColor, brandTheme.color || {});\r\n mergedSemanticSpacing = deepMerge(mergedSemanticSpacing, brandTheme.spacing || {});\r\n mergedSemanticTypography = deepMerge(mergedSemanticTypography, brandTheme.typography || {});\r\n\r\n const mergedSemanticOpacity = semanticBase.opacity;\r\n\r\n const mergedSemantic = {\r\n color: mergedSemanticColor,\r\n spacing: mergedSemanticSpacing,\r\n typography: mergedSemanticTypography,\r\n opacity: mergedSemanticOpacity,\r\n };\r\n\r\n /* ---------- resolve semantic size ---------- */\r\n\r\n const semanticContext = {\r\n ...allTokens,\r\n ...mergedSemantic,\r\n spacing: {\r\n ...(allTokens.spacing || {}),\r\n ...(mergedSemantic.spacing || {}),\r\n },\r\n };\r\n\r\n // Resolve raw semantic size tokens\r\n const rawSemanticSize = resolveTokenReferences(semanticSize.size, semanticContext);\r\n\r\n // Get breakpoints\r\n const breakpoints = (foundationBreakpoints as any)?.breakpoints || {\r\n mobile: 0,\r\n tablet: 768,\r\n laptop: 1024,\r\n desktop: 1440,\r\n wide: 1920,\r\n ultra: 2560,\r\n };\r\n\r\n // Use provided screen or detect from window (client-only; SSR falls back to \"desktop\")\r\n const screen = options.screen ?? getScreen(breakpoints);\r\n\r\n // Resolve responsive sizes\r\n const resolvedSemanticSize = resolveResponsiveSizes(rawSemanticSize, screen);\r\n\r\n const resolvedSemanticField = resolveTokenReferences(semanticField.field, {\r\n ...semanticContext,\r\n semantic: {\r\n ...mergedSemantic,\r\n size: resolvedSemanticSize,\r\n },\r\n });\r\n\r\n const finalSemantic = {\r\n ...mergedSemantic,\r\n size: resolvedSemanticSize,\r\n field: resolvedSemanticField,\r\n };\r\n\r\n /* ---------- resolve components ---------- */\r\n\r\n const componentContext = {\r\n ...allTokens,\r\n ...finalSemantic,\r\n typography: {\r\n ...(allTokens.typography || {}),\r\n ...(finalSemantic.typography || {}),\r\n },\r\n semantic: finalSemantic,\r\n spacing: {\r\n ...(allTokens.spacing || {}),\r\n ...(finalSemantic.spacing || {}),\r\n },\r\n size: {\r\n ...(allTokens.size || {}),\r\n ...(finalSemantic.size || {}),\r\n },\r\n };\r\n\r\n const resolvedComponents = {\r\n button: resolveTokenReferences(componentButton.button, componentContext),\r\n input: resolveTokenReferences(componentInput.input, componentContext),\r\n textfield: resolveTokenReferences(componentTextfield.textfield, componentContext),\r\n card: resolveTokenReferences(componentCard.card, componentContext),\r\n statCard: resolveTokenReferences(componentCard.statCard, componentContext),\r\n checkbox: resolveTokenReferences(componentCheckbox.checkbox, componentContext),\r\n selectscroll: resolveTokenReferences(componentSelectScroll.selectscroll, componentContext),\r\n selector: resolveTokenReferences(componentSelector.selector, componentContext),\r\n datepicker: resolveTokenReferences(componentDatePicker.datepicker, componentContext),\r\n field: resolveTokenReferences(componentField.field, componentContext),\r\n radio: resolveTokenReferences(componentRadio.radio, componentContext),\r\n pagination: resolveTokenReferences(componentPagination.pagination, componentContext),\r\n closebutton: resolveTokenReferences(componentCloseButton.closebutton, componentContext),\r\n avatar: resolveTokenReferences(componentAvatar.avatar, componentContext),\r\n tabs: resolveTokenReferences(componentTabs.tabs, componentContext),\r\n subTabs: resolveTokenReferences(componentSubTabs.subTabs, componentContext),\r\n menu: resolveTokenReferences(componentMenu.menu, componentContext),\r\n fileupload: resolveTokenReferences(componentFileUpload.fileupload, componentContext),\r\n uploaddropzone: resolveTokenReferences(\r\n componentUploadDropzone.uploaddropzone,\r\n componentContext\r\n ),\r\n phonefield: resolveTokenReferences(componentPhonefield.phonefield, componentContext),\r\n badge: resolveTokenReferences(componentBadge.badge, componentContext),\r\n filterpopover: resolveTokenReferences(componentFilterPopover.filterpopover, componentContext),\r\n togglebutton: resolveTokenReferences(componentToggleButton.toggleButton, componentContext),\r\n switch: resolveTokenReferences(componentSwitch.switch, componentContext),\r\n breadcrumb: resolveTokenReferences(componentBreadcrumb.breadcrumb, componentContext),\r\n loader: resolveTokenReferences(componentLoader.loader, componentContext),\r\n datatable: resolveTokenReferences(componentDataTable.datatable, componentContext),\r\n modal: resolveTokenReferences(componentModal.modal, componentContext),\r\n drawer: resolveTokenReferences(componentDrawer.drawer, componentContext),\r\n progress: resolveTokenReferences(componentProgress.progress, componentContext),\r\n skeleton: resolveTokenReferences(componentSkeleton.skeleton, componentContext),\r\n ipwhitelistfield: resolveTokenReferences(\r\n componentIpWhitelistField.ipwhitelistfield,\r\n componentContext\r\n ),\r\n stepper: resolveTokenReferences(componentStepper.stepper, componentContext),\r\n accordion: resolveTokenReferences(componentAccordion.accordion, componentContext),\r\n reportcard: resolveTokenReferences(componentReportCard.reportcard, componentContext),\r\n };\r\n\r\n return {\r\n foundation,\r\n semantic: finalSemantic,\r\n components: resolvedComponents,\r\n brands: resolvedBrandThemes,\r\n };\r\n}\r\n\r\n/* ---------------------------------- */\r\n/* Default export tokens */\r\n/* ---------------------------------- */\r\n\r\nconst defaultResolved = getTokens({\r\n brand: activeBrandKey,\r\n mode: 'light',\r\n});\r\n\r\nconst components = defaultResolved.components;\r\nconst mergedSemantic = defaultResolved.semantic;\r\nconst mergedSemanticColor = defaultResolved.semantic.color;\r\n\r\nexport const tokens = {\r\n foundation: defaultResolved.foundation,\r\n semantic: defaultResolved.semantic,\r\n components: defaultResolved.components,\r\n brands: defaultResolved.brands,\r\n};\r\n\r\n// Export individual token categories for convenience\r\nexport { foundation };\r\nexport { components };\r\nexport { mergedSemantic as semantic };\r\nexport { resolvedBrandThemes as brands };\r\n\r\n// Legacy exports for backward compatibility\r\nexport const COLORS = {\r\n primary: mergedSemanticColor.primary?.default ?? semanticBase.color.primary.default,\r\n secondary: semanticBase.color.secondary.default,\r\n ghostText: mergedSemanticColor.primary?.default ?? semanticBase.color.primary.default,\r\n ghostHover: semanticBase.color.primary.light,\r\n};\r\n\r\n// Button token types (re-export from button.ts)\r\nexport type {\r\n ButtonVariant,\r\n ButtonSize,\r\n ButtonShape,\r\n ButtonColorToken,\r\n ButtonSizeToken,\r\n} from './button';\r\n\r\n// Button tokens (resolved: component → semantic → brand → foundation; no hardcoded values)\r\nexport const BUTTON_COLORS: Record<ButtonVariant, ButtonColorToken> = {\r\n blue: {\r\n background: components.button.variant.blue.background,\r\n color: components.button.variant.blue.color,\r\n hover: components.button.variant.blue.hover.background,\r\n border: components.button.variant.blue.border,\r\n },\r\n red: {\r\n background: components.button.variant.red.background,\r\n color: components.button.variant.red.color,\r\n hover: components.button.variant.red.hover.background,\r\n border: components.button.variant.red.border,\r\n },\r\n grey: {\r\n background: components.button.variant.grey.background,\r\n color: components.button.variant.grey.color,\r\n hover: components.button.variant.grey.hover.background,\r\n border: components.button.variant.grey.border,\r\n },\r\n};\r\n\r\nexport const BUTTON_SIZES: Record<ButtonSize, ButtonSizeToken> = {\r\n sm: {\r\n width: components.button.size.sm.width,\r\n height: components.button.size.sm.height,\r\n padding: components.button.size.sm.padding,\r\n fontSize: parseInt(components.button.size.sm.fontSize),\r\n borderRadius: components.button.size.sm.borderRadius,\r\n contentGap: parseInt(String((components.button.size.sm as any)?.contentGap ?? '5'), 10),\r\n },\r\n md: {\r\n width: components.button.size.md.width,\r\n height: components.button.size.md.height,\r\n padding: components.button.size.md.padding,\r\n fontSize: parseInt(components.button.size.md.fontSize),\r\n borderRadius: components.button.size.md.borderRadius,\r\n contentGap: parseInt(String((components.button.size.md as any)?.contentGap ?? '8'), 10),\r\n },\r\n lg: {\r\n width: components.button.size.lg.width,\r\n height: components.button.size.lg.height,\r\n padding: components.button.size.lg.padding,\r\n fontSize: parseInt(components.button.size.lg.fontSize),\r\n borderRadius: components.button.size.lg.borderRadius,\r\n contentGap: parseInt(String((components.button.size.lg as any)?.contentGap ?? '12'), 10),\r\n },\r\n};\r\n\r\nexport const BUTTON_SHAPES: Record<ButtonShape, string | number> = {\r\n rounded: components.button.shape.rounded,\r\n square: components.button.shape.square,\r\n pill: components.button.shape.pill,\r\n};\r\n\r\nexport interface ButtonTokensFromResolved {\r\n colors: Record<ButtonVariant, ButtonColorToken>;\r\n sizes: Record<ButtonSize, ButtonSizeToken>;\r\n}\r\n\r\n/** Build Button tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when theme mode (light/dark) or brand changes. */\r\nexport function getButtonTokensFromResolved(resolved: ResolvedTokens): ButtonTokensFromResolved {\r\n const btn = resolved.components?.button as Record<string, any> | undefined;\r\n if (!btn?.variant || !btn?.size) {\r\n return { colors: BUTTON_COLORS, sizes: BUTTON_SIZES };\r\n }\r\n const v = btn.variant;\r\n const s = btn.size;\r\n const blue = v.blue ?? {};\r\n const red = v.red ?? {};\r\n const grey = v.grey ?? {};\r\n const sm = s.sm ?? {};\r\n const md = s.md ?? {};\r\n const lg = s.lg ?? {};\r\n return {\r\n colors: {\r\n blue: {\r\n background: blue.background ?? BUTTON_COLORS.blue.background,\r\n color: blue.color ?? BUTTON_COLORS.blue.color,\r\n hover: blue.hover?.background ?? BUTTON_COLORS.blue.hover,\r\n hoverTextColor: blue.hover?.color,\r\n border: blue.border ?? BUTTON_COLORS.blue.border,\r\n },\r\n red: {\r\n background: red.background ?? BUTTON_COLORS.red.background,\r\n color: red.color ?? BUTTON_COLORS.red.color,\r\n hover: red.hover?.background ?? BUTTON_COLORS.red.hover,\r\n hoverTextColor: red.hover?.color,\r\n border: red.border ?? BUTTON_COLORS.red.border,\r\n },\r\n grey: {\r\n background: grey.background ?? BUTTON_COLORS.grey.background,\r\n color: grey.color ?? BUTTON_COLORS.grey.color,\r\n hover: grey.hover?.background ?? BUTTON_COLORS.grey.hover,\r\n hoverTextColor: grey.hover?.color,\r\n border: grey.border ?? BUTTON_COLORS.grey.border,\r\n },\r\n },\r\n sizes: {\r\n sm: {\r\n width: sm.width,\r\n height: sm.height ?? BUTTON_SIZES.sm.height,\r\n padding: sm.padding ?? BUTTON_SIZES.sm.padding,\r\n fontSize:\r\n typeof sm.fontSize === 'number' ?\r\n sm.fontSize\r\n : parseInt(String(sm.fontSize ?? BUTTON_SIZES.sm.fontSize), 10),\r\n borderRadius: sm.borderRadius ?? BUTTON_SIZES.sm.borderRadius,\r\n contentGap: parseInt(\r\n String((sm as any)?.contentGap ?? BUTTON_SIZES.sm.contentGap ?? 5),\r\n 10\r\n ),\r\n },\r\n md: {\r\n width: md.width,\r\n height: md.height ?? BUTTON_SIZES.md.height,\r\n padding: md.padding ?? BUTTON_SIZES.md.padding,\r\n fontSize:\r\n typeof md.fontSize === 'number' ?\r\n md.fontSize\r\n : parseInt(String(md.fontSize ?? BUTTON_SIZES.md.fontSize), 10),\r\n borderRadius: md.borderRadius ?? BUTTON_SIZES.md.borderRadius,\r\n contentGap: parseInt(\r\n String((md as any)?.contentGap ?? BUTTON_SIZES.md.contentGap ?? 8),\r\n 10\r\n ),\r\n },\r\n lg: {\r\n width: lg.width,\r\n height: lg.height ?? BUTTON_SIZES.lg.height,\r\n padding: lg.padding ?? BUTTON_SIZES.lg.padding,\r\n fontSize:\r\n typeof lg.fontSize === 'number' ?\r\n lg.fontSize\r\n : parseInt(String(lg.fontSize ?? BUTTON_SIZES.lg.fontSize), 10),\r\n borderRadius: lg.borderRadius ?? BUTTON_SIZES.lg.borderRadius,\r\n contentGap: parseInt(\r\n String((lg as any)?.contentGap ?? BUTTON_SIZES.lg.contentGap ?? 12),\r\n 10\r\n ),\r\n },\r\n },\r\n };\r\n}\r\n\r\n// CloseButton token types (aligned with components/closebutton.json)\r\nexport type CloseButtonVariant = 'filled' | 'outline';\r\nexport type CloseButtonSize = 'xs' | 'sm' | 'md' | 'lg';\r\n\r\n// CloseButton tokens (legacy format; from components/closebutton.json). Flattened like TextFieldTokens.\r\nexport interface CloseButtonTokens {\r\n sizeXs: string;\r\n sizeSm: string;\r\n sizeMd: string;\r\n sizeLg: string;\r\n paddingXs: string;\r\n paddingSm: string;\r\n paddingMd: string;\r\n paddingLg: string;\r\n iconSizeXs: string;\r\n iconSizeSm: string;\r\n iconSizeMd: string;\r\n iconSizeLg: string;\r\n borderRadiusXs: string;\r\n borderRadiusSm: string;\r\n borderRadiusMd: string;\r\n borderRadiusLg: string;\r\n filledBackground: string;\r\n filledBackgroundWhite: string;\r\n filledColor: string;\r\n filledHoverBackground: string;\r\n filledHoverBackgroundWhite: string;\r\n filledHoverColor: string;\r\n filledBorder: string;\r\n outlineBackground: string;\r\n outlineColor: string;\r\n outlineBorder: string;\r\n outlineHoverBorder: string;\r\n outlineHoverColor: string;\r\n disabledOpacity: string;\r\n}\r\n\r\nconst closeBtn = components.closebutton;\r\nconst closeBtnSize = closeBtn.size;\r\nexport const CLOSEBUTTON_TOKENS: CloseButtonTokens = {\r\n sizeXs: closeBtnSize.xs.size,\r\n sizeSm: closeBtnSize.sm.size,\r\n sizeMd: closeBtnSize.md.size,\r\n sizeLg: closeBtnSize.lg.size,\r\n paddingXs: closeBtnSize.xs.padding,\r\n paddingSm: closeBtnSize.sm.padding,\r\n paddingMd: closeBtnSize.md.padding,\r\n paddingLg: closeBtnSize.lg.padding,\r\n iconSizeXs: closeBtnSize.xs.iconSize,\r\n iconSizeSm: closeBtnSize.sm.iconSize,\r\n iconSizeMd: closeBtnSize.md.iconSize,\r\n iconSizeLg: closeBtnSize.lg.iconSize,\r\n borderRadiusXs: closeBtnSize.xs.borderRadius,\r\n borderRadiusSm: closeBtnSize.sm.borderRadius,\r\n borderRadiusMd: closeBtnSize.md.borderRadius,\r\n borderRadiusLg: closeBtnSize.lg.borderRadius,\r\n filledBackground: closeBtn.variant.filled.background,\r\n filledBackgroundWhite:\r\n closeBtn.variant.filled.backgroundWhite ?? closeBtn.variant.filled.background,\r\n filledColor: closeBtn.variant.filled.color,\r\n filledHoverBackground:\r\n closeBtn.variant.filled.hover?.background ?? closeBtn.variant.filled.background,\r\n filledHoverBackgroundWhite:\r\n closeBtn.variant.filled.hover?.backgroundWhite ??\r\n closeBtn.variant.filled.backgroundWhite ??\r\n closeBtn.variant.filled.background,\r\n filledHoverColor: closeBtn.variant.filled.hover?.color ?? closeBtn.variant.filled.color,\r\n filledBorder: closeBtn.variant.filled.border,\r\n outlineBackground: closeBtn.variant.outline.background,\r\n outlineColor: closeBtn.variant.outline.color,\r\n outlineBorder: closeBtn.variant.outline.border,\r\n outlineHoverBorder: closeBtn.variant.outline.hover?.border ?? closeBtn.variant.outline.border,\r\n outlineHoverColor: closeBtn.variant.outline.hover?.color ?? closeBtn.variant.outline.color,\r\n disabledOpacity: closeBtn.disabled.opacity,\r\n};\r\n\r\nconst defaultCloseButtonTokens = CLOSEBUTTON_TOKENS;\r\n\r\n/** Build CloseButton tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when screen/brand/mode changes. */\r\nexport function getCloseButtonTokensFromResolved(resolved: ResolvedTokens): CloseButtonTokens {\r\n const closeBtnResolved = resolved.components?.closebutton;\r\n if (!closeBtnResolved?.size) return defaultCloseButtonTokens;\r\n const xs = closeBtnResolved.size.xs as any;\r\n const sm = closeBtnResolved.size.sm as any;\r\n const md = closeBtnResolved.size.md as any;\r\n const lg = closeBtnResolved.size.lg as any;\r\n const filled = closeBtnResolved.variant?.filled;\r\n const outline = closeBtnResolved.variant?.outline;\r\n return {\r\n sizeXs: xs?.size ?? defaultCloseButtonTokens.sizeXs,\r\n sizeSm: sm?.size ?? defaultCloseButtonTokens.sizeSm,\r\n sizeMd: md?.size ?? defaultCloseButtonTokens.sizeMd,\r\n sizeLg: lg?.size ?? defaultCloseButtonTokens.sizeLg,\r\n paddingXs: xs?.padding ?? defaultCloseButtonTokens.paddingXs,\r\n paddingSm: sm?.padding ?? defaultCloseButtonTokens.paddingSm,\r\n paddingMd: md?.padding ?? defaultCloseButtonTokens.paddingMd,\r\n paddingLg: lg?.padding ?? defaultCloseButtonTokens.paddingLg,\r\n iconSizeXs: xs?.iconSize ?? defaultCloseButtonTokens.iconSizeXs,\r\n iconSizeSm: sm?.iconSize ?? defaultCloseButtonTokens.iconSizeSm,\r\n iconSizeMd: md?.iconSize ?? defaultCloseButtonTokens.iconSizeMd,\r\n iconSizeLg: lg?.iconSize ?? defaultCloseButtonTokens.iconSizeLg,\r\n borderRadiusXs: xs?.borderRadius ?? defaultCloseButtonTokens.borderRadiusXs,\r\n borderRadiusSm: sm?.borderRadius ?? defaultCloseButtonTokens.borderRadiusSm,\r\n borderRadiusMd: md?.borderRadius ?? defaultCloseButtonTokens.borderRadiusMd,\r\n borderRadiusLg: lg?.borderRadius ?? defaultCloseButtonTokens.borderRadiusLg,\r\n filledBackground: filled?.background ?? defaultCloseButtonTokens.filledBackground,\r\n filledBackgroundWhite:\r\n filled?.backgroundWhite ?? defaultCloseButtonTokens.filledBackgroundWhite,\r\n filledColor: filled?.color ?? defaultCloseButtonTokens.filledColor,\r\n filledHoverBackground:\r\n filled?.hover?.background ?? defaultCloseButtonTokens.filledHoverBackground,\r\n filledHoverBackgroundWhite:\r\n filled?.hover?.backgroundWhite ?? defaultCloseButtonTokens.filledHoverBackgroundWhite,\r\n filledHoverColor: filled?.hover?.color ?? defaultCloseButtonTokens.filledHoverColor,\r\n filledBorder: filled?.border ?? defaultCloseButtonTokens.filledBorder,\r\n outlineBackground: outline?.background ?? defaultCloseButtonTokens.outlineBackground,\r\n outlineColor: outline?.color ?? defaultCloseButtonTokens.outlineColor,\r\n outlineBorder: outline?.border ?? defaultCloseButtonTokens.outlineBorder,\r\n outlineHoverBorder: outline?.hover?.border ?? defaultCloseButtonTokens.outlineHoverBorder,\r\n outlineHoverColor: outline?.hover?.color ?? defaultCloseButtonTokens.outlineHoverColor,\r\n disabledOpacity: closeBtnResolved.disabled?.opacity ?? defaultCloseButtonTokens.disabledOpacity,\r\n };\r\n}\r\n\r\n// Avatar token types (aligned with components/avatar.json)\r\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl';\r\n\r\nexport interface AvatarTokens {\r\n background: string;\r\n textColor: string;\r\n iconColor: string;\r\n placeholderBackground: string;\r\n placeholderShape: string;\r\n shapeCircle: string;\r\n shapeSquare: string;\r\n sizeXs: string;\r\n sizeSm: string;\r\n sizeMd: string;\r\n sizeLg: string;\r\n sizeXl: string;\r\n sizeXxl: string;\r\n sizeXxxl: string;\r\n fontSizeXs: string;\r\n fontSizeSm: string;\r\n fontSizeMd: string;\r\n fontSizeLg: string;\r\n fontSizeXl: string;\r\n fontSizeXxl: string;\r\n fontSizeXxxl: string;\r\n iconSizeXs: string;\r\n iconSizeSm: string;\r\n iconSizeMd: string;\r\n iconSizeLg: string;\r\n iconSizeXl: string;\r\n iconSizeXxl: string;\r\n iconSizeXxxl: string;\r\n}\r\n\r\nconst avatarComp = components.avatar;\r\nconst avatarSize = avatarComp.size;\r\nconst avatarFontSize = avatarComp.fontSize;\r\nconst avatarIconSize = avatarComp.iconSize;\r\nexport const AVATAR_TOKENS: AvatarTokens = {\r\n background: avatarComp.background,\r\n textColor: avatarComp.textColor,\r\n iconColor: avatarComp.iconColor,\r\n placeholderBackground: avatarComp.placeholderBackground,\r\n placeholderShape: avatarComp.placeholderShape,\r\n shapeCircle: avatarComp.shape?.circle ?? '9999px',\r\n shapeSquare: avatarComp.shape?.square ?? '2px',\r\n sizeXs: avatarSize?.xs ?? '20px',\r\n sizeSm: avatarSize?.sm ?? '28px',\r\n sizeMd: avatarSize?.md ?? '36px',\r\n sizeLg: avatarSize?.lg ?? '44px',\r\n sizeXl: avatarSize?.xl ?? '60px',\r\n sizeXxl: avatarSize?.xxl ?? '76px',\r\n sizeXxxl: avatarSize?.xxxl ?? '116px',\r\n fontSizeXs: avatarFontSize?.xs ?? '12px',\r\n fontSizeSm: avatarFontSize?.sm ?? '14px',\r\n fontSizeMd: avatarFontSize?.md ?? '16px',\r\n fontSizeLg: avatarFontSize?.lg ?? '18px',\r\n fontSizeXl: avatarFontSize?.xl ?? '20px',\r\n fontSizeXxl: avatarFontSize?.xxl ?? '24px',\r\n fontSizeXxxl: avatarFontSize?.xxxl ?? '30px',\r\n iconSizeXs: avatarIconSize?.xs ?? '12px',\r\n iconSizeSm: avatarIconSize?.sm ?? '14px',\r\n iconSizeMd: avatarIconSize?.md ?? '16px',\r\n iconSizeLg: avatarIconSize?.lg ?? '18px',\r\n iconSizeXl: avatarIconSize?.xl ?? '20px',\r\n iconSizeXxl: avatarIconSize?.xxl ?? '24px',\r\n iconSizeXxxl: avatarIconSize?.xxxl ?? '30px',\r\n};\r\n\r\nconst defaultAvatarTokens = AVATAR_TOKENS;\r\n\r\n/** Build Avatar tokens from resolved tokens (e.g. from useTokens()). */\r\nexport function getAvatarTokensFromResolved(resolved: ResolvedTokens): AvatarTokens {\r\n const a = resolved.components?.avatar;\r\n if (!a) return defaultAvatarTokens;\r\n const size = a.size ?? {};\r\n const fontSize = a.fontSize ?? {};\r\n const iconSize = a.iconSize ?? {};\r\n return {\r\n background: a.background ?? defaultAvatarTokens.background,\r\n textColor: a.textColor ?? defaultAvatarTokens.textColor,\r\n iconColor: a.iconColor ?? defaultAvatarTokens.iconColor,\r\n placeholderBackground: a.placeholderBackground ?? defaultAvatarTokens.placeholderBackground,\r\n placeholderShape: a.placeholderShape ?? defaultAvatarTokens.placeholderShape,\r\n shapeCircle: a.shape?.circle ?? defaultAvatarTokens.shapeCircle,\r\n shapeSquare: a.shape?.square ?? defaultAvatarTokens.shapeSquare,\r\n sizeXs: size.xs ?? defaultAvatarTokens.sizeXs,\r\n sizeSm: size.sm ?? defaultAvatarTokens.sizeSm,\r\n sizeMd: size.md ?? defaultAvatarTokens.sizeMd,\r\n sizeLg: size.lg ?? defaultAvatarTokens.sizeLg,\r\n sizeXl: size.xl ?? defaultAvatarTokens.sizeXl,\r\n sizeXxl: size.xxl ?? defaultAvatarTokens.sizeXxl,\r\n sizeXxxl: size.xxxl ?? defaultAvatarTokens.sizeXxxl,\r\n fontSizeXs: fontSize.xs ?? defaultAvatarTokens.fontSizeXs,\r\n fontSizeSm: fontSize.sm ?? defaultAvatarTokens.fontSizeSm,\r\n fontSizeMd: fontSize.md ?? defaultAvatarTokens.fontSizeMd,\r\n fontSizeLg: fontSize.lg ?? defaultAvatarTokens.fontSizeLg,\r\n fontSizeXl: fontSize.xl ?? defaultAvatarTokens.fontSizeXl,\r\n fontSizeXxl: fontSize.xxl ?? defaultAvatarTokens.fontSizeXxl,\r\n fontSizeXxxl: fontSize.xxxl ?? defaultAvatarTokens.fontSizeXxxl,\r\n iconSizeXs: iconSize.xs ?? defaultAvatarTokens.iconSizeXs,\r\n iconSizeSm: iconSize.sm ?? defaultAvatarTokens.iconSizeSm,\r\n iconSizeMd: iconSize.md ?? defaultAvatarTokens.iconSizeMd,\r\n iconSizeLg: iconSize.lg ?? defaultAvatarTokens.iconSizeLg,\r\n iconSizeXl: iconSize.xl ?? defaultAvatarTokens.iconSizeXl,\r\n iconSizeXxl: iconSize.xxl ?? defaultAvatarTokens.iconSizeXxl,\r\n iconSizeXxxl: iconSize.xxxl ?? defaultAvatarTokens.iconSizeXxxl,\r\n };\r\n}\r\n\r\n// Tabs token types (aligned with components/tabs.json)\r\n// Figma node 52-10796: active tab = teal; inactive tab = white (#FFFFFF) background\r\nexport type TabsSize = 'sm' | 'md' | 'lg';\r\n\r\nexport interface TabsSizeToken {\r\n height: string;\r\n padding: string;\r\n fontSize: number;\r\n borderRadius: string;\r\n fontWeight: string;\r\n}\r\n\r\nexport interface TabsTokens {\r\n activeBackground: string;\r\n activeColor: string;\r\n inactiveColor: string;\r\n inactiveBackground: string;\r\n inactiveBackgroundWhite: string;\r\n containerBackground: string;\r\n containerBackgroundWhite: string;\r\n borderRadius: string;\r\n containerBorderRadius: string;\r\n paddingX: string;\r\n paddingY: string;\r\n gap: string;\r\n fontSize: string;\r\n fontWeight: string;\r\n}\r\n\r\nconst tabsComp = components.tabs;\r\nexport const TABS_TOKENS: TabsTokens = {\r\n activeBackground: tabsComp?.activeBackground ?? '#00545e',\r\n activeColor: tabsComp?.activeColor ?? '#ffffff',\r\n inactiveColor: tabsComp?.inactiveColor ?? '#6b7280',\r\n inactiveBackground: tabsComp?.inactiveBackground ?? '#FFFFFF',\r\n inactiveBackgroundWhite:\r\n tabsComp?.inactiveBackgroundWhite ?? tabsComp?.inactiveBackground ?? '#FFFFFF',\r\n containerBackground: tabsComp?.containerBackground ?? '#FFFFFF',\r\n containerBackgroundWhite:\r\n tabsComp?.containerBackgroundWhite ?? tabsComp?.containerBackground ?? '#FFFFFF',\r\n borderRadius: tabsComp?.borderRadius ?? '12px',\r\n containerBorderRadius: tabsComp?.containerBorderRadius ?? '12px',\r\n paddingX: tabsComp?.paddingX ?? '12px',\r\n paddingY: tabsComp?.paddingY ?? '6px',\r\n gap: tabsComp?.gap ?? '8px',\r\n fontSize: tabsComp?.fontSize ?? '14px',\r\n fontWeight: tabsComp?.fontWeight ?? '500',\r\n};\r\n\r\nexport const TABS_SIZES: Record<TabsSize, TabsSizeToken> = {\r\n sm: {\r\n height: tabsComp?.size?.sm?.height ?? '32px',\r\n padding: tabsComp?.size?.sm?.padding ?? '6px 12px',\r\n fontSize: parseInt(tabsComp?.size?.sm?.fontSize ?? '12'),\r\n borderRadius: tabsComp?.size?.sm?.borderRadius ?? '12px',\r\n fontWeight: tabsComp?.size?.sm?.fontWeight ?? '500',\r\n },\r\n md: {\r\n height: tabsComp?.size?.md?.height ?? '40px',\r\n padding: tabsComp?.size?.md?.padding ?? '8px 16px',\r\n fontSize: parseInt(tabsComp?.size?.md?.fontSize ?? '14'),\r\n borderRadius: tabsComp?.size?.md?.borderRadius ?? '12px',\r\n fontWeight: tabsComp?.size?.md?.fontWeight ?? '500',\r\n },\r\n lg: {\r\n height: tabsComp?.size?.lg?.height ?? '48px',\r\n padding: tabsComp?.size?.lg?.padding ?? '12px 24px',\r\n fontSize: parseInt(tabsComp?.size?.lg?.fontSize ?? '16'),\r\n borderRadius: tabsComp?.size?.lg?.borderRadius ?? '12px',\r\n fontWeight: tabsComp?.size?.lg?.fontWeight ?? '500',\r\n },\r\n};\r\n\r\nexport interface TabsTokensFromResolved {\r\n tokens: TabsTokens;\r\n sizes: Record<TabsSize, TabsSizeToken>;\r\n}\r\n\r\nconst defaultTabsTokens = TABS_TOKENS;\r\nconst defaultTabsSizes = TABS_SIZES;\r\n\r\n/** Build Tabs tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when theme mode (light/dark) or brand changes. */\r\nexport function getTabsTokensFromResolved(resolved: ResolvedTokens): TabsTokensFromResolved {\r\n const t = resolved.components?.tabs as Record<string, any> | undefined;\r\n if (!t) {\r\n return { tokens: defaultTabsTokens, sizes: defaultTabsSizes };\r\n }\r\n const sm = t.size?.sm ?? {};\r\n const md = t.size?.md ?? {};\r\n const lg = t.size?.lg ?? {};\r\n return {\r\n tokens: {\r\n activeBackground: t.activeBackground ?? defaultTabsTokens.activeBackground,\r\n activeColor: t.activeColor ?? defaultTabsTokens.activeColor,\r\n inactiveColor: t.inactiveColor ?? defaultTabsTokens.inactiveColor,\r\n inactiveBackground: t.inactiveBackground ?? defaultTabsTokens.inactiveBackground,\r\n inactiveBackgroundWhite:\r\n t.inactiveBackgroundWhite ??\r\n t.inactiveBackground ??\r\n defaultTabsTokens.inactiveBackgroundWhite,\r\n containerBackground: t.containerBackground ?? defaultTabsTokens.containerBackground,\r\n containerBackgroundWhite:\r\n t.containerBackgroundWhite ??\r\n t.containerBackground ??\r\n defaultTabsTokens.containerBackgroundWhite,\r\n borderRadius: t.borderRadius ?? defaultTabsTokens.borderRadius,\r\n containerBorderRadius: t.containerBorderRadius ?? defaultTabsTokens.containerBorderRadius,\r\n paddingX: t.paddingX ?? defaultTabsTokens.paddingX,\r\n paddingY: t.paddingY ?? defaultTabsTokens.paddingY,\r\n gap: t.gap ?? defaultTabsTokens.gap,\r\n fontSize: t.fontSize ?? defaultTabsTokens.fontSize,\r\n fontWeight: t.fontWeight ?? defaultTabsTokens.fontWeight,\r\n },\r\n sizes: {\r\n sm: {\r\n height: sm.height ?? defaultTabsSizes.sm.height,\r\n padding: sm.padding ?? defaultTabsSizes.sm.padding,\r\n fontSize:\r\n typeof sm.fontSize === 'number' ?\r\n sm.fontSize\r\n : parseInt(String(sm.fontSize ?? defaultTabsSizes.sm.fontSize), 10),\r\n borderRadius: sm.borderRadius ?? defaultTabsSizes.sm.borderRadius,\r\n fontWeight: sm.fontWeight ?? defaultTabsSizes.sm.fontWeight,\r\n },\r\n md: {\r\n height: md.height ?? defaultTabsSizes.md.height,\r\n padding: md.padding ?? defaultTabsSizes.md.padding,\r\n fontSize:\r\n typeof md.fontSize === 'number' ?\r\n md.fontSize\r\n : parseInt(String(md.fontSize ?? defaultTabsSizes.md.fontSize), 10),\r\n borderRadius: md.borderRadius ?? defaultTabsSizes.md.borderRadius,\r\n fontWeight: md.fontWeight ?? defaultTabsSizes.md.fontWeight,\r\n },\r\n lg: {\r\n height: lg.height ?? defaultTabsSizes.lg.height,\r\n padding: lg.padding ?? defaultTabsSizes.lg.padding,\r\n fontSize:\r\n typeof lg.fontSize === 'number' ?\r\n lg.fontSize\r\n : parseInt(String(lg.fontSize ?? defaultTabsSizes.lg.fontSize), 10),\r\n borderRadius: lg.borderRadius ?? defaultTabsSizes.lg.borderRadius,\r\n fontWeight: lg.fontWeight ?? defaultTabsSizes.lg.fontWeight,\r\n },\r\n },\r\n };\r\n}\r\n\r\n// SubTabs token types (aligned with components/subtabs.json)\r\nexport type SubTabsSize = 'sm' | 'md';\r\n\r\nexport interface SubTabsSizeToken {\r\n height: string;\r\n padding: string;\r\n fontSize: string;\r\n borderRadius: string;\r\n iconSize: string;\r\n fontWeight: string;\r\n activeFontWeight: string;\r\n}\r\n\r\nexport interface SubTabsTokens {\r\n gap: string;\r\n trackPadding: string;\r\n trackBorderRadius: string;\r\n trackBackground: string;\r\n trackBorder: string;\r\n fontWeight: string;\r\n activeFontWeight: string;\r\n colors: Record<string, Record<string, string>>;\r\n}\r\n\r\nconst subTabsComp = (components as Record<string, any>).subTabs;\r\nexport const SUB_TABS_TOKENS: SubTabsTokens = {\r\n gap: subTabsComp?.gap ?? '8px',\r\n trackPadding: subTabsComp?.trackPadding ?? '6px',\r\n trackBorderRadius: subTabsComp?.trackBorderRadius ?? '12px',\r\n trackBackground: subTabsComp?.trackBackground ?? '#F3F5F6',\r\n trackBorder: subTabsComp?.trackBorder ?? '#E5E7EB',\r\n fontWeight: subTabsComp?.fontWeight ?? '500',\r\n activeFontWeight: subTabsComp?.activeFontWeight ?? '600',\r\n colors: subTabsComp?.colors ?? {},\r\n};\r\n\r\nexport const SUB_TABS_SIZES: Record<SubTabsSize, SubTabsSizeToken> = {\r\n sm: {\r\n height: subTabsComp?.size?.sm?.height ?? '32px',\r\n padding: subTabsComp?.size?.sm?.padding ?? '6px 12px',\r\n fontSize: subTabsComp?.size?.sm?.fontSize ?? '12px',\r\n borderRadius: subTabsComp?.size?.sm?.borderRadius ?? '8px',\r\n iconSize: subTabsComp?.size?.sm?.iconSize ?? '22px',\r\n fontWeight: subTabsComp?.fontWeight ?? '500',\r\n activeFontWeight: subTabsComp?.activeFontWeight ?? '600',\r\n },\r\n md: {\r\n height: subTabsComp?.size?.md?.height ?? '40px',\r\n padding: subTabsComp?.size?.md?.padding ?? '8px 16px',\r\n fontSize: subTabsComp?.size?.md?.fontSize ?? '14px',\r\n borderRadius: subTabsComp?.size?.md?.borderRadius ?? '8px',\r\n iconSize: subTabsComp?.size?.md?.iconSize ?? '26px',\r\n fontWeight: subTabsComp?.fontWeight ?? '500',\r\n activeFontWeight: subTabsComp?.activeFontWeight ?? '600',\r\n },\r\n};\r\n\r\nexport interface SubTabsTokensFromResolved {\r\n tokens: SubTabsTokens;\r\n sizes: Record<SubTabsSize, SubTabsSizeToken>;\r\n}\r\n\r\nconst defaultSubTabsTokens = SUB_TABS_TOKENS;\r\nconst defaultSubTabsSizes = SUB_TABS_SIZES;\r\n\r\nexport function getSubTabsTokensFromResolved(resolved: ResolvedTokens): SubTabsTokensFromResolved {\r\n const t = resolved.components?.subTabs as Record<string, any> | undefined;\r\n if (!t) {\r\n return { tokens: defaultSubTabsTokens, sizes: defaultSubTabsSizes };\r\n }\r\n\r\n const sm = t.size?.sm ?? {};\r\n const md = t.size?.md ?? {};\r\n\r\n return {\r\n tokens: {\r\n gap: t.gap ?? defaultSubTabsTokens.gap,\r\n trackPadding: t.trackPadding ?? defaultSubTabsTokens.trackPadding,\r\n trackBorderRadius: t.trackBorderRadius ?? defaultSubTabsTokens.trackBorderRadius,\r\n trackBackground: t.trackBackground ?? defaultSubTabsTokens.trackBackground,\r\n trackBorder: t.trackBorder ?? defaultSubTabsTokens.trackBorder,\r\n fontWeight: t.fontWeight ?? defaultSubTabsTokens.fontWeight,\r\n activeFontWeight: t.activeFontWeight ?? defaultSubTabsTokens.activeFontWeight,\r\n colors: t.colors ?? defaultSubTabsTokens.colors,\r\n },\r\n sizes: {\r\n sm: {\r\n height: sm.height ?? defaultSubTabsSizes.sm.height,\r\n padding: sm.padding ?? defaultSubTabsSizes.sm.padding,\r\n fontSize: sm.fontSize ?? defaultSubTabsSizes.sm.fontSize,\r\n borderRadius: sm.borderRadius ?? defaultSubTabsSizes.sm.borderRadius,\r\n iconSize: sm.iconSize ?? defaultSubTabsSizes.sm.iconSize,\r\n fontWeight: t.fontWeight ?? defaultSubTabsSizes.sm.fontWeight,\r\n activeFontWeight: t.activeFontWeight ?? defaultSubTabsSizes.sm.activeFontWeight,\r\n },\r\n md: {\r\n height: md.height ?? defaultSubTabsSizes.md.height,\r\n padding: md.padding ?? defaultSubTabsSizes.md.padding,\r\n fontSize: md.fontSize ?? defaultSubTabsSizes.md.fontSize,\r\n borderRadius: md.borderRadius ?? defaultSubTabsSizes.md.borderRadius,\r\n iconSize: md.iconSize ?? defaultSubTabsSizes.md.iconSize,\r\n fontWeight: t.fontWeight ?? defaultSubTabsSizes.md.fontWeight,\r\n activeFontWeight: t.activeFontWeight ?? defaultSubTabsSizes.md.activeFontWeight,\r\n },\r\n },\r\n };\r\n}\r\n\r\n/* ---------------------------------- */\r\n/* Breadcrumb tokens */\r\n/* ---------------------------------- */\r\n\r\nexport interface BreadcrumbTokens {\r\n itemColor: string;\r\n currentColor: string;\r\n separatorColor: string;\r\n fontFamily: string;\r\n fontSize: string;\r\n fontWeight: string;\r\n itemFontWeight: string;\r\n lineHeight: string;\r\n gap: string;\r\n}\r\n\r\nconst breadcrumbComp = components.breadcrumb as Record<string, any> | undefined;\r\nexport const BREADCRUMB_TOKENS: BreadcrumbTokens = {\r\n itemColor: breadcrumbComp?.itemColor ?? '#1f1f1f',\r\n currentColor: breadcrumbComp?.currentColor ?? '#1f1f1f',\r\n separatorColor: breadcrumbComp?.separatorColor ?? '#1f1f1f',\r\n fontFamily: breadcrumbComp?.fontFamily ?? '\"Inter\", sans-serif',\r\n fontSize: breadcrumbComp?.fontSize ?? '14px',\r\n fontWeight: breadcrumbComp?.fontWeight ?? '400',\r\n itemFontWeight: breadcrumbComp?.itemFontWeight ?? '600',\r\n lineHeight: breadcrumbComp?.lineHeight ?? '24px',\r\n gap: breadcrumbComp?.gap ?? '8px',\r\n};\r\n\r\nconst defaultBreadcrumbTokens = BREADCRUMB_TOKENS;\r\n\r\n/** Build Breadcrumb tokens from resolved tokens. */\r\nexport function getBreadcrumbTokensFromResolved(resolved: ResolvedTokens): BreadcrumbTokens {\r\n const t = resolved.components?.breadcrumb as Record<string, any> | undefined;\r\n if (!t) return defaultBreadcrumbTokens;\r\n return {\r\n itemColor: t.itemColor ?? defaultBreadcrumbTokens.itemColor,\r\n currentColor: t.currentColor ?? defaultBreadcrumbTokens.currentColor,\r\n separatorColor: t.separatorColor ?? defaultBreadcrumbTokens.separatorColor,\r\n fontFamily: t.fontFamily ?? defaultBreadcrumbTokens.fontFamily,\r\n fontSize: t.fontSize ?? defaultBreadcrumbTokens.fontSize,\r\n fontWeight: t.fontWeight ?? defaultBreadcrumbTokens.fontWeight,\r\n itemFontWeight: t.itemFontWeight ?? defaultBreadcrumbTokens.itemFontWeight,\r\n lineHeight: t.lineHeight ?? defaultBreadcrumbTokens.lineHeight,\r\n gap: t.gap ?? defaultBreadcrumbTokens.gap,\r\n };\r\n}\r\n\r\nexport interface ToggleButtonTokens {\r\n gap: string;\r\n fontFamily: string;\r\n lineHeight: string;\r\n fontWeight: string | number;\r\n activeFontWeight: string | number;\r\n sizeSmHeight: string;\r\n sizeSmPaddingX: string;\r\n sizeSmPaddingY: string;\r\n sizeSmFontSize: string;\r\n sizeSmBorderRadius: string;\r\n sizeSmBorderWidth: string;\r\n sizeMdHeight: string;\r\n sizeMdPaddingX: string;\r\n sizeMdPaddingY: string;\r\n sizeMdFontSize: string;\r\n sizeMdBorderRadius: string;\r\n sizeMdBorderWidth: string;\r\n sizeLgHeight: string;\r\n sizeLgPaddingX: string;\r\n sizeLgPaddingY: string;\r\n sizeLgFontSize: string;\r\n sizeLgBorderRadius: string;\r\n sizeLgBorderWidth: string;\r\n inactive: {\r\n background: string;\r\n backgroundWhite: string;\r\n color: string;\r\n border: string;\r\n };\r\n active: {\r\n background: string;\r\n color: string;\r\n border: string;\r\n };\r\n}\r\n\r\nconst toggleButtonComp = components.togglebutton as Record<string, any> | undefined;\r\nexport const TOGGLE_BUTTON_TOKENS: ToggleButtonTokens = {\r\n gap: toggleButtonComp?.gap ?? '4px',\r\n fontFamily: toggleButtonComp?.button?.fontFamily ?? '\"Inter\", sans-serif',\r\n lineHeight: toggleButtonComp?.button?.lineHeight ?? '18px',\r\n fontWeight: toggleButtonComp?.button?.fontWeight ?? '500',\r\n activeFontWeight: toggleButtonComp?.button?.activeFontWeight ?? '600',\r\n sizeSmHeight: toggleButtonComp?.size?.sm?.height ?? '28px',\r\n sizeSmPaddingX: toggleButtonComp?.size?.sm?.paddingX ?? '8px',\r\n sizeSmPaddingY: toggleButtonComp?.size?.sm?.paddingY ?? '4px',\r\n sizeSmFontSize: toggleButtonComp?.size?.sm?.fontSize ?? '12px',\r\n sizeSmBorderRadius: toggleButtonComp?.size?.sm?.borderRadius ?? '8px',\r\n sizeSmBorderWidth: toggleButtonComp?.size?.sm?.borderWidth ?? '1px',\r\n sizeMdHeight: toggleButtonComp?.size?.md?.height ?? '40px',\r\n sizeMdPaddingX: toggleButtonComp?.size?.md?.paddingX ?? '12px',\r\n sizeMdPaddingY: toggleButtonComp?.size?.md?.paddingY ?? '6px',\r\n sizeMdFontSize: toggleButtonComp?.size?.md?.fontSize ?? '14px',\r\n sizeMdBorderRadius: toggleButtonComp?.size?.md?.borderRadius ?? '12px',\r\n sizeMdBorderWidth: toggleButtonComp?.size?.md?.borderWidth ?? '1px',\r\n sizeLgHeight: toggleButtonComp?.size?.lg?.height ?? '48px',\r\n sizeLgPaddingX: toggleButtonComp?.size?.lg?.paddingX ?? '16px',\r\n sizeLgPaddingY: toggleButtonComp?.size?.lg?.paddingY ?? '8px',\r\n sizeLgFontSize: toggleButtonComp?.size?.lg?.fontSize ?? '16px',\r\n sizeLgBorderRadius: toggleButtonComp?.size?.lg?.borderRadius ?? '12px',\r\n sizeLgBorderWidth: toggleButtonComp?.size?.lg?.borderWidth ?? '1px',\r\n inactive: {\r\n background: toggleButtonComp?.inactive?.background ?? '#ffffff',\r\n backgroundWhite:\r\n toggleButtonComp?.inactive?.backgroundWhite ??\r\n toggleButtonComp?.inactive?.background ??\r\n '#ffffff',\r\n color: toggleButtonComp?.inactive?.color ?? '#1f1f1f',\r\n border: toggleButtonComp?.inactive?.border ?? '#c8d0d5',\r\n },\r\n active: {\r\n background: toggleButtonComp?.active?.background ?? '#00545e',\r\n color: toggleButtonComp?.active?.color ?? '#ffffff',\r\n border: toggleButtonComp?.active?.border ?? '#00545e',\r\n },\r\n};\r\n\r\nconst defaultToggleButtonTokens = TOGGLE_BUTTON_TOKENS;\r\n\r\n/** Build ToggleButton tokens from resolved tokens (mode + brand). */\r\nexport function getToggleButtonTokensFromResolved(resolved: ResolvedTokens): ToggleButtonTokens {\r\n const t = resolved.components?.togglebutton as Record<string, any> | undefined;\r\n if (!t) return defaultToggleButtonTokens;\r\n return {\r\n gap: t.gap ?? defaultToggleButtonTokens.gap,\r\n fontFamily: t.button?.fontFamily ?? defaultToggleButtonTokens.fontFamily,\r\n lineHeight: t.button?.lineHeight ?? defaultToggleButtonTokens.lineHeight,\r\n fontWeight: t.button?.fontWeight ?? defaultToggleButtonTokens.fontWeight,\r\n activeFontWeight: t.button?.activeFontWeight ?? defaultToggleButtonTokens.activeFontWeight,\r\n sizeSmHeight: t.size?.sm?.height ?? defaultToggleButtonTokens.sizeSmHeight,\r\n sizeSmPaddingX: t.size?.sm?.paddingX ?? defaultToggleButtonTokens.sizeSmPaddingX,\r\n sizeSmPaddingY: t.size?.sm?.paddingY ?? defaultToggleButtonTokens.sizeSmPaddingY,\r\n sizeSmFontSize: t.size?.sm?.fontSize ?? defaultToggleButtonTokens.sizeSmFontSize,\r\n sizeSmBorderRadius: t.size?.sm?.borderRadius ?? defaultToggleButtonTokens.sizeSmBorderRadius,\r\n sizeSmBorderWidth: t.size?.sm?.borderWidth ?? defaultToggleButtonTokens.sizeSmBorderWidth,\r\n sizeMdHeight: t.size?.md?.height ?? defaultToggleButtonTokens.sizeMdHeight,\r\n sizeMdPaddingX: t.size?.md?.paddingX ?? defaultToggleButtonTokens.sizeMdPaddingX,\r\n sizeMdPaddingY: t.size?.md?.paddingY ?? defaultToggleButtonTokens.sizeMdPaddingY,\r\n sizeMdFontSize: t.size?.md?.fontSize ?? defaultToggleButtonTokens.sizeMdFontSize,\r\n sizeMdBorderRadius: t.size?.md?.borderRadius ?? defaultToggleButtonTokens.sizeMdBorderRadius,\r\n sizeMdBorderWidth: t.size?.md?.borderWidth ?? defaultToggleButtonTokens.sizeMdBorderWidth,\r\n sizeLgHeight: t.size?.lg?.height ?? defaultToggleButtonTokens.sizeLgHeight,\r\n sizeLgPaddingX: t.size?.lg?.paddingX ?? defaultToggleButtonTokens.sizeLgPaddingX,\r\n sizeLgPaddingY: t.size?.lg?.paddingY ?? defaultToggleButtonTokens.sizeLgPaddingY,\r\n sizeLgFontSize: t.size?.lg?.fontSize ?? defaultToggleButtonTokens.sizeLgFontSize,\r\n sizeLgBorderRadius: t.size?.lg?.borderRadius ?? defaultToggleButtonTokens.sizeLgBorderRadius,\r\n sizeLgBorderWidth: t.size?.lg?.borderWidth ?? defaultToggleButtonTokens.sizeLgBorderWidth,\r\n inactive: {\r\n background: t.inactive?.background ?? defaultToggleButtonTokens.inactive.background,\r\n backgroundWhite:\r\n t.inactive?.backgroundWhite ??\r\n t.inactive?.background ??\r\n defaultToggleButtonTokens.inactive.backgroundWhite,\r\n color: t.inactive?.color ?? defaultToggleButtonTokens.inactive.color,\r\n border: t.inactive?.border ?? defaultToggleButtonTokens.inactive.border,\r\n },\r\n active: {\r\n background: t.active?.background ?? defaultToggleButtonTokens.active.background,\r\n color: t.active?.color ?? defaultToggleButtonTokens.active.color,\r\n border: t.active?.border ?? defaultToggleButtonTokens.active.border,\r\n },\r\n };\r\n}\r\n\r\nexport interface SwitchTokens {\r\n sizeSmWidth: string;\r\n sizeSmHeight: string;\r\n sizeSmThumbSize: string;\r\n sizeSmTrackPadding: string;\r\n sizeSmRadius: string;\r\n sizeSmBorderWidth: string;\r\n sizeMdWidth: string;\r\n sizeMdHeight: string;\r\n sizeMdThumbSize: string;\r\n sizeMdTrackPadding: string;\r\n sizeMdRadius: string;\r\n sizeMdBorderWidth: string;\r\n sizeLgWidth: string;\r\n sizeLgHeight: string;\r\n sizeLgThumbSize: string;\r\n sizeLgTrackPadding: string;\r\n sizeLgRadius: string;\r\n sizeLgBorderWidth: string;\r\n trackBackground: string;\r\n trackBorder: string;\r\n trackBackgroundActive: string;\r\n trackBorderActive: string;\r\n thumbBackground: string;\r\n thumbBackgroundActive: string;\r\n labelFontSize: string;\r\n labelFontWeight: number;\r\n labelColor: string;\r\n labelFontFamily: string;\r\n labelMarginBottom: string;\r\n captionFontSize: string;\r\n captionTextColor: string;\r\n switchHelperTextFontSize: string;\r\n switchHelperTextColor: string;\r\n}\r\n\r\nconst switchComp = components.switch as Record<string, any> | undefined;\r\nexport const SWITCH_TOKENS: SwitchTokens = {\r\n sizeSmWidth: switchComp?.size?.sm?.width ?? '52px',\r\n sizeSmHeight: switchComp?.size?.sm?.height ?? '32px',\r\n sizeSmThumbSize: switchComp?.size?.sm?.thumbSize ?? '28px',\r\n sizeSmTrackPadding: switchComp?.size?.sm?.trackPadding ?? '2px',\r\n sizeSmRadius: switchComp?.size?.sm?.radius ?? '9999px',\r\n sizeSmBorderWidth: switchComp?.size?.sm?.borderWidth ?? '1px',\r\n sizeMdWidth: switchComp?.size?.md?.width ?? '52px',\r\n sizeMdHeight: switchComp?.size?.md?.height ?? '32px',\r\n sizeMdThumbSize: switchComp?.size?.md?.thumbSize ?? '28px',\r\n sizeMdTrackPadding: switchComp?.size?.md?.trackPadding ?? '2px',\r\n sizeMdRadius: switchComp?.size?.md?.radius ?? '9999px',\r\n sizeMdBorderWidth: switchComp?.size?.md?.borderWidth ?? '1px',\r\n sizeLgWidth: switchComp?.size?.lg?.width ?? '52px',\r\n sizeLgHeight: switchComp?.size?.lg?.height ?? '32px',\r\n sizeLgThumbSize: switchComp?.size?.lg?.thumbSize ?? '28px',\r\n sizeLgTrackPadding: switchComp?.size?.lg?.trackPadding ?? '2px',\r\n sizeLgRadius: switchComp?.size?.lg?.radius ?? '9999px',\r\n sizeLgBorderWidth: switchComp?.size?.lg?.borderWidth ?? '1px',\r\n trackBackground: switchComp?.track?.background ?? '#ffffff',\r\n trackBorder: switchComp?.track?.border ?? '#1f1f1f',\r\n trackBackgroundActive: switchComp?.track?.backgroundActive ?? '#00545e',\r\n trackBorderActive: switchComp?.track?.borderActive ?? '#00545e',\r\n thumbBackground: switchComp?.thumb?.background ?? '#1f1f1f',\r\n thumbBackgroundActive: switchComp?.thumb?.backgroundActive ?? '#ffffff',\r\n labelFontSize: switchComp?.label?.fontSize ?? '14px',\r\n labelFontWeight: switchComp?.label?.fontWeight ?? 500,\r\n labelColor: switchComp?.label?.color ?? '#1f1f1f',\r\n labelFontFamily: switchComp?.label?.fontFamily ?? 'Inter',\r\n labelMarginBottom: switchComp?.label?.marginBottom ?? '8px',\r\n captionFontSize: switchComp?.caption?.fontSize ?? '12px',\r\n captionTextColor: switchComp?.caption?.textColor ?? '#1f1f1f',\r\n switchHelperTextFontSize: switchComp?.helper?.textFontSize ?? '12px',\r\n switchHelperTextColor: switchComp?.helper?.textColor ?? '#1f1f1f',\r\n};\r\n\r\nconst defaultSwitchTokens = SWITCH_TOKENS;\r\n\r\n/** Build Switch tokens from resolved tokens (mode + brand). */\r\nexport function getSwitchTokensFromResolved(resolved: ResolvedTokens): SwitchTokens {\r\n const t = resolved.components?.switch as Record<string, any> | undefined;\r\n if (!t) return defaultSwitchTokens;\r\n return {\r\n sizeSmWidth: t.size?.sm?.width ?? defaultSwitchTokens.sizeSmWidth,\r\n sizeSmHeight: t.size?.sm?.height ?? defaultSwitchTokens.sizeSmHeight,\r\n sizeSmThumbSize: t.size?.sm?.thumbSize ?? defaultSwitchTokens.sizeSmThumbSize,\r\n sizeSmTrackPadding: t.size?.sm?.trackPadding ?? defaultSwitchTokens.sizeSmTrackPadding,\r\n sizeSmRadius: t.size?.sm?.radius ?? defaultSwitchTokens.sizeSmRadius,\r\n sizeSmBorderWidth: t.size?.sm?.borderWidth ?? defaultSwitchTokens.sizeSmBorderWidth,\r\n sizeMdWidth: t.size?.md?.width ?? defaultSwitchTokens.sizeMdWidth,\r\n sizeMdHeight: t.size?.md?.height ?? defaultSwitchTokens.sizeMdHeight,\r\n sizeMdThumbSize: t.size?.md?.thumbSize ?? defaultSwitchTokens.sizeMdThumbSize,\r\n sizeMdTrackPadding: t.size?.md?.trackPadding ?? defaultSwitchTokens.sizeMdTrackPadding,\r\n sizeMdRadius: t.size?.md?.radius ?? defaultSwitchTokens.sizeMdRadius,\r\n sizeMdBorderWidth: t.size?.md?.borderWidth ?? defaultSwitchTokens.sizeMdBorderWidth,\r\n sizeLgWidth: t.size?.lg?.width ?? defaultSwitchTokens.sizeLgWidth,\r\n sizeLgHeight: t.size?.lg?.height ?? defaultSwitchTokens.sizeLgHeight,\r\n sizeLgThumbSize: t.size?.lg?.thumbSize ?? defaultSwitchTokens.sizeLgThumbSize,\r\n sizeLgTrackPadding: t.size?.lg?.trackPadding ?? defaultSwitchTokens.sizeLgTrackPadding,\r\n sizeLgRadius: t.size?.lg?.radius ?? defaultSwitchTokens.sizeLgRadius,\r\n sizeLgBorderWidth: t.size?.lg?.borderWidth ?? defaultSwitchTokens.sizeLgBorderWidth,\r\n trackBackground: t.track?.background ?? defaultSwitchTokens.trackBackground,\r\n trackBorder: t.track?.border ?? defaultSwitchTokens.trackBorder,\r\n trackBackgroundActive: t.track?.backgroundActive ?? defaultSwitchTokens.trackBackgroundActive,\r\n trackBorderActive: t.track?.borderActive ?? defaultSwitchTokens.trackBorderActive,\r\n thumbBackground: t.thumb?.background ?? defaultSwitchTokens.thumbBackground,\r\n thumbBackgroundActive: t.thumb?.backgroundActive ?? defaultSwitchTokens.thumbBackgroundActive,\r\n labelFontSize: t.label?.fontSize ?? defaultSwitchTokens.labelFontSize,\r\n labelFontWeight: t.label?.fontWeight ?? defaultSwitchTokens.labelFontWeight,\r\n labelColor: t.label?.color ?? defaultSwitchTokens.labelColor,\r\n labelFontFamily: t.label?.fontFamily ?? defaultSwitchTokens.labelFontFamily,\r\n labelMarginBottom: t.label?.marginBottom ?? defaultSwitchTokens.labelMarginBottom,\r\n captionFontSize: t.caption?.fontSize ?? defaultSwitchTokens.captionFontSize,\r\n captionTextColor: t.caption?.textColor ?? defaultSwitchTokens.captionTextColor,\r\n switchHelperTextFontSize:\r\n t.helper?.textFontSize ?? defaultSwitchTokens.switchHelperTextFontSize,\r\n switchHelperTextColor: t.helper?.textColor ?? defaultSwitchTokens.switchHelperTextColor,\r\n };\r\n}\r\n\r\n// Menu token types (aligned with components/menu.json).\r\n// Use getMenuTokensFromResolved(resolved) when screen/theme changes (e.g. useTokens()).\r\nexport interface MenuTokens {\r\n minWidth: string;\r\n borderRadius: string;\r\n padding: string;\r\n marginTop: string;\r\n itemPaddingY: string;\r\n itemPaddingX: string;\r\n itemIconLabelGap: string;\r\n itemBorderRadius: string;\r\n fontFamily: string;\r\n fontSize: number;\r\n fontWeight: number;\r\n lineHeight: string;\r\n textColor: string;\r\n selectedBackground: string;\r\n hoverBackground: string;\r\n background: string;\r\n listMaxHeight: string;\r\n}\r\n\r\nconst menuComp = components.menu as Record<string, unknown> | undefined;\r\nexport const MENU_TOKENS: MenuTokens = {\r\n minWidth: (menuComp?.minWidth as string) ?? '180px',\r\n borderRadius: (menuComp?.borderRadius as string) ?? '16px',\r\n padding: (menuComp?.padding as string) ?? '12px',\r\n marginTop: (menuComp?.marginTop as string) ?? '12px',\r\n itemPaddingY: (menuComp?.itemPaddingY as string) ?? '12px',\r\n itemPaddingX: (menuComp?.itemPaddingX as string) ?? '16px',\r\n itemIconLabelGap: (menuComp?.itemIconLabelGap as string) ?? '12px',\r\n itemBorderRadius: (menuComp?.itemBorderRadius as string) ?? '6px',\r\n fontFamily: (menuComp?.fontFamily as string) ?? '\"Inter\", sans-serif',\r\n fontSize: parseInt(String(menuComp?.fontSize ?? 16), 10),\r\n fontWeight:\r\n typeof menuComp?.fontWeight === 'string' ?\r\n parseInt(menuComp.fontWeight as string, 10)\r\n : Number(menuComp?.fontWeight ?? 500),\r\n lineHeight: (menuComp?.lineHeight as string) ?? '24px',\r\n textColor: (menuComp?.textColor as string) ?? '#374151',\r\n selectedBackground: (menuComp?.selectedBackground as string) ?? '#F3F4F6',\r\n hoverBackground: (menuComp?.hoverBackground as string) ?? '#F9FAFB',\r\n background: (menuComp?.background as string) ?? '#FFFFFF',\r\n listMaxHeight: (menuComp?.listMaxHeight as string) ?? '320px',\r\n};\r\n\r\n/** Build Menu tokens from resolved tokens (e.g. from useTokens()). Use when screen/theme changes so menu picks responsive size.menu.* */\r\nexport function getMenuTokensFromResolved(resolved: ResolvedTokens): MenuTokens {\r\n const m = resolved.components?.menu as Record<string, unknown> | undefined;\r\n if (!m) return MENU_TOKENS;\r\n return {\r\n minWidth: (m.minWidth as string) ?? MENU_TOKENS.minWidth,\r\n borderRadius: (m.borderRadius as string) ?? MENU_TOKENS.borderRadius,\r\n padding: (m.padding as string) ?? MENU_TOKENS.padding,\r\n marginTop: (m.marginTop as string) ?? MENU_TOKENS.marginTop,\r\n itemPaddingY: (m.itemPaddingY as string) ?? MENU_TOKENS.itemPaddingY,\r\n itemPaddingX: (m.itemPaddingX as string) ?? MENU_TOKENS.itemPaddingX,\r\n itemIconLabelGap: (m.itemIconLabelGap as string) ?? MENU_TOKENS.itemIconLabelGap,\r\n itemBorderRadius: (m.itemBorderRadius as string) ?? MENU_TOKENS.itemBorderRadius,\r\n fontFamily: (m.fontFamily as string) ?? MENU_TOKENS.fontFamily,\r\n fontSize: parseInt(String(m.fontSize ?? MENU_TOKENS.fontSize), 10),\r\n fontWeight:\r\n typeof m.fontWeight === 'string' ?\r\n parseInt(m.fontWeight, 10)\r\n : Number(m.fontWeight ?? MENU_TOKENS.fontWeight),\r\n lineHeight: (m.lineHeight as string) ?? MENU_TOKENS.lineHeight,\r\n textColor: (m.textColor as string) ?? MENU_TOKENS.textColor,\r\n selectedBackground: (m.selectedBackground as string) ?? MENU_TOKENS.selectedBackground,\r\n hoverBackground: (m.hoverBackground as string) ?? MENU_TOKENS.hoverBackground,\r\n background: (m.background as string) ?? MENU_TOKENS.background,\r\n listMaxHeight: (m.listMaxHeight as string) ?? MENU_TOKENS.listMaxHeight,\r\n };\r\n}\r\n\r\n// TextField tokens (legacy format; from components/textfield.json).\r\n// Textfield border is picked from outline.default/active/error, which resolve from color.border\r\n// (and color.error), so brands can override textfield border via brand.color.border in brand.json.\r\nexport interface TextFieldTokens {\r\n height: string;\r\n heightSm: string;\r\n heightMd: string;\r\n heightLg: string;\r\n borderRadius: string;\r\n borderRadiusSm: string;\r\n borderRadiusMd: string;\r\n borderRadiusLg: string;\r\n fontFamily: string;\r\n fontSize: number;\r\n fontSizeSm: number;\r\n fontSizeMd: number;\r\n fontSizeLg: number;\r\n labelFontSize: number;\r\n labelFontWeight: number;\r\n labelMarginBottom: string;\r\n activeLabelFontSize: number;\r\n helperFontSize: number;\r\n labelColor: string;\r\n activeLabelColor: string;\r\n inputTextColor: string;\r\n placeholderColor: string;\r\n outlineDefault: string;\r\n outlineActive: string;\r\n outlineError: string;\r\n errorColor: string;\r\n backgroundColor: string;\r\n backgroundColorWhite: string;\r\n disabledOpacity: string;\r\n paddingSm: string;\r\n paddingMd: string;\r\n paddingLg: string;\r\n captionFontSize: number;\r\n captionTextColor: string;\r\n /** Left padding applied to the input when a start/end icon is present. Sourced from spacing.9 (48px). */\r\n iconPaddingLeft: string;\r\n /** Absolute left offset of the start adornment icon. Sourced from spacing.4 (16px). */\r\n iconStartLeft: string;\r\n /** Absolute right offset of the end adornment icon. Sourced from spacing.2 (8px). */\r\n iconEndRight: string;\r\n}\r\n\r\nconst tfSize = components.textfield.size;\r\nexport const TEXT_FIELD_TOKENS: TextFieldTokens = {\r\n height: tfSize.md.height,\r\n heightSm: tfSize.sm.height,\r\n heightMd: tfSize.md.height,\r\n heightLg: tfSize.lg.height,\r\n borderRadius: tfSize.md.borderRadius,\r\n borderRadiusSm: tfSize.sm.borderRadius,\r\n borderRadiusMd: tfSize.md.borderRadius,\r\n borderRadiusLg: tfSize.lg.borderRadius,\r\n fontFamily: components.textfield.fontFamily,\r\n fontSize: parseInt(tfSize.md.fontSize),\r\n fontSizeSm: parseInt(tfSize.sm.fontSize),\r\n fontSizeMd: parseInt(tfSize.md.fontSize),\r\n fontSizeLg: parseInt(tfSize.lg.fontSize),\r\n labelFontSize: parseInt(components.textfield.label.fontSize),\r\n labelFontWeight:\r\n typeof components.textfield.label.fontWeight === 'string' ?\r\n parseInt(components.textfield.label.fontWeight)\r\n : components.textfield.label.fontWeight,\r\n labelMarginBottom: components.textfield.label.marginBottom,\r\n activeLabelFontSize: parseInt(components.textfield.label.activeFontSize),\r\n helperFontSize: parseInt(components.textfield.helper.fontSize),\r\n labelColor: components.textfield.label.color,\r\n activeLabelColor: components.textfield.label.activeColor,\r\n inputTextColor: components.textfield.textColor,\r\n placeholderColor: components.textfield.placeholderColor,\r\n outlineDefault: components.textfield.outline.default,\r\n outlineActive: components.textfield.outline.active,\r\n outlineError: components.textfield.outline.error,\r\n errorColor: components.textfield.error.color,\r\n backgroundColor: components.textfield.background,\r\n backgroundColorWhite: components.textfield.backgroundWhite ?? components.textfield.background,\r\n disabledOpacity: components.textfield.disabledOpacity,\r\n paddingSm: tfSize.sm.padding,\r\n paddingMd: tfSize.md.padding,\r\n paddingLg: tfSize.lg.padding,\r\n captionFontSize: components.textfield.caption.fontSize,\r\n captionTextColor: components.textfield.caption.textColor,\r\n iconPaddingLeft: components.textfield.iconPaddingLeft ?? '48px',\r\n iconStartLeft: (components.textfield.icon as any)?.startLeft ?? '16px',\r\n iconEndRight: (components.textfield.icon as any)?.endRight ?? '8px',\r\n};\r\n\r\nexport interface IpWhitelistFieldTokens {\r\n labelMarginTop: string;\r\n labelColor: string;\r\n requiredColor: string;\r\n requiredGap: string;\r\n rowMarginTop: string;\r\n groupGap: string;\r\n buttonsGap: string;\r\n width: string;\r\n}\r\n\r\nexport const IPWHITELISTFIELD_TOKENS: IpWhitelistFieldTokens = {\r\n labelMarginTop: (components.ipwhitelistfield as any)?.label?.marginTop,\r\n labelColor: (components.ipwhitelistfield as any)?.label?.color,\r\n requiredColor: (components.ipwhitelistfield as any)?.label?.requiredColor,\r\n requiredGap: (components.ipwhitelistfield as any)?.label?.requiredGap,\r\n rowMarginTop: (components.ipwhitelistfield as any)?.row?.marginTop,\r\n groupGap: (components.ipwhitelistfield as any)?.row?.groupGap,\r\n buttonsGap: (components.ipwhitelistfield as any)?.row?.buttonsGap,\r\n width: (components.ipwhitelistfield as any)?.row?.width,\r\n};\r\n\r\nexport function getIpWhitelistFieldTokensFromResolved(\r\n resolved: ResolvedTokens\r\n): IpWhitelistFieldTokens {\r\n const ipw = (resolved.components as any)?.ipwhitelistfield;\r\n if (!ipw) return IPWHITELISTFIELD_TOKENS;\r\n return {\r\n labelMarginTop: ipw.label?.marginTop ?? IPWHITELISTFIELD_TOKENS.labelMarginTop,\r\n labelColor: ipw.label?.color ?? IPWHITELISTFIELD_TOKENS.labelColor,\r\n requiredColor: ipw.label?.requiredColor ?? IPWHITELISTFIELD_TOKENS.requiredColor,\r\n requiredGap: ipw.label?.requiredGap ?? IPWHITELISTFIELD_TOKENS.requiredGap,\r\n rowMarginTop: ipw.row?.marginTop ?? IPWHITELISTFIELD_TOKENS.rowMarginTop,\r\n groupGap: ipw.row?.groupGap ?? IPWHITELISTFIELD_TOKENS.groupGap,\r\n buttonsGap: ipw.row?.buttonsGap ?? IPWHITELISTFIELD_TOKENS.buttonsGap,\r\n width: ipw.row?.otpWidth ?? IPWHITELISTFIELD_TOKENS.width,\r\n };\r\n}\r\n\r\n/** Build TextField tokens from resolved tokens (e.g. from useTokens()). Use this so padding/height update when screen changes. */\r\nexport function getTextFieldTokensFromResolved(resolved: ResolvedTokens): TextFieldTokens {\r\n const tf = resolved.components?.textfield;\r\n if (!tf?.size) return TEXT_FIELD_TOKENS;\r\n const sm = tf.size.sm as any;\r\n const md = tf.size.md as any;\r\n const lg = tf.size.lg as any;\r\n return {\r\n height: md?.height ?? '40px',\r\n heightSm: sm?.height ?? '28px',\r\n heightMd: md?.height ?? '40px',\r\n heightLg: lg?.height ?? '48px',\r\n borderRadius: md?.borderRadius ?? '8px',\r\n borderRadiusSm: sm?.borderRadius ?? '6px',\r\n borderRadiusMd: md?.borderRadius ?? '8px',\r\n borderRadiusLg: lg?.borderRadius ?? '8px',\r\n fontFamily: tf.fontFamily ?? 'inherit',\r\n fontSize: parseInt(String(md?.fontSize ?? 16)),\r\n fontSizeSm: parseInt(String(sm?.fontSize ?? 14)),\r\n fontSizeMd: parseInt(String(md?.fontSize ?? 16)),\r\n fontSizeLg: parseInt(String(lg?.fontSize ?? 18)),\r\n labelFontSize: parseInt(String(tf.label?.fontSize ?? 14)),\r\n labelFontWeight:\r\n typeof tf.label?.fontWeight === 'string' ?\r\n parseInt(tf.label.fontWeight)\r\n : Number(tf.label?.fontWeight ?? 500),\r\n labelMarginBottom: tf.label?.marginBottom ?? '8px',\r\n activeLabelFontSize: parseInt(String(tf.label?.activeFontSize ?? 14)),\r\n helperFontSize: parseInt(String(tf.helper?.fontSize ?? 12)),\r\n labelColor: tf.label?.color ?? '#000',\r\n activeLabelColor: tf.label?.activeColor ?? '#000',\r\n inputTextColor: tf.textColor ?? '#000',\r\n placeholderColor: tf.placeholderColor ?? '#999',\r\n outlineDefault: tf.outline?.default ?? 'transparent',\r\n outlineActive: tf.outline?.active ?? '#0066cc',\r\n outlineError: tf.outline?.error ?? '#c00',\r\n errorColor: tf.error?.color ?? '#c00',\r\n backgroundColor: tf.background ?? '#fff',\r\n backgroundColorWhite: tf.backgroundWhite ?? '#fff',\r\n disabledOpacity: tf.disabledOpacity ?? '0.5',\r\n paddingSm: sm?.padding ?? '4px 8px',\r\n paddingMd: md?.padding ?? '6px 12px',\r\n paddingLg: lg?.padding ?? '8px 16px',\r\n captionFontSize: tf.caption?.fontSize ?? 12,\r\n captionTextColor: tf.caption?.textColor ?? '#000',\r\n iconPaddingLeft: tf.iconPaddingLeft ?? '48px',\r\n iconStartLeft: (tf.icon as any)?.startLeft ?? '16px',\r\n iconEndRight: (tf.icon as any)?.endRight ?? '8px',\r\n };\r\n}\r\n\r\n/** Build Radio tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when screen changes. */\r\nexport function getRadioTokensFromResolved(resolved: ResolvedTokens): RadioTokens {\r\n const radio = resolved.components?.radio;\r\n if (!radio) return RADIO_TOKENS;\r\n return {\r\n headingFontSize: radio.heading?.fontSize ?? RADIO_TOKENS.headingFontSize,\r\n headingFontWeight:\r\n typeof radio.heading?.fontWeight === 'string' ? parseInt(radio.heading.fontWeight)\r\n : typeof radio.heading?.fontWeight === 'number' ? radio.heading.fontWeight\r\n : RADIO_TOKENS.headingFontWeight,\r\n headingFontFamily: radio.heading?.fontFamily ?? RADIO_TOKENS.headingFontFamily,\r\n headingColor: radio.heading?.color ?? RADIO_TOKENS.headingColor,\r\n headingMarginBottom: radio.heading?.marginBottom ?? RADIO_TOKENS.headingMarginBottom,\r\n labelFontSize: radio.label?.fontSize ?? RADIO_TOKENS.labelFontSize,\r\n labelFontWeight:\r\n typeof radio.label?.fontWeight === 'string' ? parseInt(radio.label.fontWeight)\r\n : typeof radio.label?.fontWeight === 'number' ? radio.label.fontWeight\r\n : RADIO_TOKENS.labelFontWeight,\r\n labelFontFamily: radio.label?.fontFamily ?? RADIO_TOKENS.labelFontFamily,\r\n labelColorActive: radio.label?.color?.active ?? RADIO_TOKENS.labelColorActive,\r\n labelColorInactive: radio.label?.color?.inactive ?? RADIO_TOKENS.labelColorInactive,\r\n labelMarginLeft: radio.label?.marginLeft ?? RADIO_TOKENS.labelMarginLeft,\r\n radioSize: radio.radio?.size ?? RADIO_TOKENS.radioSize,\r\n radioDotSize:\r\n (radio.size as { md?: { dotSize?: string } })?.md?.dotSize ??\r\n (radio.size as { sm?: { dotSize?: string } })?.sm?.dotSize ??\r\n RADIO_TOKENS.radioDotSize,\r\n radioBorderRadius: radio.radio?.borderRadius ?? RADIO_TOKENS.radioBorderRadius,\r\n radioStrokeWidth: radio.radio?.strokeWidth ?? RADIO_TOKENS.radioStrokeWidth,\r\n radioColorActive: radio.radio?.color?.active ?? RADIO_TOKENS.radioColorActive,\r\n radioColorInactive: radio.radio?.color?.inactive ?? RADIO_TOKENS.radioColorInactive,\r\n radioColorDot: (radio.radio?.color as { dot?: string })?.dot ?? RADIO_TOKENS.radioColorDot,\r\n radioBackground: radio.radio?.background ?? RADIO_TOKENS.radioBackground,\r\n radioFocusRing:\r\n (radio.radio as { focusRing?: string })?.focusRing ?? RADIO_TOKENS.radioFocusRing,\r\n optionBorderActive:\r\n (radio as { option?: { border?: { active?: string } } })?.option?.border?.active ??\r\n RADIO_TOKENS.optionBorderActive,\r\n optionBorderInactive:\r\n (radio as { option?: { border?: { inactive?: string } } })?.option?.border?.inactive ??\r\n RADIO_TOKENS.optionBorderInactive,\r\n optionBackgroundActive:\r\n (radio as { option?: { background?: { active?: string } } })?.option?.background?.active ??\r\n RADIO_TOKENS.optionBackgroundActive,\r\n optionBackgroundInactive:\r\n (radio as { option?: { background?: { inactive?: string } } })?.option?.background\r\n ?.inactive ?? RADIO_TOKENS.optionBackgroundInactive,\r\n optionTextActive:\r\n (radio as { option?: { text?: { active?: string } } })?.option?.text?.active ??\r\n RADIO_TOKENS.optionTextActive,\r\n optionTextInactive:\r\n (radio as { option?: { text?: { inactive?: string } } })?.option?.text?.inactive ??\r\n RADIO_TOKENS.optionTextInactive,\r\n labelMarginBottom: radio.label?.marginBottom ?? RADIO_TOKENS.labelMarginBottom,\r\n groupGapHorizontal: radio.group?.gapHorizontal ?? RADIO_TOKENS.groupGapHorizontal,\r\n groupGapVertical: radio.group?.gapVertical ?? RADIO_TOKENS.groupGapVertical,\r\n descriptionFontSize: radio.description?.fontSize ?? RADIO_TOKENS.descriptionFontSize,\r\n descriptionColor: radio.description?.color ?? RADIO_TOKENS.descriptionColor,\r\n descriptionFontWeight:\r\n typeof radio.description?.fontWeight === 'string' ? parseInt(radio.description.fontWeight)\r\n : typeof radio.description?.fontWeight === 'number' ? radio.description.fontWeight\r\n : RADIO_TOKENS.descriptionFontWeight,\r\n helperFontSize:\r\n (radio as { helper?: { fontSize?: string } }).helper?.fontSize ?? RADIO_TOKENS.helperFontSize,\r\n helperColor:\r\n (radio as { helper?: { color?: string } }).helper?.color ?? RADIO_TOKENS.helperColor,\r\n helperErrorColor:\r\n (radio as { helper?: { errorColor?: string } }).helper?.errorColor ??\r\n RADIO_TOKENS.helperErrorColor,\r\n helperMarginTop:\r\n (radio as { helper?: { marginTop?: string } }).helper?.marginTop ??\r\n RADIO_TOKENS.helperMarginTop,\r\n };\r\n}\r\n\r\n// Checkbox tokens (legacy format)\r\nexport interface CheckboxTokens {\r\n headingFontSize: string;\r\n headingFontWeight: number;\r\n headingColor: string;\r\n headingMarginBottom: string;\r\n textFontSize: string;\r\n textFontWeight: number;\r\n textColorActive: string;\r\n textColorInactive: string;\r\n textMarginLeft: string;\r\n groupGapHorizontal: string;\r\n groupGapVertical: string;\r\n checkboxColorActive: string;\r\n checkboxColorInactive: string;\r\n checkboxBackgroundInactive: string;\r\n checkedBorderColor: string;\r\n checkboxSizeSm: string;\r\n checkboxSizeMd: string;\r\n checkboxSizeLg: string;\r\n checkboxBorderRadiusSm: string;\r\n checkboxBorderRadiusMd: string;\r\n checkboxBorderRadiusLg: string;\r\n textFontSizeSm: string;\r\n textFontSizeMd: string;\r\n textFontSizeLg: string;\r\n headingFontSizeSm: string;\r\n headingFontSizeMd: string;\r\n headingFontSizeLg: string;\r\n helperTextFontSize: string;\r\n helperTextFontWeight: number;\r\n helperTextColor: string;\r\n helperTextErrorColor: string;\r\n helperTextMarginTop: string;\r\n}\r\n\r\nconst cbSize = components.checkbox.size;\r\nexport const CHECKBOX_TOKENS: CheckboxTokens = {\r\n headingFontSize: components.checkbox.heading.fontSize,\r\n headingFontWeight:\r\n typeof components.checkbox.heading.fontWeight === 'string' ?\r\n parseInt(components.checkbox.heading.fontWeight)\r\n : components.checkbox.heading.fontWeight,\r\n headingColor: components.checkbox.heading.color,\r\n headingMarginBottom: components.checkbox.heading.marginBottom,\r\n textFontSize: components.checkbox.label.fontSize,\r\n textFontWeight:\r\n typeof components.checkbox.label.fontWeight === 'string' ?\r\n parseInt(components.checkbox.label.fontWeight)\r\n : components.checkbox.label.fontWeight,\r\n textColorActive: components.checkbox.label.color.active,\r\n textColorInactive: components.checkbox.label.color.inactive,\r\n textMarginLeft: components.checkbox.label.marginLeft,\r\n groupGapHorizontal: components.checkbox.group.gapHorizontal,\r\n groupGapVertical: components.checkbox.group.gapVertical,\r\n checkboxColorActive: components.checkbox.checkbox.color.active,\r\n checkboxColorInactive: components.checkbox.checkbox.color.inactive,\r\n checkboxBackgroundInactive: components.checkbox.checkbox.background.inactive,\r\n checkedBorderColor: components.checkbox.checkbox.border.checked,\r\n checkboxSizeSm: cbSize.sm.checkboxSize,\r\n checkboxSizeMd: cbSize.md.checkboxSize,\r\n checkboxSizeLg: cbSize.lg.checkboxSize,\r\n checkboxBorderRadiusSm: cbSize.sm.borderRadius,\r\n checkboxBorderRadiusMd: cbSize.md.borderRadius,\r\n checkboxBorderRadiusLg: cbSize.lg.borderRadius,\r\n textFontSizeSm: cbSize.sm.labelFontSize,\r\n textFontSizeMd: cbSize.md.labelFontSize,\r\n textFontSizeLg: cbSize.lg.labelFontSize,\r\n headingFontSizeSm: cbSize.sm.headingFontSize,\r\n headingFontSizeMd: cbSize.md.headingFontSize,\r\n headingFontSizeLg: cbSize.lg.headingFontSize,\r\n helperTextFontSize: components.checkbox.helper.textFontSizes,\r\n helperTextFontWeight: components.checkbox.helper.textFontWeight,\r\n helperTextColor: components.checkbox.helper.textColor,\r\n helperTextErrorColor: components.checkbox.helper.errorColor,\r\n helperTextMarginTop: components.checkbox.helper.marginTop,\r\n};\r\n\r\n/** Build Checkbox tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when theme/screen changes. */\r\nexport function getCheckboxTokensFromResolved(resolved: ResolvedTokens): CheckboxTokens {\r\n const cb = resolved.components?.checkbox;\r\n if (!cb) return CHECKBOX_TOKENS;\r\n const cbSize = cb.size ?? {};\r\n const sm = cbSize.sm ?? {};\r\n const md = cbSize.md ?? {};\r\n const lg = cbSize.lg ?? {};\r\n return {\r\n headingFontSize: cb.heading?.fontSize ?? CHECKBOX_TOKENS.headingFontSize,\r\n headingFontWeight:\r\n typeof cb.heading?.fontWeight === 'string' ? parseInt(cb.heading.fontWeight)\r\n : typeof cb.heading?.fontWeight === 'number' ? cb.heading.fontWeight\r\n : CHECKBOX_TOKENS.headingFontWeight,\r\n headingColor: cb.heading?.color ?? CHECKBOX_TOKENS.headingColor,\r\n headingMarginBottom: cb.heading?.marginBottom ?? CHECKBOX_TOKENS.headingMarginBottom,\r\n textFontSize: cb.label?.fontSize ?? CHECKBOX_TOKENS.textFontSize,\r\n textFontWeight:\r\n typeof cb.label?.fontWeight === 'string' ? parseInt(cb.label.fontWeight)\r\n : typeof cb.label?.fontWeight === 'number' ? cb.label.fontWeight\r\n : CHECKBOX_TOKENS.textFontWeight,\r\n textColorActive: cb.label?.color?.active ?? CHECKBOX_TOKENS.textColorActive,\r\n textColorInactive: cb.label?.color?.inactive ?? CHECKBOX_TOKENS.textColorInactive,\r\n textMarginLeft: cb.label?.marginLeft ?? CHECKBOX_TOKENS.textMarginLeft,\r\n groupGapHorizontal: cb.group?.gapHorizontal ?? CHECKBOX_TOKENS.groupGapHorizontal,\r\n groupGapVertical: cb.group?.gapVertical ?? CHECKBOX_TOKENS.groupGapVertical,\r\n checkboxColorActive: cb.checkbox?.color?.active ?? CHECKBOX_TOKENS.checkboxColorActive,\r\n checkboxColorInactive: cb.checkbox?.color?.inactive ?? CHECKBOX_TOKENS.checkboxColorInactive,\r\n checkboxBackgroundInactive:\r\n cb.checkbox?.background?.inactive ?? CHECKBOX_TOKENS.checkboxBackgroundInactive,\r\n checkedBorderColor: cb.checkbox?.border?.checked ?? CHECKBOX_TOKENS.checkedBorderColor,\r\n checkboxSizeSm: sm.checkboxSize ?? CHECKBOX_TOKENS.checkboxSizeSm,\r\n checkboxSizeMd: md.checkboxSize ?? CHECKBOX_TOKENS.checkboxSizeMd,\r\n checkboxSizeLg: cb.size.lg.checkboxSize ?? CHECKBOX_TOKENS.checkboxSizeLg,\r\n checkboxBorderRadiusSm: sm.borderRadius ?? CHECKBOX_TOKENS.checkboxBorderRadiusSm,\r\n checkboxBorderRadiusMd: md.borderRadius ?? CHECKBOX_TOKENS.checkboxBorderRadiusMd,\r\n checkboxBorderRadiusLg: lg.borderRadius ?? CHECKBOX_TOKENS.checkboxBorderRadiusLg,\r\n textFontSizeSm: sm.labelFontSize ?? CHECKBOX_TOKENS.textFontSizeSm,\r\n textFontSizeMd: md.labelFontSize ?? CHECKBOX_TOKENS.textFontSizeMd,\r\n textFontSizeLg: lg.labelFontSize ?? CHECKBOX_TOKENS.textFontSizeLg,\r\n headingFontSizeSm: sm.headingFontSize ?? CHECKBOX_TOKENS.headingFontSizeSm,\r\n headingFontSizeMd: md.headingFontSize ?? CHECKBOX_TOKENS.headingFontSizeMd,\r\n headingFontSizeLg: lg.headingFontSize ?? CHECKBOX_TOKENS.headingFontSizeLg,\r\n helperTextFontSize: cb.helper?.textFontSize ?? CHECKBOX_TOKENS.helperTextFontSize,\r\n helperTextFontWeight: cb.helper?.textFontWeight ?? CHECKBOX_TOKENS.helperTextFontWeight,\r\n helperTextColor: cb.helper?.textColor ?? CHECKBOX_TOKENS.helperTextColor,\r\n helperTextErrorColor: cb.helper?.errorColor ?? CHECKBOX_TOKENS.helperTextErrorColor,\r\n helperTextMarginTop: cb.helper?.marginTop ?? CHECKBOX_TOKENS.helperTextMarginTop,\r\n };\r\n}\r\n\r\n// Radio tokens (legacy format; from components/radio.json)\r\nexport interface RadioTokens {\r\n headingFontSize: string;\r\n headingFontWeight: number;\r\n headingFontFamily: string;\r\n headingColor: string;\r\n headingMarginBottom: string;\r\n labelFontSize: string;\r\n labelFontWeight: number;\r\n labelFontFamily: string;\r\n labelColorActive: string;\r\n labelColorInactive: string;\r\n labelMarginLeft: string;\r\n radioSize: string;\r\n radioDotSize: string;\r\n radioBorderRadius: string;\r\n radioStrokeWidth: string;\r\n radioColorActive: string;\r\n radioColorInactive: string;\r\n radioColorDot: string;\r\n radioBackground: string;\r\n radioFocusRing: string;\r\n optionBorderActive: string;\r\n optionBorderInactive: string;\r\n optionBackgroundActive: string;\r\n optionBackgroundInactive: string;\r\n optionTextActive: string;\r\n optionTextInactive: string;\r\n labelMarginBottom: string;\r\n groupGapHorizontal: string;\r\n groupGapVertical: string;\r\n descriptionFontSize: string;\r\n descriptionColor: string;\r\n descriptionFontWeight: number;\r\n helperFontSize: string;\r\n helperColor: string;\r\n helperErrorColor: string;\r\n helperMarginTop: string;\r\n}\r\n\r\nexport const RADIO_TOKENS: RadioTokens = {\r\n headingFontSize: components.radio.heading.fontSize,\r\n headingFontWeight:\r\n typeof components.radio.heading.fontWeight === 'string' ?\r\n parseInt(components.radio.heading.fontWeight)\r\n : components.radio.heading.fontWeight,\r\n headingFontFamily: components.radio.heading.fontFamily,\r\n headingColor: components.radio.heading.color,\r\n headingMarginBottom: components.radio.heading.marginBottom,\r\n labelFontSize: components.radio.label.fontSize,\r\n labelFontWeight:\r\n typeof components.radio.label.fontWeight === 'string' ?\r\n parseInt(components.radio.label.fontWeight)\r\n : components.radio.label.fontWeight,\r\n labelFontFamily: components.radio.label.fontFamily,\r\n labelColorActive: components.radio.label.color.active,\r\n labelColorInactive: components.radio.label.color.inactive,\r\n labelMarginLeft: components.radio.label.marginLeft,\r\n radioSize: components.radio.radio.size,\r\n radioDotSize:\r\n (components.radio.size?.md as { dotSize?: string })?.dotSize ??\r\n (components.radio.size?.sm as { dotSize?: string })?.dotSize ??\r\n foundation.size['8'],\r\n radioBorderRadius: components.radio.radio.borderRadius,\r\n radioStrokeWidth: components.radio.radio.strokeWidth,\r\n radioColorActive: components.radio.radio.color.active,\r\n radioColorInactive: components.radio.radio.color.inactive,\r\n radioColorDot:\r\n (components.radio.radio as { color?: { active?: string; dot?: string } }).color?.dot ??\r\n (components.radio.radio as { color?: { active?: string } }).color?.active ??\r\n components.radio.radio.color.active,\r\n radioBackground: components.radio.radio.background,\r\n radioFocusRing: (components.radio.radio as { focusRing?: string }).focusRing ?? 'none',\r\n optionBorderActive:\r\n (components.radio as { option?: { border?: { active?: string } } }).option?.border?.active ??\r\n components.radio.radio.color.active,\r\n optionBorderInactive:\r\n (components.radio as { option?: { border?: { inactive?: string } } }).option?.border\r\n ?.inactive ?? components.radio.radio.color.inactive,\r\n optionBackgroundActive:\r\n (components.radio as { option?: { background?: { active?: string } } }).option?.background\r\n ?.active ?? components.radio.radio.background,\r\n optionBackgroundInactive:\r\n (components.radio as { option?: { background?: { inactive?: string } } }).option?.background\r\n ?.inactive ?? components.radio.radio.background,\r\n optionTextActive:\r\n (components.radio as { option?: { text?: { active?: string } } }).option?.text?.active ??\r\n components.radio.label.color.active,\r\n optionTextInactive:\r\n (components.radio as { option?: { text?: { inactive?: string } } }).option?.text?.inactive ??\r\n components.radio.label.color.inactive,\r\n labelMarginBottom: components.radio.label.marginBottom,\r\n groupGapHorizontal: components.radio.group.gapHorizontal,\r\n groupGapVertical: components.radio.group.gapVertical,\r\n descriptionFontSize: components.radio.description.fontSize,\r\n descriptionColor: components.radio.description.color,\r\n descriptionFontWeight:\r\n typeof components.radio.description.fontWeight === 'string' ?\r\n parseInt(components.radio.description.fontWeight)\r\n : components.radio.description.fontWeight,\r\n helperFontSize:\r\n (components.radio as { helper?: { fontSize?: string } }).helper?.fontSize ??\r\n components.radio.description.fontSize,\r\n helperColor:\r\n (components.radio as { helper?: { color?: string } }).helper?.color ??\r\n components.radio.description.color,\r\n helperErrorColor:\r\n (components.radio as { helper?: { errorColor?: string } }).helper?.errorColor ?? '#c00',\r\n helperMarginTop:\r\n (components.radio as { helper?: { marginTop?: string } }).helper?.marginTop ?? '4px',\r\n};\r\n\r\n// SelectScroll tokens (legacy format; from components/selectscroll.json)\r\nexport interface SelectScrollTokens {\r\n // Input\r\n inputHeight: string;\r\n inputHeightSm: string;\r\n inputHeightMd: string;\r\n inputHeightLg: string;\r\n inputPadding: string;\r\n inputPaddingSm: string;\r\n inputPaddingMd: string;\r\n inputPaddingLg: string;\r\n inputBorderDefault: string;\r\n inputBorderActive: string;\r\n inputBorderError: string;\r\n inputBorderRadius: string;\r\n inputFontSize: string;\r\n inputFontSizeSm: string;\r\n inputFontSizeMd: string;\r\n inputFontSizeLg: string;\r\n inputColor: string;\r\n inputBackground: string;\r\n inputBackgroundWhite: string;\r\n inputBackgroundDisabled: string;\r\n inputDisabledOpacity: string;\r\n // Listbox\r\n listboxBackground: string;\r\n listboxBorder: string;\r\n listboxBorderRadius: string;\r\n // Option\r\n optionPadding: string;\r\n optionFontSize: string;\r\n optionColor: string;\r\n optionHoverBackground: string;\r\n // Label\r\n labelFontSize: string;\r\n labelFontWeight: number;\r\n labelMarginBottom: string;\r\n labelColor: string;\r\n labelRequiredColor: string;\r\n // Helper\r\n helperFontSize: string;\r\n helperColor: string;\r\n helperErrorColor: string;\r\n // Placeholder\r\n placeholderColor: string;\r\n // Button\r\n buttonHoverBackground: string;\r\n buttonHoverColor: string;\r\n buttonColor: string;\r\n}\r\n\r\nconst ssInputSize = components.selectscroll.input.size;\r\nexport const SELECT_SCROLL_TOKENS: SelectScrollTokens = {\r\n // Input\r\n inputHeight: ssInputSize.md.height,\r\n inputHeightSm: ssInputSize.sm.height,\r\n inputHeightMd: ssInputSize.md.height,\r\n inputHeightLg: ssInputSize.lg.height,\r\n inputPadding: ssInputSize.md.padding,\r\n inputPaddingSm: ssInputSize.sm.padding,\r\n inputPaddingMd: ssInputSize.md.padding,\r\n inputPaddingLg: ssInputSize.lg.padding,\r\n inputBorderDefault: components.selectscroll.input.border.default,\r\n inputBorderActive: components.selectscroll.input.border.active,\r\n inputBorderError: components.selectscroll.input.border.error,\r\n inputBorderRadius: ssInputSize.md.borderRadius,\r\n inputFontSize: ssInputSize.md.fontSize,\r\n inputFontSizeSm: ssInputSize.sm.fontSize,\r\n inputFontSizeMd: ssInputSize.md.fontSize,\r\n inputFontSizeLg: ssInputSize.lg.fontSize,\r\n inputColor: components.selectscroll.input.color,\r\n inputBackground: components.selectscroll.input.background,\r\n inputBackgroundWhite:\r\n components.selectscroll.input.backgroundWhite ?? components.selectscroll.input.background,\r\n inputBackgroundDisabled: components.selectscroll.input.backgroundDisabled,\r\n inputDisabledOpacity: components.selectscroll.input.disabledOpacity,\r\n // Listbox\r\n listboxBackground: components.selectscroll.listbox.background,\r\n listboxBorder: components.selectscroll.listbox.border,\r\n listboxBorderRadius: components.selectscroll.listbox.borderRadius,\r\n // Option\r\n optionPadding: components.selectscroll.option.padding,\r\n optionFontSize: components.selectscroll.option.fontSize,\r\n optionColor: components.selectscroll.option.color,\r\n optionHoverBackground: components.selectscroll.option.hoverBackground,\r\n // Label\r\n labelFontSize: components.selectscroll.label.fontSize,\r\n labelFontWeight:\r\n typeof components.selectscroll.label.fontWeight === 'string' ?\r\n parseInt(components.selectscroll.label.fontWeight)\r\n : components.selectscroll.label.fontWeight,\r\n labelMarginBottom: components.selectscroll.label.marginBottom,\r\n labelColor: components.selectscroll.label.color,\r\n labelRequiredColor: components.selectscroll.label.requiredColor,\r\n // Helper\r\n helperFontSize: components.selectscroll.helper.fontSize,\r\n helperColor: components.selectscroll.helper.color,\r\n helperErrorColor: components.selectscroll.helper.errorColor,\r\n // Placeholder\r\n placeholderColor: components.selectscroll.placeholderColor,\r\n // Button\r\n buttonHoverBackground: components.selectscroll.button.hoverBackground,\r\n buttonHoverColor: components.selectscroll.button.hoverColor,\r\n buttonColor: components.selectscroll.button.color,\r\n};\r\n\r\n/** Build SelectScroll tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when theme mode (light/dark) or brand changes. */\r\nexport function getSelectScrollTokensFromResolved(resolved: ResolvedTokens): SelectScrollTokens {\r\n const ss = resolved.components?.selectscroll as Record<string, any> | undefined;\r\n if (!ss?.input?.size) return SELECT_SCROLL_TOKENS;\r\n const inp = ss.input;\r\n const sm = inp.size?.sm;\r\n const md = inp.size?.md;\r\n const lg = inp.size?.lg;\r\n return {\r\n inputHeight: md?.height ?? SELECT_SCROLL_TOKENS.inputHeightMd,\r\n inputHeightSm: sm?.height ?? SELECT_SCROLL_TOKENS.inputHeightSm,\r\n inputHeightMd: md?.height ?? SELECT_SCROLL_TOKENS.inputHeightMd,\r\n inputHeightLg: lg?.height ?? SELECT_SCROLL_TOKENS.inputHeightLg,\r\n inputPadding: md?.padding ?? SELECT_SCROLL_TOKENS.inputPaddingMd,\r\n inputPaddingSm: sm?.padding ?? SELECT_SCROLL_TOKENS.inputPaddingSm,\r\n inputPaddingMd: md?.padding ?? SELECT_SCROLL_TOKENS.inputPaddingMd,\r\n inputPaddingLg: lg?.padding ?? SELECT_SCROLL_TOKENS.inputPaddingLg,\r\n inputBorderDefault: inp.border?.default ?? SELECT_SCROLL_TOKENS.inputBorderDefault,\r\n inputBorderActive: inp.border?.active ?? SELECT_SCROLL_TOKENS.inputBorderActive,\r\n inputBorderError: inp.border?.error ?? SELECT_SCROLL_TOKENS.inputBorderError,\r\n inputBorderRadius: md?.borderRadius ?? SELECT_SCROLL_TOKENS.inputBorderRadius,\r\n inputFontSize: md?.fontSize ?? SELECT_SCROLL_TOKENS.inputFontSizeMd,\r\n inputFontSizeSm: sm?.fontSize ?? SELECT_SCROLL_TOKENS.inputFontSizeSm,\r\n inputFontSizeMd: md?.fontSize ?? SELECT_SCROLL_TOKENS.inputFontSizeMd,\r\n inputFontSizeLg: lg?.fontSize ?? SELECT_SCROLL_TOKENS.inputFontSizeLg,\r\n inputColor: inp.color ?? SELECT_SCROLL_TOKENS.inputColor,\r\n inputBackground: inp.background ?? SELECT_SCROLL_TOKENS.inputBackground,\r\n inputBackgroundWhite:\r\n inp.backgroundWhite ?? inp.background ?? SELECT_SCROLL_TOKENS.inputBackgroundWhite,\r\n inputBackgroundDisabled: inp.backgroundDisabled ?? SELECT_SCROLL_TOKENS.inputBackgroundDisabled,\r\n inputDisabledOpacity: inp.disabledOpacity ?? SELECT_SCROLL_TOKENS.inputDisabledOpacity,\r\n listboxBackground: ss.listbox?.background ?? SELECT_SCROLL_TOKENS.listboxBackground,\r\n listboxBorder: ss.listbox?.border ?? SELECT_SCROLL_TOKENS.listboxBorder,\r\n listboxBorderRadius: ss.listbox?.borderRadius ?? SELECT_SCROLL_TOKENS.listboxBorderRadius,\r\n optionPadding: ss.option?.padding ?? SELECT_SCROLL_TOKENS.optionPadding,\r\n optionFontSize: ss.option?.fontSize ?? SELECT_SCROLL_TOKENS.optionFontSize,\r\n optionColor: ss.option?.color ?? SELECT_SCROLL_TOKENS.optionColor,\r\n optionHoverBackground: ss.option?.hoverBackground ?? SELECT_SCROLL_TOKENS.optionHoverBackground,\r\n labelFontSize: ss.label?.fontSize ?? SELECT_SCROLL_TOKENS.labelFontSize,\r\n labelFontWeight:\r\n typeof ss.label?.fontWeight === 'string' ?\r\n parseInt(ss.label.fontWeight)\r\n : (ss.label?.fontWeight ?? SELECT_SCROLL_TOKENS.labelFontWeight),\r\n labelMarginBottom: ss.label?.marginBottom ?? SELECT_SCROLL_TOKENS.labelMarginBottom,\r\n labelColor: ss.label?.color ?? SELECT_SCROLL_TOKENS.labelColor,\r\n labelRequiredColor: ss.label?.requiredColor ?? SELECT_SCROLL_TOKENS.labelRequiredColor,\r\n helperFontSize: ss.helper?.fontSize ?? SELECT_SCROLL_TOKENS.helperFontSize,\r\n helperColor: ss.helper?.color ?? SELECT_SCROLL_TOKENS.helperColor,\r\n helperErrorColor: ss.helper?.errorColor ?? SELECT_SCROLL_TOKENS.helperErrorColor,\r\n placeholderColor: ss.placeholderColor ?? SELECT_SCROLL_TOKENS.placeholderColor,\r\n buttonHoverBackground: ss.button?.hoverBackground ?? SELECT_SCROLL_TOKENS.buttonHoverBackground,\r\n buttonHoverColor: ss.button?.hoverColor ?? SELECT_SCROLL_TOKENS.buttonHoverColor,\r\n buttonColor: ss.button?.color ?? SELECT_SCROLL_TOKENS.buttonColor,\r\n };\r\n}\r\n\r\n// Selector tokens (legacy format; from components/selector.json)\r\nexport interface SelectorTokens {\r\n // Input\r\n inputHeight: string;\r\n inputHeightXs: string;\r\n inputHeightSm: string;\r\n inputHeightMd: string;\r\n inputHeightLg: string;\r\n inputPadding: string;\r\n inputPaddingXs: string;\r\n inputPaddingSm: string;\r\n inputPaddingMd: string;\r\n inputPaddingLg: string;\r\n inputBorderDefault: string;\r\n inputBorderActive: string;\r\n inputBorderError: string;\r\n inputBorderRadius: string;\r\n inputBorderRadiusXs: string;\r\n inputBorderRadiusSm: string;\r\n inputBorderRadiusMd: string;\r\n inputBorderRadiusLg: string;\r\n inputFontSize: string;\r\n inputFontSizeXs: string;\r\n inputFontSizeSm: string;\r\n inputFontSizeMd: string;\r\n inputFontSizeLg: string;\r\n inputColor: string;\r\n inputBackground: string;\r\n inputBackgroundWhite: string;\r\n inputBackgroundDisabled: string;\r\n inputDisabledOpacity: string;\r\n // Wrapper\r\n wrapperBorderRadius: string;\r\n wrapperBackground: string;\r\n wrapperBackgroundWhite: string;\r\n wrapperBackgroundDisabled: string;\r\n // Chip\r\n chipFontSize: string;\r\n chipBackground: string;\r\n chipColor: string;\r\n chipBorderRadius: string;\r\n // Button\r\n buttonHoverBackground: string;\r\n buttonHoverColor: string;\r\n buttonColor: string;\r\n // Label\r\n labelFontSize: string;\r\n labelFontWeight: number;\r\n labelMarginBottom: string;\r\n labelColor: string;\r\n labelRequiredColor: string;\r\n // Helper\r\n helperFontSize: string;\r\n helperColor: string;\r\n helperErrorColor: string;\r\n // Option\r\n optionPadding: string;\r\n optionFontSize: string;\r\n optionColor: string;\r\n optionHoverBackground: string;\r\n // Listbox\r\n listboxBackground: string;\r\n listboxGroupHeadingBackground: string;\r\n listboxGroupHeadingBorder: string;\r\n listboxBorder: string;\r\n listboxBorderRadius: string;\r\n // Checkbox\r\n checkboxAccentColor: string;\r\n}\r\n\r\nconst selInputSize = components.selector.input.size;\r\nexport const SELECTOR_TOKENS: SelectorTokens = {\r\n // Input\r\n inputHeight: selInputSize.md.height,\r\n inputHeightXs: selInputSize.xs.height,\r\n inputHeightSm: selInputSize.sm.height,\r\n inputHeightMd: selInputSize.md.height,\r\n inputHeightLg: selInputSize.lg.height,\r\n inputPadding: selInputSize.md.padding,\r\n inputPaddingXs: selInputSize.xs.padding,\r\n inputPaddingSm: selInputSize.sm.padding,\r\n inputPaddingMd: selInputSize.md.padding,\r\n inputPaddingLg: selInputSize.lg.padding,\r\n inputBorderDefault: components.selector.input.border.default,\r\n inputBorderActive: components.selector.input.border.active,\r\n inputBorderError: components.selector.input.border.error,\r\n inputBorderRadius: selInputSize.md.borderRadius,\r\n inputBorderRadiusXs: selInputSize.xs.borderRadius,\r\n inputBorderRadiusSm: selInputSize.sm.borderRadius,\r\n inputBorderRadiusMd: selInputSize.md.borderRadius,\r\n inputBorderRadiusLg: selInputSize.lg.borderRadius,\r\n inputFontSize: selInputSize.md.fontSize,\r\n inputFontSizeXs: selInputSize.xs.fontSize,\r\n inputFontSizeSm: selInputSize.sm.fontSize,\r\n inputFontSizeMd: selInputSize.md.fontSize,\r\n inputFontSizeLg: selInputSize.lg.fontSize,\r\n inputColor: components.selector.input.color,\r\n inputBackground: components.selector.input.background,\r\n inputBackgroundWhite:\r\n components.selector.input.backgroundWhite ?? components.selector.input.background,\r\n inputBackgroundDisabled: components.selector.input.backgroundDisabled,\r\n inputDisabledOpacity: components.selector.input.disabledOpacity,\r\n // Wrapper\r\n wrapperBorderRadius: components.selector.wrapper.borderRadius,\r\n wrapperBackground: components.selector.wrapper.background,\r\n wrapperBackgroundWhite:\r\n components.selector.wrapper.backgroundWhite ?? components.selector.wrapper.background,\r\n wrapperBackgroundDisabled: components.selector.wrapper.backgroundDisabled,\r\n // Chip\r\n chipFontSize: components.selector.chip.fontSize,\r\n chipBackground: components.selector.chip.background,\r\n chipColor: components.selector.chip.color,\r\n chipBorderRadius: components.selector.chip.borderRadius,\r\n // Button\r\n buttonHoverBackground: components.selector.button.hoverBackground,\r\n buttonHoverColor: components.selector.button.hoverColor,\r\n buttonColor: components.selector.button.color,\r\n // Label\r\n labelFontSize: components.selector.label.fontSize,\r\n labelFontWeight:\r\n typeof components.selector.label.fontWeight === 'string' ?\r\n parseInt(components.selector.label.fontWeight)\r\n : components.selector.label.fontWeight,\r\n labelMarginBottom: components.selector.label.marginBottom,\r\n labelColor: components.selector.label.color,\r\n labelRequiredColor: components.selector.label.requiredColor,\r\n // Helper\r\n helperFontSize: components.selector.helper.fontSize,\r\n helperColor: components.selector.helper.color,\r\n helperErrorColor: components.selector.helper.errorColor,\r\n // Option\r\n optionPadding: components.selector.option.padding,\r\n optionFontSize: components.selector.option.fontSize,\r\n optionColor: components.selector.option.color,\r\n optionHoverBackground: components.selector.option.hoverBackground,\r\n // Listbox\r\n listboxBackground: components.selector.listbox.background,\r\n listboxGroupHeadingBackground:\r\n components.selector.listbox.groupHeadingBackground ?? components.selector.listbox.background,\r\n listboxGroupHeadingBorder:\r\n components.selector.listbox.groupHeadingBorder ?? '1px solid rgba(0,0,0,0.06)',\r\n listboxBorder: components.selector.listbox.border,\r\n listboxBorderRadius: components.selector.listbox.borderRadius,\r\n // Checkbox\r\n checkboxAccentColor: components.selector.checkbox.accentColor,\r\n};\r\n\r\n/** Build Selector tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when theme mode (light/dark) or brand changes. */\r\nexport function getSelectorTokensFromResolved(resolved: ResolvedTokens): SelectorTokens {\r\n const sel = resolved.components?.selector as Record<string, any> | undefined;\r\n if (!sel?.input?.size) return SELECTOR_TOKENS;\r\n const inp = sel.input;\r\n const xs = inp.size?.xs;\r\n const sm = inp.size?.sm;\r\n const md = inp.size?.md;\r\n const lg = inp.size?.lg;\r\n return {\r\n inputHeight: md?.height ?? SELECTOR_TOKENS.inputHeightMd,\r\n inputHeightXs: xs?.height ?? SELECTOR_TOKENS.inputHeightXs,\r\n inputHeightSm: sm?.height ?? SELECTOR_TOKENS.inputHeightSm,\r\n inputHeightMd: md?.height ?? SELECTOR_TOKENS.inputHeightMd,\r\n inputHeightLg: lg?.height ?? SELECTOR_TOKENS.inputHeightLg,\r\n inputPadding: md?.padding ?? SELECTOR_TOKENS.inputPaddingMd,\r\n inputPaddingXs: xs?.padding ?? SELECTOR_TOKENS.inputPaddingXs,\r\n inputPaddingSm: sm?.padding ?? SELECTOR_TOKENS.inputPaddingSm,\r\n inputPaddingMd: md?.padding ?? SELECTOR_TOKENS.inputPaddingMd,\r\n inputPaddingLg: lg?.padding ?? SELECTOR_TOKENS.inputPaddingLg,\r\n inputBorderDefault: inp.border?.default ?? SELECTOR_TOKENS.inputBorderDefault,\r\n inputBorderActive: inp.border?.active ?? SELECTOR_TOKENS.inputBorderActive,\r\n inputBorderError: inp.border?.error ?? SELECTOR_TOKENS.inputBorderError,\r\n inputBorderRadius: md?.borderRadius ?? SELECTOR_TOKENS.inputBorderRadiusMd,\r\n inputBorderRadiusXs: xs?.borderRadius ?? SELECTOR_TOKENS.inputBorderRadiusXs,\r\n inputBorderRadiusSm: sm?.borderRadius ?? SELECTOR_TOKENS.inputBorderRadiusSm,\r\n inputBorderRadiusMd: md?.borderRadius ?? SELECTOR_TOKENS.inputBorderRadiusMd,\r\n inputBorderRadiusLg: lg?.borderRadius ?? SELECTOR_TOKENS.inputBorderRadiusLg,\r\n inputFontSize: md?.fontSize ?? SELECTOR_TOKENS.inputFontSizeMd,\r\n inputFontSizeXs: xs?.fontSize ?? SELECTOR_TOKENS.inputFontSizeXs,\r\n inputFontSizeSm: sm?.fontSize ?? SELECTOR_TOKENS.inputFontSizeSm,\r\n inputFontSizeMd: md?.fontSize ?? SELECTOR_TOKENS.inputFontSizeMd,\r\n inputFontSizeLg: lg?.fontSize ?? SELECTOR_TOKENS.inputFontSizeLg,\r\n inputColor: inp.color ?? SELECTOR_TOKENS.inputColor,\r\n inputBackground: inp.background ?? SELECTOR_TOKENS.inputBackground,\r\n inputBackgroundWhite:\r\n inp.backgroundWhite ?? inp.background ?? SELECTOR_TOKENS.inputBackgroundWhite,\r\n inputBackgroundDisabled: inp.backgroundDisabled ?? SELECTOR_TOKENS.inputBackgroundDisabled,\r\n inputDisabledOpacity: inp.disabledOpacity ?? SELECTOR_TOKENS.inputDisabledOpacity,\r\n wrapperBorderRadius: sel.wrapper?.borderRadius ?? SELECTOR_TOKENS.wrapperBorderRadius,\r\n wrapperBackground: sel.wrapper?.background ?? SELECTOR_TOKENS.wrapperBackground,\r\n wrapperBackgroundWhite:\r\n sel.wrapper?.backgroundWhite ??\r\n sel.wrapper?.background ??\r\n SELECTOR_TOKENS.wrapperBackgroundWhite,\r\n wrapperBackgroundDisabled:\r\n sel.wrapper?.backgroundDisabled ?? SELECTOR_TOKENS.wrapperBackgroundDisabled,\r\n chipFontSize: sel.chip?.fontSize ?? SELECTOR_TOKENS.chipFontSize,\r\n chipBackground: sel.chip?.background ?? SELECTOR_TOKENS.chipBackground,\r\n chipColor: sel.chip?.color ?? SELECTOR_TOKENS.chipColor,\r\n chipBorderRadius: sel.chip?.borderRadius ?? SELECTOR_TOKENS.chipBorderRadius,\r\n buttonHoverBackground: sel.button?.hoverBackground ?? SELECTOR_TOKENS.buttonHoverBackground,\r\n buttonHoverColor: sel.button?.hoverColor ?? SELECTOR_TOKENS.buttonHoverColor,\r\n buttonColor: sel.button?.color ?? SELECTOR_TOKENS.buttonColor,\r\n labelFontSize: sel.label?.fontSize ?? SELECTOR_TOKENS.labelFontSize,\r\n labelFontWeight:\r\n typeof sel.label?.fontWeight === 'string' ?\r\n parseInt(sel.label.fontWeight)\r\n : (sel.label?.fontWeight ?? SELECTOR_TOKENS.labelFontWeight),\r\n labelMarginBottom: sel.label?.marginBottom ?? SELECTOR_TOKENS.labelMarginBottom,\r\n labelColor: sel.label?.color ?? SELECTOR_TOKENS.labelColor,\r\n labelRequiredColor: sel.label?.requiredColor ?? SELECTOR_TOKENS.labelRequiredColor,\r\n helperFontSize: sel.helper?.fontSize ?? SELECTOR_TOKENS.helperFontSize,\r\n helperColor: sel.helper?.color ?? SELECTOR_TOKENS.helperColor,\r\n helperErrorColor: sel.helper?.errorColor ?? SELECTOR_TOKENS.helperErrorColor,\r\n optionPadding: sel.option?.padding ?? SELECTOR_TOKENS.optionPadding,\r\n optionFontSize: sel.option?.fontSize ?? SELECTOR_TOKENS.optionFontSize,\r\n optionColor: sel.option?.color ?? SELECTOR_TOKENS.optionColor,\r\n optionHoverBackground: sel.option?.hoverBackground ?? SELECTOR_TOKENS.optionHoverBackground,\r\n listboxBackground: sel.listbox?.background ?? SELECTOR_TOKENS.listboxBackground,\r\n listboxGroupHeadingBackground:\r\n sel.listbox?.groupHeadingBackground ?? SELECTOR_TOKENS.listboxGroupHeadingBackground,\r\n listboxGroupHeadingBorder:\r\n sel.listbox?.groupHeadingBorder ?? SELECTOR_TOKENS.listboxGroupHeadingBorder,\r\n listboxBorder: sel.listbox?.border ?? SELECTOR_TOKENS.listboxBorder,\r\n listboxBorderRadius: sel.listbox?.borderRadius ?? SELECTOR_TOKENS.listboxBorderRadius,\r\n checkboxAccentColor: sel.checkbox?.accentColor ?? SELECTOR_TOKENS.checkboxAccentColor,\r\n };\r\n}\r\n\r\n// Pagination tokens (from components/pagination.json)\r\nexport type PaginationSize = 'xs' | 'sm' | 'md' | 'lg';\r\n\r\nexport interface PaginationSizeToken {\r\n height: string;\r\n minWidth: string;\r\n padding: string;\r\n fontSize: string;\r\n borderRadius: string;\r\n}\r\n\r\nexport interface PaginationTokens {\r\n sizeXs: PaginationSizeToken;\r\n sizeSm: PaginationSizeToken;\r\n sizeMd: PaginationSizeToken;\r\n sizeLg: PaginationSizeToken;\r\n activeBackground: string;\r\n activeColor: string;\r\n inactiveColor: string;\r\n iconColor: string;\r\n hoverBackground: string;\r\n disabledOpacity: string;\r\n gap: string;\r\n fontFamily: string;\r\n fontWeight: number;\r\n}\r\n\r\nconst pag = components.pagination;\r\nconst pagSize = pag.size;\r\nexport const PAGINATION_TOKENS: PaginationTokens = {\r\n sizeXs: pagSize.xs,\r\n sizeSm: pagSize.sm,\r\n sizeMd: pagSize.md,\r\n sizeLg: pagSize.lg,\r\n activeBackground: pag.item.activeBackground,\r\n activeColor: pag.item.activeColor,\r\n inactiveColor: pag.item.inactiveColor,\r\n iconColor: pag.item.iconColor,\r\n hoverBackground: pag.item.hoverBackground,\r\n disabledOpacity: pag.item.disabledOpacity,\r\n gap: pag.gap,\r\n fontFamily: pag.fontFamily,\r\n fontWeight:\r\n typeof pag.fontWeight === 'string' ? parseInt(pag.fontWeight) : Number(pag.fontWeight ?? 500),\r\n};\r\n\r\n/** Build Pagination tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when theme mode (light/dark) or brand changes. */\r\nexport function getPaginationTokensFromResolved(resolved: ResolvedTokens): PaginationTokens {\r\n const pagResolved = resolved.components?.pagination as Record<string, any> | undefined;\r\n if (!pagResolved?.size) return PAGINATION_TOKENS;\r\n const size = pagResolved.size;\r\n const item = pagResolved.item ?? {};\r\n return {\r\n sizeXs: size.xs ?? PAGINATION_TOKENS.sizeXs,\r\n sizeSm: size.sm ?? PAGINATION_TOKENS.sizeSm,\r\n sizeMd: size.md ?? PAGINATION_TOKENS.sizeMd,\r\n sizeLg: size.lg ?? PAGINATION_TOKENS.sizeLg,\r\n activeBackground: item.activeBackground ?? PAGINATION_TOKENS.activeBackground,\r\n activeColor: item.activeColor ?? PAGINATION_TOKENS.activeColor,\r\n inactiveColor: item.inactiveColor ?? PAGINATION_TOKENS.inactiveColor,\r\n iconColor: item.iconColor ?? PAGINATION_TOKENS.iconColor,\r\n hoverBackground: item.hoverBackground ?? PAGINATION_TOKENS.hoverBackground,\r\n disabledOpacity: item.disabledOpacity ?? PAGINATION_TOKENS.disabledOpacity,\r\n gap: pagResolved.gap ?? PAGINATION_TOKENS.gap,\r\n fontFamily: pagResolved.fontFamily ?? PAGINATION_TOKENS.fontFamily,\r\n fontWeight:\r\n typeof pagResolved.fontWeight === 'string' ?\r\n parseInt(pagResolved.fontWeight)\r\n : (pagResolved.fontWeight ?? PAGINATION_TOKENS.fontWeight),\r\n };\r\n}\r\n\r\n// DatePicker tokens (resolved from components/datepicker.json → semantic)\r\nexport const DATE_PICKER_TOKENS = components.datepicker;\r\n\r\n/** Build DatePicker tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when theme mode (light/dark) or brand changes. */\r\nexport function getDatePickerTokensFromResolved(\r\n resolved: ResolvedTokens\r\n): typeof DATE_PICKER_TOKENS {\r\n const dp = resolved.components?.datepicker as Record<string, any> | undefined;\r\n if (!dp) return DATE_PICKER_TOKENS;\r\n return {\r\n ...DATE_PICKER_TOKENS,\r\n ...dp,\r\n wrapper: { ...DATE_PICKER_TOKENS.wrapper, ...dp.wrapper },\r\n input: { ...DATE_PICKER_TOKENS.input, ...dp.input },\r\n header: { ...DATE_PICKER_TOKENS.header, ...dp.header },\r\n headerButton: { ...DATE_PICKER_TOKENS.headerButton, ...dp.headerButton },\r\n headerSelect: { ...DATE_PICKER_TOKENS.headerSelect, ...dp.headerSelect },\r\n label: { ...DATE_PICKER_TOKENS.label, ...dp.label },\r\n helper: { ...DATE_PICKER_TOKENS.helper, ...dp.helper },\r\n calendar: { ...DATE_PICKER_TOKENS.calendar, ...dp.calendar },\r\n size: dp.size ? { ...DATE_PICKER_TOKENS.size, ...dp.size } : DATE_PICKER_TOKENS.size,\r\n } as typeof DATE_PICKER_TOKENS;\r\n}\r\n\r\n// FileUpload tokens (from components/fileupload.json)\r\nexport interface FileUploadTokens {\r\n containerHeight: string;\r\n containerBorderRadius: string;\r\n containerBackground: string;\r\n containerBackgroundWhite: string;\r\n containerBorder: string;\r\n containerBorderFocus: string;\r\n containerBorderError: string;\r\n containerPaddingY: string;\r\n containerPaddingX: string;\r\n containerGap: string;\r\n labelFontSize: string;\r\n labelFontWeight: number;\r\n labelFontFamily: string;\r\n labelColor: string;\r\n labelRequiredColor: string;\r\n labelMarginBottom: string;\r\n buttonFontSize: string;\r\n buttonFontWeight: number;\r\n buttonFontFamily: string;\r\n buttonColor: string;\r\n buttonBackground: string;\r\n buttonBorder: string;\r\n buttonBorderRadius: string;\r\n buttonHeight: string;\r\n buttonPaddingY: string;\r\n buttonPaddingX: string;\r\n placeholderFontSize: string;\r\n placeholderFontFamily: string;\r\n placeholderColor: string;\r\n disabledOpacity: string;\r\n}\r\n\r\nconst fuComp = components.fileupload as Record<string, any> | undefined;\r\nconst fuSizeMd = (fuComp?.size as Record<string, any>)?.['md'] ?? {};\r\nconst fuContainer = fuComp?.container ?? {};\r\nconst fuLabel = fuComp?.label ?? {};\r\nconst fuButton = fuComp?.button ?? {};\r\nconst fuPlaceholder = fuComp?.placeholder ?? {};\r\nconst fuDisabled = fuComp?.disabled ?? {};\r\nconst fuPadding = String(fuSizeMd.padding ?? '').split(/\\s+/);\r\nconst fuPaddingY = fuPadding[0] ?? '6px';\r\nconst fuPaddingX = fuPadding[1] ?? fuPadding[0] ?? '16px';\r\nexport const FILEUPLOAD_TOKENS: FileUploadTokens = {\r\n containerHeight: fuSizeMd.height ?? '40px',\r\n containerBorderRadius: fuContainer.borderRadius ?? fuSizeMd.borderRadius ?? '8px',\r\n containerBackground: fuContainer.background ?? '#ffffff',\r\n containerBackgroundWhite: fuContainer.backgroundWhite ?? fuContainer.background ?? '#ffffff',\r\n containerBorder: fuContainer.border ?? '1px solid #d1d5db',\r\n containerBorderFocus: fuContainer.borderFocus ?? '2px solid #2563eb',\r\n containerBorderError: fuContainer.borderError ?? '2px solid #dc2626',\r\n containerPaddingY: fuPaddingY,\r\n containerPaddingX: fuPaddingX,\r\n containerGap: fuContainer.gap ?? '12px',\r\n labelFontSize: fuLabel.fontSize ?? '14px',\r\n labelFontWeight:\r\n typeof fuLabel.fontWeight === 'string' ?\r\n parseInt(fuLabel.fontWeight, 10)\r\n : (fuLabel.fontWeight ?? 500),\r\n labelFontFamily: fuLabel.fontFamily ?? '\"Inter\", sans-serif',\r\n labelColor: fuLabel.color ?? '#374151',\r\n labelRequiredColor: fuLabel.requiredColor ?? '#dc2626',\r\n labelMarginBottom: fuLabel.marginBottom ?? '8px',\r\n buttonFontSize: fuSizeMd.fontSize ?? fuButton.fontSize ?? '14px',\r\n buttonFontWeight:\r\n typeof fuButton.fontWeight === 'string' ?\r\n parseInt(fuButton.fontWeight, 10)\r\n : (fuButton.fontWeight ?? 500),\r\n buttonFontFamily: fuButton.fontFamily ?? '\"Inter\", sans-serif',\r\n buttonColor: fuButton.color ?? '#2563eb',\r\n buttonBackground: fuButton.background ?? '#ffffff',\r\n buttonBorder: fuButton.border ?? '1px solid #d1d5db',\r\n buttonBorderRadius: fuButton.borderRadius ?? fuSizeMd.borderRadius ?? '4px',\r\n buttonHeight: fuSizeMd.height ?? fuButton.height ?? '40px',\r\n buttonPaddingY: fuPaddingY,\r\n buttonPaddingX: fuPaddingX,\r\n placeholderFontSize: fuSizeMd.fontSize ?? fuPlaceholder.fontSize ?? '14px',\r\n placeholderFontFamily: fuPlaceholder.fontFamily ?? '\"Inter\", sans-serif',\r\n placeholderColor: fuPlaceholder.color ?? '#6b7280',\r\n disabledOpacity: fuDisabled.opacity ?? '0.5',\r\n};\r\n\r\nconst defaultFileUploadTokens = FILEUPLOAD_TOKENS;\r\n\r\nexport type FileUploadSize = 'sm' | 'md' | 'lg';\r\n\r\n/** Build FileUpload tokens from resolved tokens (e.g. from useTokens()). */\r\nexport function getFileUploadTokensFromResolved(\r\n resolved: ResolvedTokens,\r\n size: FileUploadSize = 'md'\r\n): FileUploadTokens {\r\n const fu = resolved.components?.fileupload as Record<string, any> | undefined;\r\n if (!fu) return defaultFileUploadTokens;\r\n const sizeTokens = (fu.size ?? {})[size] ?? fu.size?.md ?? {};\r\n const paddingParts = String(sizeTokens.padding ?? '').split(/\\s+/);\r\n const paddingY = paddingParts[0] ?? defaultFileUploadTokens.containerPaddingY;\r\n const paddingX = paddingParts[1] ?? paddingParts[0] ?? defaultFileUploadTokens.containerPaddingX;\r\n const c = fu.container ?? {};\r\n const l = fu.label ?? {};\r\n const b = fu.button ?? {};\r\n const p = fu.placeholder ?? {};\r\n const d = fu.disabled ?? {};\r\n return {\r\n containerHeight: sizeTokens.height ?? defaultFileUploadTokens.containerHeight,\r\n containerBorderRadius:\r\n c.borderRadius ?? sizeTokens.borderRadius ?? defaultFileUploadTokens.containerBorderRadius,\r\n containerBackground: c.background ?? defaultFileUploadTokens.containerBackground,\r\n containerBackgroundWhite: c.backgroundWhite ?? defaultFileUploadTokens.containerBackgroundWhite,\r\n containerBorder: c.border ?? defaultFileUploadTokens.containerBorder,\r\n containerBorderFocus: c.borderFocus ?? defaultFileUploadTokens.containerBorderFocus,\r\n containerBorderError: c.borderError ?? defaultFileUploadTokens.containerBorderError,\r\n containerPaddingY: paddingY,\r\n containerPaddingX: paddingX,\r\n containerGap: c.gap ?? defaultFileUploadTokens.containerGap,\r\n labelFontSize: l.fontSize ?? defaultFileUploadTokens.labelFontSize,\r\n labelFontWeight:\r\n typeof l.fontWeight === 'string' ?\r\n parseInt(l.fontWeight, 10)\r\n : (l.fontWeight ?? defaultFileUploadTokens.labelFontWeight),\r\n labelFontFamily: l.fontFamily ?? defaultFileUploadTokens.labelFontFamily,\r\n labelColor: l.color ?? defaultFileUploadTokens.labelColor,\r\n labelRequiredColor: l.requiredColor ?? defaultFileUploadTokens.labelRequiredColor,\r\n labelMarginBottom: l.marginBottom ?? defaultFileUploadTokens.labelMarginBottom,\r\n buttonFontSize: sizeTokens.fontSize ?? defaultFileUploadTokens.buttonFontSize,\r\n buttonFontWeight:\r\n typeof b.fontWeight === 'string' ?\r\n parseInt(b.fontWeight, 10)\r\n : (b.fontWeight ?? defaultFileUploadTokens.buttonFontWeight),\r\n buttonFontFamily: b.fontFamily ?? defaultFileUploadTokens.buttonFontFamily,\r\n buttonColor: b.color ?? defaultFileUploadTokens.buttonColor,\r\n buttonBackground: b.background ?? defaultFileUploadTokens.buttonBackground,\r\n buttonBorder: b.border ?? defaultFileUploadTokens.buttonBorder,\r\n buttonBorderRadius:\r\n b.borderRadius ?? sizeTokens.borderRadius ?? defaultFileUploadTokens.buttonBorderRadius,\r\n buttonHeight: sizeTokens.height ?? defaultFileUploadTokens.buttonHeight,\r\n buttonPaddingY: paddingY,\r\n buttonPaddingX: paddingX,\r\n placeholderFontSize:\r\n p.fontSize ?? sizeTokens.fontSize ?? defaultFileUploadTokens.placeholderFontSize,\r\n placeholderFontFamily: p.fontFamily ?? defaultFileUploadTokens.placeholderFontFamily,\r\n placeholderColor: p.color ?? defaultFileUploadTokens.placeholderColor,\r\n disabledOpacity: d.opacity ?? defaultFileUploadTokens.disabledOpacity,\r\n };\r\n}\r\n\r\n// UploadDropzone tokens (from components/uploaddropzone.json)\r\nexport interface UploadDropzoneTokens {\r\n titleFontSize: string;\r\n titleFontWeight: number;\r\n titleFontFamily: string;\r\n titleLineHeight: string;\r\n titleColor: string;\r\n titleMarginBottom: string;\r\n zoneBackground: string;\r\n zoneBorder: string;\r\n zoneBorderActive: string;\r\n zoneBackgroundActive: string;\r\n zoneBorderRadius: string;\r\n zonePaddingY: string;\r\n zonePaddingX: string;\r\n zoneGap: string;\r\n iconSize: string;\r\n iconMarginBottom: string;\r\n iconBackground: string;\r\n iconColor: string;\r\n iconBorderRadius: string;\r\n iconBorder: string;\r\n instructionFontSize: string;\r\n instructionFontWeight: number;\r\n instructionFontFamily: string;\r\n instructionLineHeight: string;\r\n instructionColor: string;\r\n instructionMarginBottom: string;\r\n hintFontSize: string;\r\n hintFontWeight: number;\r\n hintFontFamily: string;\r\n hintLineHeight: string;\r\n hintColor: string;\r\n hintMarginBottom: string;\r\n buttonFontSize: string;\r\n buttonFontWeight: number;\r\n buttonFontFamily: string;\r\n buttonColor: string;\r\n buttonBackground: string;\r\n buttonBorder: string;\r\n buttonBorderRadius: string;\r\n buttonPaddingY: string;\r\n buttonPaddingX: string;\r\n selectedFileFontSize: string;\r\n selectedFileFontFamily: string;\r\n selectedFileColor: string;\r\n selectedFileMarginTop: string;\r\n disabledOpacity: string;\r\n}\r\n\r\nconst udComp = components.uploaddropzone as Record<string, any> | undefined;\r\nconst udTitle = udComp?.title ?? {};\r\nconst udZone = udComp?.zone ?? {};\r\nconst udIcon = udComp?.icon ?? {};\r\nconst udInstruction = udComp?.instruction ?? {};\r\nconst udHint = udComp?.hint ?? {};\r\nconst udButton = udComp?.button ?? {};\r\nconst udSelectedFile = udComp?.selectedFile ?? {};\r\nconst udDisabled = udComp?.disabled ?? {};\r\nexport const UPLOADDROPZONE_TOKENS: UploadDropzoneTokens = {\r\n titleFontSize: udTitle.fontSize ?? '16px',\r\n titleFontWeight:\r\n typeof udTitle.fontWeight === 'string' ?\r\n parseInt(udTitle.fontWeight, 10)\r\n : (udTitle.fontWeight ?? 600),\r\n titleFontFamily: udTitle.fontFamily ?? '\"Inter\", sans-serif',\r\n titleLineHeight: udTitle.lineHeight ?? '1.5',\r\n titleColor: udTitle.color ?? '#1f1f1f',\r\n titleMarginBottom: udTitle.marginBottom ?? '12px',\r\n zoneBackground: udZone.background ?? '#f9fafb',\r\n zoneBorder: udZone.border ?? '2px dashed #c8d0d5',\r\n zoneBorderActive: udZone.borderActive ?? '2px dashed #00545e',\r\n zoneBackgroundActive: udZone.backgroundActive ?? '#dbeafe',\r\n zoneBorderRadius: udZone.borderRadius ?? '8px',\r\n zonePaddingY: udZone.paddingY ?? '24px',\r\n zonePaddingX: udZone.paddingX ?? '24px',\r\n zoneGap: udZone.gap ?? '0px',\r\n iconSize: udIcon.size ?? '48px',\r\n iconMarginBottom: udIcon.marginBottom ?? '12px',\r\n iconBackground: udIcon.background ?? '#dbeafe',\r\n iconColor: udIcon.color ?? '#00545e',\r\n iconBorderRadius: udIcon.borderRadius ?? '8px',\r\n iconBorder: udIcon.border ?? '1px solid #00545e',\r\n instructionFontSize: udInstruction.fontSize ?? '14px',\r\n instructionFontWeight:\r\n typeof udInstruction.fontWeight === 'string' ?\r\n parseInt(udInstruction.fontWeight, 10)\r\n : (udInstruction.fontWeight ?? 500),\r\n instructionFontFamily: udInstruction.fontFamily ?? '\"Inter\", sans-serif',\r\n instructionLineHeight: udInstruction.lineHeight ?? '1.5',\r\n instructionColor: udInstruction.color ?? '#1f1f1f',\r\n instructionMarginBottom: udInstruction.marginBottom ?? '8px',\r\n hintFontSize: udHint.fontSize ?? '12px',\r\n hintFontWeight:\r\n typeof udHint.fontWeight === 'string' ?\r\n parseInt(udHint.fontWeight, 10)\r\n : (udHint.fontWeight ?? 400),\r\n hintFontFamily: udHint.fontFamily ?? '\"Inter\", sans-serif',\r\n hintLineHeight: udHint.lineHeight ?? '1.5',\r\n hintColor: udHint.color ?? '#5a6b77',\r\n hintMarginBottom: udHint.marginBottom ?? '12px',\r\n buttonFontSize: udButton.fontSize ?? '12px',\r\n buttonFontWeight:\r\n typeof udButton.fontWeight === 'string' ?\r\n parseInt(udButton.fontWeight, 10)\r\n : (udButton.fontWeight ?? 400),\r\n buttonFontFamily: udButton.fontFamily ?? '\"Inter\", sans-serif',\r\n buttonColor: udButton.color ?? '#00545e',\r\n buttonBackground: udButton.background ?? '#ffffff',\r\n buttonBorder: udButton.border ?? '1px solid #00545e',\r\n buttonBorderRadius: udButton.borderRadius ?? '50px',\r\n buttonPaddingY: udButton.paddingY ?? '8px',\r\n buttonPaddingX: udButton.paddingX ?? '24px',\r\n selectedFileFontSize: udSelectedFile.fontSize ?? '12px',\r\n selectedFileFontFamily: udSelectedFile.fontFamily ?? '\"Inter\", sans-serif',\r\n selectedFileColor: udSelectedFile.color ?? '#5a6b77',\r\n selectedFileMarginTop: udSelectedFile.marginTop ?? '16px',\r\n disabledOpacity: udDisabled.opacity ?? '0.5',\r\n};\r\n\r\nconst defaultUploadDropzoneTokens = UPLOADDROPZONE_TOKENS;\r\n\r\n// PhoneField tokens (from components/phonefield.json)\r\nexport interface PhoneFieldTokens {\r\n borderRadiusSm: string;\r\n borderRadiusMd: string;\r\n borderRadiusLg: string;\r\n selectorWidthSm: string;\r\n selectorWidthMd: string;\r\n selectorWidthLg: string;\r\n labelFontSize: string;\r\n labelFontWeight: number;\r\n labelMarginBottom: string;\r\n labelColor: string;\r\n labelRequiredColor: string;\r\n fontFamily: string;\r\n disabledOpacity: string;\r\n outlineDefault: string;\r\n outlineError: string;\r\n selectorBackground: string;\r\n selectorBackgroundWhite: string;\r\n selectorBorderRight: string;\r\n}\r\n\r\nconst pfComp = components.phonefield as Record<string, any> | undefined;\r\nconst pfSize = pfComp?.size ?? {};\r\nconst pfSizeSm = pfSize.sm ?? {};\r\nconst pfSizeMd = pfSize.md ?? {};\r\nconst pfSizeLg = pfSize.lg ?? {};\r\nconst pfLabel = pfComp?.label ?? {};\r\nconst pfContainer = pfComp?.container ?? {};\r\nconst pfSelector = pfComp?.selector ?? {};\r\nexport const PHONEFIELD_TOKENS: PhoneFieldTokens = {\r\n borderRadiusSm: pfSizeSm.borderRadius ?? '8px',\r\n borderRadiusMd: pfSizeMd.borderRadius ?? '12px',\r\n borderRadiusLg: pfSizeLg.borderRadius ?? '12px',\r\n selectorWidthSm: String(pfSizeSm.selectorWidth ?? 100),\r\n selectorWidthMd: String(pfSizeMd.selectorWidth ?? 110),\r\n selectorWidthLg: String(pfSizeLg.selectorWidth ?? 120),\r\n labelFontSize: pfLabel.fontSize ?? '14px',\r\n labelFontWeight:\r\n typeof pfLabel.fontWeight === 'string' ?\r\n parseInt(pfLabel.fontWeight, 10)\r\n : (pfLabel.fontWeight ?? 500),\r\n labelMarginBottom: pfLabel.marginBottom ?? '8px',\r\n labelColor: pfLabel.color ?? '#374151',\r\n labelRequiredColor: pfLabel.requiredColor ?? '#dc2626',\r\n fontFamily: pfComp?.fontFamily ?? '\"Inter\", sans-serif',\r\n disabledOpacity: pfComp?.disabledOpacity ?? '0.5',\r\n outlineDefault: pfComp?.outline?.default ?? pfContainer.border ?? '2px solid transparent',\r\n outlineError: pfComp?.outline?.error ?? pfContainer.borderError ?? '2px solid #dc2626',\r\n selectorBackground: pfSelector.background ?? '#F5F5F5',\r\n selectorBackgroundWhite: pfSelector.backgroundWhite ?? pfSelector.background ?? '#F5F5F5',\r\n selectorBorderRight: pfSelector.borderRight ?? '1px solid #E0E0E0',\r\n};\r\n\r\nconst defaultPhoneFieldTokens = PHONEFIELD_TOKENS;\r\n\r\n/** Build PhoneField tokens from resolved tokens (e.g. from useTokens()). */\r\nexport function getPhoneFieldTokensFromResolved(resolved: ResolvedTokens): PhoneFieldTokens {\r\n const pf = resolved.components?.phonefield as Record<string, any> | undefined;\r\n if (!pf) return defaultPhoneFieldTokens;\r\n const size = pf.size ?? {};\r\n const sm = size.sm ?? {};\r\n const md = size.md ?? {};\r\n const lg = size.lg ?? {};\r\n const label = pf.label ?? {};\r\n const container = pf.container ?? {};\r\n const selector = pf.selector ?? {};\r\n return {\r\n borderRadiusSm: sm.borderRadius ?? defaultPhoneFieldTokens.borderRadiusSm,\r\n borderRadiusMd: md.borderRadius ?? defaultPhoneFieldTokens.borderRadiusMd,\r\n borderRadiusLg: lg.borderRadius ?? defaultPhoneFieldTokens.borderRadiusLg,\r\n selectorWidthSm: String(sm.selectorWidth ?? defaultPhoneFieldTokens.selectorWidthSm),\r\n selectorWidthMd: String(md.selectorWidth ?? defaultPhoneFieldTokens.selectorWidthMd),\r\n selectorWidthLg: String(lg.selectorWidth ?? defaultPhoneFieldTokens.selectorWidthLg),\r\n labelFontSize: label.fontSize ?? defaultPhoneFieldTokens.labelFontSize,\r\n labelFontWeight:\r\n typeof label.fontWeight === 'string' ?\r\n parseInt(label.fontWeight, 10)\r\n : (label.fontWeight ?? defaultPhoneFieldTokens.labelFontWeight),\r\n labelMarginBottom: label.marginBottom ?? defaultPhoneFieldTokens.labelMarginBottom,\r\n labelColor: label.color ?? defaultPhoneFieldTokens.labelColor,\r\n labelRequiredColor: label.requiredColor ?? defaultPhoneFieldTokens.labelRequiredColor,\r\n fontFamily: pf.fontFamily ?? defaultPhoneFieldTokens.fontFamily,\r\n disabledOpacity: pf.disabledOpacity ?? defaultPhoneFieldTokens.disabledOpacity,\r\n outlineDefault: container.border ?? defaultPhoneFieldTokens.outlineDefault,\r\n outlineError: container.borderError ?? defaultPhoneFieldTokens.outlineError,\r\n selectorBackground: selector.background ?? defaultPhoneFieldTokens.selectorBackground,\r\n selectorBackgroundWhite:\r\n selector.backgroundWhite ?? defaultPhoneFieldTokens.selectorBackgroundWhite,\r\n selectorBorderRight: selector.borderRight ?? defaultPhoneFieldTokens.selectorBorderRight,\r\n };\r\n}\r\n\r\n// Badge tokens (from components/badge.json)\r\nexport type BadgeSize = 'xs' | 'sm' | 'md' | 'lg';\r\n\r\nexport interface BadgeTokens {\r\n heightXs: string;\r\n heightSm: string;\r\n heightMd: string;\r\n heightLg: string;\r\n paddingXs: string;\r\n paddingSm: string;\r\n paddingMd: string;\r\n paddingLg: string;\r\n fontSizeXs: string;\r\n fontSizeSm: string;\r\n fontSizeMd: string;\r\n fontSizeLg: string;\r\n borderRadiusXs: string;\r\n borderRadiusSm: string;\r\n borderRadiusMd: string;\r\n borderRadiusLg: string;\r\n removeIconSizeXs: number;\r\n removeIconSizeSm: number;\r\n removeIconSizeMd: number;\r\n removeIconSizeLg: number;\r\n background: string;\r\n backgroundWhite: string;\r\n color: string;\r\n removeButtonColor: string;\r\n removeButtonHoverColor: string;\r\n boxShadow: string;\r\n borderColor: string;\r\n}\r\n\r\nconst badgeComp = components.badge as Record<string, any> | undefined;\r\nconst badgeSize = badgeComp?.size ?? {};\r\nconst badgeSizeXs = badgeSize.xs ?? {};\r\nconst badgeSizeSm = badgeSize.sm ?? {};\r\nconst badgeSizeMd = badgeSize.md ?? {};\r\nconst badgeSizeLg = badgeSize.lg ?? {};\r\nexport const BADGE_TOKENS: BadgeTokens = {\r\n heightXs: badgeSizeXs.height ?? '20px',\r\n heightSm: badgeSizeSm.height ?? '28px',\r\n heightMd: badgeSizeMd.height ?? '40px',\r\n heightLg: badgeSizeLg.height ?? '44px',\r\n paddingXs: badgeSizeXs.padding ?? '2px 6px',\r\n paddingSm: badgeSizeSm.padding ?? '4px 8px',\r\n paddingMd: badgeSizeMd.padding ?? '7px 12px 7px 8px',\r\n paddingLg: badgeSizeLg.padding ?? '8px 14px 8px 10px',\r\n fontSizeXs: badgeSizeXs.fontSize ?? '10px',\r\n fontSizeSm: badgeSizeSm.fontSize ?? '12px',\r\n fontSizeMd: badgeSizeMd.fontSize ?? '14px',\r\n fontSizeLg: badgeSizeLg.fontSize ?? '14px',\r\n borderRadiusXs: badgeSizeXs.borderRadius ?? '50px',\r\n borderRadiusSm: badgeSizeSm.borderRadius ?? '50px',\r\n borderRadiusMd: badgeSizeMd.borderRadius ?? '50px',\r\n borderRadiusLg: badgeSizeLg.borderRadius ?? '50px',\r\n removeIconSizeXs: parsePxToNumber(badgeSizeXs.removeIconSize) ?? 8,\r\n removeIconSizeSm: parsePxToNumber(badgeSizeSm.removeIconSize) ?? 10,\r\n removeIconSizeMd: parsePxToNumber(badgeSizeMd.removeIconSize) ?? 12,\r\n removeIconSizeLg: parsePxToNumber(badgeSizeLg.removeIconSize) ?? 14,\r\n background: badgeComp?.background ?? '#ffffff',\r\n backgroundWhite: badgeComp?.backgroundWhite ?? '#ffffff',\r\n color: badgeComp?.color ?? '#161616',\r\n removeButtonColor: badgeComp?.removeButtonColor ?? '#161616',\r\n removeButtonHoverColor: badgeComp?.removeButtonHoverColor ?? '#6b7280',\r\n boxShadow: badgeComp?.boxShadow ?? '0 1px 2px rgba(0, 0, 0, 0.05)',\r\n borderColor: badgeComp?.borderColor ?? '#E7EBEE',\r\n};\r\n\r\nconst defaultBadgeTokens = BADGE_TOKENS;\r\n\r\n/** Build Badge tokens from resolved tokens (e.g. from useTokens()). */\r\nexport function getBadgeTokensFromResolved(resolved: ResolvedTokens): BadgeTokens {\r\n const b = resolved.components?.badge as Record<string, any> | undefined;\r\n if (!b) return defaultBadgeTokens;\r\n const size = b.size ?? {};\r\n const xs = size.xs ?? {};\r\n const sm = size.sm ?? {};\r\n const md = size.md ?? {};\r\n const lg = size.lg ?? {};\r\n return {\r\n heightXs: xs.height ?? defaultBadgeTokens.heightXs,\r\n heightSm: sm.height ?? defaultBadgeTokens.heightSm,\r\n heightMd: md.height ?? defaultBadgeTokens.heightMd,\r\n heightLg: lg.height ?? defaultBadgeTokens.heightLg,\r\n paddingXs: xs.padding ?? defaultBadgeTokens.paddingXs,\r\n paddingSm: sm.padding ?? defaultBadgeTokens.paddingSm,\r\n paddingMd: md.padding ?? defaultBadgeTokens.paddingMd,\r\n paddingLg: lg.padding ?? defaultBadgeTokens.paddingLg,\r\n fontSizeXs: xs.fontSize ?? defaultBadgeTokens.fontSizeXs,\r\n fontSizeSm: sm.fontSize ?? defaultBadgeTokens.fontSizeSm,\r\n fontSizeMd: md.fontSize ?? defaultBadgeTokens.fontSizeMd,\r\n fontSizeLg: lg.fontSize ?? defaultBadgeTokens.fontSizeLg,\r\n borderRadiusXs: xs.borderRadius ?? defaultBadgeTokens.borderRadiusXs,\r\n borderRadiusSm: sm.borderRadius ?? defaultBadgeTokens.borderRadiusSm,\r\n borderRadiusMd: md.borderRadius ?? defaultBadgeTokens.borderRadiusMd,\r\n borderRadiusLg: lg.borderRadius ?? defaultBadgeTokens.borderRadiusLg,\r\n removeIconSizeXs: parsePxToNumber(xs.removeIconSize) ?? defaultBadgeTokens.removeIconSizeXs,\r\n removeIconSizeSm: parsePxToNumber(sm.removeIconSize) ?? defaultBadgeTokens.removeIconSizeSm,\r\n removeIconSizeMd: parsePxToNumber(md.removeIconSize) ?? defaultBadgeTokens.removeIconSizeMd,\r\n removeIconSizeLg: parsePxToNumber(lg.removeIconSize) ?? defaultBadgeTokens.removeIconSizeLg,\r\n background: b.background ?? defaultBadgeTokens.background,\r\n backgroundWhite: b.backgroundWhite ?? defaultBadgeTokens.backgroundWhite,\r\n color: b.color ?? defaultBadgeTokens.color,\r\n removeButtonColor: b.removeButtonColor ?? defaultBadgeTokens.removeButtonColor,\r\n removeButtonHoverColor: b.removeButtonHoverColor ?? defaultBadgeTokens.removeButtonHoverColor,\r\n boxShadow: b.boxShadow ?? defaultBadgeTokens.boxShadow,\r\n borderColor: b.borderColor ?? defaultBadgeTokens.borderColor,\r\n };\r\n}\r\n\r\n// FilterPopover tokens (from components/filterpopover.json)\r\nexport interface FilterPopoverTokens {\r\n minWidth: string;\r\n minHeight: string;\r\n maxHeight: string;\r\n padding: string;\r\n background: string;\r\n border: string;\r\n borderRadius: string;\r\n innerBorderRadius: string;\r\n boxShadow: string;\r\n headerBackground: string;\r\n headerPadding: string;\r\n headerTitleFontSize: string;\r\n headerTitleFontWeight: string;\r\n headerTitleColor: string;\r\n headerMarginBottom: string;\r\n contentPadding: string;\r\n contentGap: string;\r\n footerPadding: string;\r\n footerMarginTop: string;\r\n footerGap: string;\r\n}\r\n\r\nconst fpComp = components.filterpopover as Record<string, any> | undefined;\r\nconst fpHeader = fpComp?.header ?? {};\r\nconst fpContent = fpComp?.content ?? {};\r\nconst fpFooter = fpComp?.footer ?? {};\r\nexport const FILTERPOPOVER_TOKENS: FilterPopoverTokens = {\r\n minWidth: fpComp?.minWidth ?? '380px',\r\n minHeight: fpComp?.minHeight ?? '1px',\r\n maxHeight: fpComp?.maxHeight ?? 'calc(100vh - 156px)',\r\n padding: fpComp?.padding ?? '16px',\r\n background: fpComp?.background ?? '#FFFFFF',\r\n border: fpComp?.border ?? '1px solid #E7EBEE',\r\n borderRadius: fpComp?.borderRadius ?? '16px',\r\n innerBorderRadius: fpComp?.innerBorderRadius ?? '16px 16px 0 0',\r\n boxShadow:\r\n fpComp?.boxShadow ??\r\n '0px 3px 15px -3px rgba(16, 24, 40, 0.1), 0px 2px 8px -4px rgba(16, 24, 40, 0.1)',\r\n headerBackground: fpHeader.background ?? '#FAF8F4',\r\n headerPadding: fpHeader.padding ?? '16px',\r\n headerTitleFontSize: fpHeader.titleFontSize ?? '16px',\r\n headerTitleFontWeight: fpHeader.titleFontWeight ?? '500',\r\n headerTitleColor: fpHeader.titleColor ?? '#1F1F1F',\r\n headerMarginBottom: fpHeader.marginBottom ?? '0px',\r\n contentPadding: fpContent.padding ?? '16px',\r\n contentGap: fpContent.gap ?? '12px',\r\n footerPadding: fpFooter.padding ?? '16px',\r\n footerMarginTop: fpFooter.marginTop ?? '0px',\r\n footerGap: fpFooter.gap ?? '16px',\r\n};\r\n\r\n/** Build FilterPopover tokens from resolved tokens (e.g. from useTokens()). Responsive values (minWidth, minHeight, padding, borderRadius) update automatically per breakpoint. */\r\nexport function getFilterPopoverTokensFromResolved(resolved: ResolvedTokens): FilterPopoverTokens {\r\n const fp = resolved.components?.filterpopover as Record<string, any> | undefined;\r\n if (!fp) return FILTERPOPOVER_TOKENS;\r\n const header = fp.header ?? {};\r\n const content = fp.content ?? {};\r\n const footer = fp.footer ?? {};\r\n return {\r\n minWidth: fp.minWidth ?? FILTERPOPOVER_TOKENS.minWidth,\r\n minHeight: fp.minHeight ?? FILTERPOPOVER_TOKENS.minHeight,\r\n maxHeight: fp.maxHeight ?? FILTERPOPOVER_TOKENS.maxHeight,\r\n padding: fp.padding ?? FILTERPOPOVER_TOKENS.padding,\r\n background: fp.background ?? FILTERPOPOVER_TOKENS.background,\r\n border: fp.border ?? FILTERPOPOVER_TOKENS.border,\r\n borderRadius: fp.borderRadius ?? FILTERPOPOVER_TOKENS.borderRadius,\r\n innerBorderRadius: fp.innerBorderRadius ?? FILTERPOPOVER_TOKENS.innerBorderRadius,\r\n boxShadow: fp.boxShadow ?? FILTERPOPOVER_TOKENS.boxShadow,\r\n headerBackground: header.background ?? FILTERPOPOVER_TOKENS.headerBackground,\r\n headerPadding: header.padding ?? FILTERPOPOVER_TOKENS.headerPadding,\r\n headerTitleFontSize: header.titleFontSize ?? FILTERPOPOVER_TOKENS.headerTitleFontSize,\r\n headerTitleFontWeight: header.titleFontWeight ?? FILTERPOPOVER_TOKENS.headerTitleFontWeight,\r\n headerTitleColor: header.titleColor ?? FILTERPOPOVER_TOKENS.headerTitleColor,\r\n headerMarginBottom: header.marginBottom ?? FILTERPOPOVER_TOKENS.headerMarginBottom,\r\n contentPadding: content.padding ?? FILTERPOPOVER_TOKENS.contentPadding,\r\n contentGap: content.gap ?? FILTERPOPOVER_TOKENS.contentGap,\r\n footerPadding: footer.padding ?? FILTERPOPOVER_TOKENS.footerPadding,\r\n footerMarginTop: footer.marginTop ?? FILTERPOPOVER_TOKENS.footerMarginTop,\r\n footerGap: footer.gap ?? FILTERPOPOVER_TOKENS.footerGap,\r\n };\r\n}\r\n\r\n/** Build UploadDropzone tokens from resolved tokens (e.g. from useTokens()). */\r\nexport function getUploadDropzoneTokensFromResolved(\r\n resolved: ResolvedTokens\r\n): UploadDropzoneTokens {\r\n const ud = resolved.components?.uploaddropzone as Record<string, any> | undefined;\r\n if (!ud) return defaultUploadDropzoneTokens;\r\n const t = ud.title ?? {};\r\n const z = ud.zone ?? {};\r\n const i = ud.icon ?? {};\r\n const inst = ud.instruction ?? {};\r\n const h = ud.hint ?? {};\r\n const b = ud.button ?? {};\r\n const sf = ud.selectedFile ?? {};\r\n const d = ud.disabled ?? {};\r\n return {\r\n titleFontSize: t.fontSize ?? defaultUploadDropzoneTokens.titleFontSize,\r\n titleFontWeight:\r\n typeof t.fontWeight === 'string' ?\r\n parseInt(t.fontWeight, 10)\r\n : (t.fontWeight ?? defaultUploadDropzoneTokens.titleFontWeight),\r\n titleFontFamily: t.fontFamily ?? defaultUploadDropzoneTokens.titleFontFamily,\r\n titleLineHeight: t.lineHeight ?? defaultUploadDropzoneTokens.titleLineHeight,\r\n titleColor: t.color ?? defaultUploadDropzoneTokens.titleColor,\r\n titleMarginBottom: t.marginBottom ?? defaultUploadDropzoneTokens.titleMarginBottom,\r\n zoneBackground: z.background ?? defaultUploadDropzoneTokens.zoneBackground,\r\n zoneBorder: z.border ?? defaultUploadDropzoneTokens.zoneBorder,\r\n zoneBorderActive: z.borderActive ?? defaultUploadDropzoneTokens.zoneBorderActive,\r\n zoneBackgroundActive: z.backgroundActive ?? defaultUploadDropzoneTokens.zoneBackgroundActive,\r\n zoneBorderRadius: z.borderRadius ?? defaultUploadDropzoneTokens.zoneBorderRadius,\r\n zonePaddingY: z.paddingY ?? defaultUploadDropzoneTokens.zonePaddingY,\r\n zonePaddingX: z.paddingX ?? defaultUploadDropzoneTokens.zonePaddingX,\r\n zoneGap: z.gap ?? defaultUploadDropzoneTokens.zoneGap,\r\n iconSize: i.size ?? defaultUploadDropzoneTokens.iconSize,\r\n iconMarginBottom: i.marginBottom ?? defaultUploadDropzoneTokens.iconMarginBottom,\r\n iconBackground: i.background ?? defaultUploadDropzoneTokens.iconBackground,\r\n iconColor: i.color ?? defaultUploadDropzoneTokens.iconColor,\r\n iconBorderRadius: i.borderRadius ?? defaultUploadDropzoneTokens.iconBorderRadius,\r\n iconBorder: i.border ?? defaultUploadDropzoneTokens.iconBorder,\r\n instructionFontSize: inst.fontSize ?? defaultUploadDropzoneTokens.instructionFontSize,\r\n instructionFontWeight:\r\n typeof inst.fontWeight === 'string' ?\r\n parseInt(inst.fontWeight, 10)\r\n : (inst.fontWeight ?? defaultUploadDropzoneTokens.instructionFontWeight),\r\n instructionFontFamily: inst.fontFamily ?? defaultUploadDropzoneTokens.instructionFontFamily,\r\n instructionLineHeight: inst.lineHeight ?? defaultUploadDropzoneTokens.instructionLineHeight,\r\n instructionColor: inst.color ?? defaultUploadDropzoneTokens.instructionColor,\r\n instructionMarginBottom:\r\n inst.marginBottom ?? defaultUploadDropzoneTokens.instructionMarginBottom,\r\n hintFontSize: h.fontSize ?? defaultUploadDropzoneTokens.hintFontSize,\r\n hintFontWeight:\r\n typeof h.fontWeight === 'string' ?\r\n parseInt(h.fontWeight, 10)\r\n : (h.fontWeight ?? defaultUploadDropzoneTokens.hintFontWeight),\r\n hintFontFamily: h.fontFamily ?? defaultUploadDropzoneTokens.hintFontFamily,\r\n hintLineHeight: h.lineHeight ?? defaultUploadDropzoneTokens.hintLineHeight,\r\n hintColor: h.color ?? defaultUploadDropzoneTokens.hintColor,\r\n hintMarginBottom: h.marginBottom ?? defaultUploadDropzoneTokens.hintMarginBottom,\r\n buttonFontSize: b.fontSize ?? defaultUploadDropzoneTokens.buttonFontSize,\r\n buttonFontWeight:\r\n typeof b.fontWeight === 'string' ?\r\n parseInt(b.fontWeight, 10)\r\n : (b.fontWeight ?? defaultUploadDropzoneTokens.buttonFontWeight),\r\n buttonFontFamily: b.fontFamily ?? defaultUploadDropzoneTokens.buttonFontFamily,\r\n buttonColor: b.color ?? defaultUploadDropzoneTokens.buttonColor,\r\n buttonBackground: b.background ?? defaultUploadDropzoneTokens.buttonBackground,\r\n buttonBorder: b.border ?? defaultUploadDropzoneTokens.buttonBorder,\r\n buttonBorderRadius: b.borderRadius ?? defaultUploadDropzoneTokens.buttonBorderRadius,\r\n buttonPaddingY: b.paddingY ?? defaultUploadDropzoneTokens.buttonPaddingY,\r\n buttonPaddingX: b.paddingX ?? defaultUploadDropzoneTokens.buttonPaddingX,\r\n selectedFileFontSize: sf.fontSize ?? defaultUploadDropzoneTokens.selectedFileFontSize,\r\n selectedFileFontFamily: sf.fontFamily ?? defaultUploadDropzoneTokens.selectedFileFontFamily,\r\n selectedFileColor: sf.color ?? defaultUploadDropzoneTokens.selectedFileColor,\r\n selectedFileMarginTop: sf.marginTop ?? defaultUploadDropzoneTokens.selectedFileMarginTop,\r\n disabledOpacity: d.opacity ?? defaultUploadDropzoneTokens.disabledOpacity,\r\n };\r\n}\r\n\r\n// Loader token types (aligned with components/loader.json).\r\nexport interface LoaderTokens {\r\n backdropBackground: string;\r\n backdropOpacity: string;\r\n backdropZIndex: string;\r\n dotColor: string;\r\n dotSize: string;\r\n dotActiveSpread: string;\r\n dotGap: string;\r\n}\r\n\r\nconst loaderComp = components.loader as Record<string, any> | undefined;\r\nexport const LOADER_TOKENS: LoaderTokens = {\r\n backdropBackground: loaderComp?.backdrop?.background ?? '#000000',\r\n backdropOpacity: loaderComp?.backdrop?.opacity ?? '0.5',\r\n backdropZIndex: loaderComp?.backdrop?.zIndex ?? '9999',\r\n dotColor: loaderComp?.dot?.color ?? '#00545E',\r\n dotSize: loaderComp?.dot?.size ?? '4px',\r\n dotActiveSpread: loaderComp?.dot?.activeSpread ?? '4px',\r\n dotGap: loaderComp?.dot?.gap ?? '20px',\r\n};\r\n\r\nconst defaultLoaderTokens = LOADER_TOKENS;\r\n\r\n/** Build Loader tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when theme mode (light/dark) or brand changes. */\r\nexport function getLoaderTokensFromResolved(resolved: ResolvedTokens): LoaderTokens {\r\n const l = resolved.components?.loader as Record<string, any> | undefined;\r\n if (!l) return defaultLoaderTokens;\r\n return {\r\n backdropBackground: l.backdrop?.background ?? defaultLoaderTokens.backdropBackground,\r\n backdropOpacity: l.backdrop?.opacity ?? defaultLoaderTokens.backdropOpacity,\r\n backdropZIndex: l.backdrop?.zIndex ?? defaultLoaderTokens.backdropZIndex,\r\n dotColor: l.dot?.color ?? defaultLoaderTokens.dotColor,\r\n dotSize: l.dot?.size ?? defaultLoaderTokens.dotSize,\r\n dotActiveSpread: l.dot?.activeSpread ?? defaultLoaderTokens.dotActiveSpread,\r\n dotGap: l.dot?.gap ?? defaultLoaderTokens.dotGap,\r\n };\r\n}\r\n\r\n// Skeleton token types (aligned with components/skeleton.json).\r\nexport interface SkeletonTokens {\r\n baseColor: string;\r\n highlightColor: string;\r\n}\r\n\r\nconst skeletonComp = components.skeleton as Record<string, any> | undefined;\r\nexport const SKELETON_TOKENS: SkeletonTokens = {\r\n baseColor: skeletonComp?.baseColor ?? '#e5e9eb',\r\n highlightColor: skeletonComp?.highlightColor ?? '#f3f5f6',\r\n};\r\n\r\nconst defaultSkeletonTokens = SKELETON_TOKENS;\r\n\r\n/** Build Skeleton tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when theme mode (light/dark) or brand changes. */\r\nexport function getSkeletonTokensFromResolved(resolved: ResolvedTokens): SkeletonTokens {\r\n const s = resolved.components?.skeleton as Record<string, any> | undefined;\r\n if (!s) return defaultSkeletonTokens;\r\n return {\r\n baseColor: s.baseColor ?? defaultSkeletonTokens.baseColor,\r\n highlightColor: s.highlightColor ?? defaultSkeletonTokens.highlightColor,\r\n };\r\n}\r\n\r\n// DataTable token types (aligned with components/datatable.json).\r\nexport interface DataTableTokens {\r\n headerBackground: string;\r\n headerColor: string;\r\n headerFontWeight: string;\r\n headerFontSize: string;\r\n headerPadding: string;\r\n headerBorderBottom: string;\r\n headerBorderRight: string;\r\n cellPadding: string;\r\n cellFontSize: string;\r\n cellColor: string;\r\n cellBorderBottom: string;\r\n rowBackground: string;\r\n rowStripeBackground: string;\r\n rowHoverBackground: string;\r\n skeletonBaseColor: string;\r\n skeletonHeight: string;\r\n skeletonRadius: string;\r\n emptyStateColor: string;\r\n emptyStateFontSize: string;\r\n tableBorder: string;\r\n sortIconWidth: string;\r\n sortIconHeight: string;\r\n}\r\n\r\nconst datatableComp = components.datatable as Record<string, any> | undefined;\r\nexport const DATATABLE_TOKENS: DataTableTokens = {\r\n headerBackground: datatableComp?.header?.background ?? '#F9FAFB',\r\n headerColor: datatableComp?.header?.color ?? '#00545E',\r\n headerFontWeight: String(datatableComp?.header?.fontWeight ?? '600'),\r\n headerFontSize: datatableComp?.header?.fontSize ?? '12px',\r\n headerPadding: datatableComp?.header?.padding ?? '16px',\r\n headerBorderBottom: datatableComp?.header?.borderBottom ?? '#E5E7EB',\r\n headerBorderRight: datatableComp?.header?.borderRight ?? '#00545E',\r\n cellPadding: datatableComp?.cell?.padding ?? '16px',\r\n cellFontSize: datatableComp?.cell?.fontSize ?? '12px',\r\n cellColor: datatableComp?.cell?.color ?? 'rgba(0,0,0,0.87)',\r\n cellBorderBottom: datatableComp?.cell?.borderBottom ?? '#E5E7EB',\r\n rowBackground: datatableComp?.row?.background ?? '#FFFFFF',\r\n rowStripeBackground: datatableComp?.row?.stripeBackground ?? '#F3F5F6',\r\n rowHoverBackground: datatableComp?.row?.hoverBackground ?? '#F3F4F6',\r\n skeletonBaseColor: datatableComp?.skeleton?.baseColor ?? '#f3f4f6',\r\n skeletonHeight: datatableComp?.skeleton?.height ?? '16px',\r\n skeletonRadius: datatableComp?.skeleton?.borderRadius ?? '4px',\r\n emptyStateColor: datatableComp?.emptyState?.color ?? '#6B7280',\r\n emptyStateFontSize: datatableComp?.emptyState?.fontSize ?? '16px',\r\n tableBorder: datatableComp?.table?.border ?? '1px solid #E5E7EB',\r\n sortIconWidth: datatableComp?.sortIcon?.width ?? '16px',\r\n sortIconHeight: datatableComp?.sortIcon?.height ?? '16px',\r\n};\r\n\r\nconst defaultDataTableTokens = DATATABLE_TOKENS;\r\n\r\n/** Build DataTable tokens from resolved tokens (e.g. from useTokens()). */\r\nexport function getDataTableTokensFromResolved(resolved: ResolvedTokens): DataTableTokens {\r\n const d = resolved.components?.datatable as Record<string, any> | undefined;\r\n if (!d) return defaultDataTableTokens;\r\n return {\r\n headerBackground: d.header?.background ?? defaultDataTableTokens.headerBackground,\r\n headerColor: d.header?.color ?? defaultDataTableTokens.headerColor,\r\n headerFontWeight: String(d.header?.fontWeight ?? defaultDataTableTokens.headerFontWeight),\r\n headerFontSize: d.header?.fontSize ?? defaultDataTableTokens.headerFontSize,\r\n headerPadding: d.header?.padding ?? defaultDataTableTokens.headerPadding,\r\n headerBorderBottom: d.header?.borderBottom ?? defaultDataTableTokens.headerBorderBottom,\r\n headerBorderRight: d.header?.borderRight ?? defaultDataTableTokens.headerBorderRight,\r\n cellPadding: d.cell?.padding ?? defaultDataTableTokens.cellPadding,\r\n cellFontSize: d.cell?.fontSize ?? defaultDataTableTokens.cellFontSize,\r\n cellColor: d.cell?.color ?? defaultDataTableTokens.cellColor,\r\n cellBorderBottom: d.cell?.borderBottom ?? defaultDataTableTokens.cellBorderBottom,\r\n rowBackground: d.row?.background ?? defaultDataTableTokens.rowBackground,\r\n rowStripeBackground: d.row?.stripeBackground ?? defaultDataTableTokens.rowStripeBackground,\r\n rowHoverBackground: d.row?.hoverBackground ?? defaultDataTableTokens.rowHoverBackground,\r\n skeletonBaseColor: d.skeleton?.baseColor ?? defaultDataTableTokens.skeletonBaseColor,\r\n skeletonHeight: d.skeleton?.height ?? defaultDataTableTokens.skeletonHeight,\r\n skeletonRadius: d.skeleton?.borderRadius ?? defaultDataTableTokens.skeletonRadius,\r\n emptyStateColor: d.emptyState?.color ?? defaultDataTableTokens.emptyStateColor,\r\n emptyStateFontSize: d.emptyState?.fontSize ?? defaultDataTableTokens.emptyStateFontSize,\r\n tableBorder: d.table?.border ?? defaultDataTableTokens.tableBorder,\r\n sortIconWidth: d.sortIcon?.width ?? defaultDataTableTokens.sortIconWidth,\r\n sortIconHeight: d.sortIcon?.height ?? defaultDataTableTokens.sortIconHeight,\r\n };\r\n}\r\n\r\nexport interface ProgressTokens {\r\n height: string;\r\n borderRadius: string;\r\n trackBackground: string;\r\n barBackground: string;\r\n}\r\n\r\nconst progressComp = defaultResolved.components?.progress;\r\nexport const PROGRESS_TOKENS: ProgressTokens = {\r\n height: progressComp?.height ?? '8px',\r\n borderRadius: progressComp?.borderRadius ?? '4px',\r\n trackBackground: progressComp?.track?.background ?? '#E0E0E0',\r\n barBackground: progressComp?.bar?.background ?? '#1976d2',\r\n};\r\n\r\nexport function getProgressTokensFromResolved(resolved: ResolvedTokens): ProgressTokens {\r\n const p = resolved.components?.progress as Record<string, any> | undefined;\r\n if (!p) return PROGRESS_TOKENS;\r\n return {\r\n height: p.height ?? PROGRESS_TOKENS.height,\r\n borderRadius: p.borderRadius ?? PROGRESS_TOKENS.borderRadius,\r\n trackBackground: p.track?.background ?? PROGRESS_TOKENS.trackBackground,\r\n barBackground: p.bar?.background ?? PROGRESS_TOKENS.barBackground,\r\n };\r\n}\r\n\r\nexport interface StatCardTokens {\r\n surfaceBackground: string;\r\n border: string;\r\n borderRadius: string;\r\n padding: string;\r\n gap: string;\r\n iconWellSize: string;\r\n iconWellBorderRadius: string;\r\n iconWellAccentMixPercent: string;\r\n labelFontSize: string;\r\n labelFontWeight: string | number;\r\n labelColor: string;\r\n valueFontSize: string;\r\n valueFontWeight: string | number;\r\n valueColor: string;\r\n}\r\n\r\nconst statCardComp = defaultResolved.components?.statCard as Record<string, any> | undefined;\r\n\r\nexport const STAT_CARD_TOKENS: StatCardTokens = {\r\n surfaceBackground: statCardComp?.surfaceBackground ?? '#ffffff',\r\n border: statCardComp?.border ?? '1px solid #E5E7EB',\r\n borderRadius: statCardComp?.borderRadius ?? '12px',\r\n padding: statCardComp?.padding ?? '12px 16px',\r\n gap: statCardComp?.gap ?? '12px',\r\n iconWellSize: statCardComp?.iconWell?.size ?? '34px',\r\n iconWellBorderRadius: statCardComp?.iconWell?.borderRadius ?? '8px',\r\n iconWellAccentMixPercent: String(statCardComp?.iconWell?.accentMixPercent ?? '14'),\r\n labelFontSize: statCardComp?.label?.fontSize ?? '12px',\r\n labelFontWeight: statCardComp?.label?.fontWeight ?? 600,\r\n labelColor: statCardComp?.label?.color ?? '#6B7280',\r\n valueFontSize: statCardComp?.value?.fontSize ?? '18px',\r\n valueFontWeight: statCardComp?.value?.fontWeight ?? 700,\r\n valueColor: statCardComp?.value?.color ?? '#111827',\r\n};\r\n\r\nexport function getStatCardTokensFromResolved(resolved: ResolvedTokens): StatCardTokens {\r\n const s = resolved.components?.statCard as Record<string, any> | undefined;\r\n if (!s) return STAT_CARD_TOKENS;\r\n const well = s.iconWell ?? {};\r\n const label = s.label ?? {};\r\n const value = s.value ?? {};\r\n return {\r\n surfaceBackground: s.surfaceBackground ?? STAT_CARD_TOKENS.surfaceBackground,\r\n border: s.border ?? STAT_CARD_TOKENS.border,\r\n borderRadius: s.borderRadius ?? STAT_CARD_TOKENS.borderRadius,\r\n padding: s.padding ?? STAT_CARD_TOKENS.padding,\r\n gap: s.gap ?? STAT_CARD_TOKENS.gap,\r\n iconWellSize: well.size ?? STAT_CARD_TOKENS.iconWellSize,\r\n iconWellBorderRadius: well.borderRadius ?? STAT_CARD_TOKENS.iconWellBorderRadius,\r\n iconWellAccentMixPercent: String(\r\n well.accentMixPercent ?? STAT_CARD_TOKENS.iconWellAccentMixPercent\r\n ),\r\n labelFontSize: label.fontSize ?? STAT_CARD_TOKENS.labelFontSize,\r\n labelFontWeight: label.fontWeight ?? STAT_CARD_TOKENS.labelFontWeight,\r\n labelColor: label.color ?? STAT_CARD_TOKENS.labelColor,\r\n valueFontSize: value.fontSize ?? STAT_CARD_TOKENS.valueFontSize,\r\n valueFontWeight: value.fontWeight ?? STAT_CARD_TOKENS.valueFontWeight,\r\n valueColor: value.color ?? STAT_CARD_TOKENS.valueColor,\r\n };\r\n}\r\n\r\nexport interface StepperTokens {\r\n gap: string;\r\n stepGap: string;\r\n line: {\r\n width: string;\r\n height: string;\r\n completedBackground: string;\r\n pendingBackground: string;\r\n };\r\n indicator: {\r\n size: string;\r\n borderWidth: string;\r\n fontFamily: string;\r\n fontSize: string;\r\n fontWeight: string;\r\n lineHeight: string;\r\n completedBackground: string;\r\n completedBorder: string;\r\n completedColor: string;\r\n activeBackground: string;\r\n activeBorder: string;\r\n activeColor: string;\r\n pendingBackground: string;\r\n pendingBorder: string;\r\n pendingColor: string;\r\n };\r\n label: {\r\n fontFamily: string;\r\n fontSize: string;\r\n fontWeight: string;\r\n lineHeight: string;\r\n completedColor: string;\r\n activeColor: string;\r\n pendingColor: string;\r\n };\r\n}\r\n\r\nconst stepperComp = defaultResolved.components?.stepper;\r\nexport const STEPPER_TOKENS: StepperTokens = {\r\n gap: stepperComp?.gap ?? '8px',\r\n stepGap: stepperComp?.stepGap ?? '8px',\r\n line: {\r\n width: stepperComp?.line?.width ?? '40px',\r\n height: stepperComp?.line?.height ?? '2px',\r\n completedBackground: stepperComp?.line?.completedBackground ?? '#198754',\r\n pendingBackground: stepperComp?.line?.pendingBackground ?? '#D1D5DB',\r\n },\r\n indicator: {\r\n size: stepperComp?.indicator?.size ?? '34px',\r\n borderWidth: stepperComp?.indicator?.borderWidth ?? '2px',\r\n fontFamily: stepperComp?.indicator?.fontFamily ?? '\"Inter\", sans-serif',\r\n fontSize: stepperComp?.indicator?.fontSize ?? '16px',\r\n fontWeight: String(stepperComp?.indicator?.fontWeight ?? '600'),\r\n lineHeight: stepperComp?.indicator?.lineHeight ?? '24px',\r\n completedBackground: stepperComp?.indicator?.completedBackground ?? '#198754',\r\n completedBorder: stepperComp?.indicator?.completedBorder ?? '#198754',\r\n completedColor: stepperComp?.indicator?.completedColor ?? '#ffffff',\r\n activeBackground: stepperComp?.indicator?.activeBackground ?? '#e8f5ec',\r\n activeBorder: stepperComp?.indicator?.activeBorder ?? '#198754',\r\n activeColor: stepperComp?.indicator?.activeColor ?? '#2e3f2d',\r\n pendingBackground: stepperComp?.indicator?.pendingBackground ?? '#ffffff',\r\n pendingBorder: stepperComp?.indicator?.pendingBorder ?? '#D1D5DB',\r\n pendingColor: stepperComp?.indicator?.pendingColor ?? '#9CA3AF',\r\n },\r\n label: {\r\n fontFamily: stepperComp?.label?.fontFamily ?? '\"Inter\", sans-serif',\r\n fontSize: stepperComp?.label?.fontSize ?? '32px',\r\n fontWeight: String(stepperComp?.label?.fontWeight ?? '600'),\r\n lineHeight: stepperComp?.label?.lineHeight ?? '24px',\r\n completedColor: stepperComp?.label?.completedColor ?? '#2e3f2d',\r\n activeColor: stepperComp?.label?.activeColor ?? '#2e3f2d',\r\n pendingColor: stepperComp?.label?.pendingColor ?? '#9CA3AF',\r\n },\r\n};\r\n\r\nexport function getStepperTokensFromResolved(resolved: ResolvedTokens): StepperTokens {\r\n const s = resolved.components?.stepper as Record<string, any> | undefined;\r\n if (!s) return STEPPER_TOKENS;\r\n\r\n return {\r\n gap: s.gap ?? STEPPER_TOKENS.gap,\r\n stepGap: s.stepGap ?? STEPPER_TOKENS.stepGap,\r\n line: {\r\n width: s.line?.width ?? STEPPER_TOKENS.line.width,\r\n height: s.line?.height ?? STEPPER_TOKENS.line.height,\r\n completedBackground: s.line?.completedBackground ?? STEPPER_TOKENS.line.completedBackground,\r\n pendingBackground: s.line?.pendingBackground ?? STEPPER_TOKENS.line.pendingBackground,\r\n },\r\n indicator: {\r\n size: s.indicator?.size ?? STEPPER_TOKENS.indicator.size,\r\n borderWidth: s.indicator?.borderWidth ?? STEPPER_TOKENS.indicator.borderWidth,\r\n fontFamily: s.indicator?.fontFamily ?? STEPPER_TOKENS.indicator.fontFamily,\r\n fontSize: s.indicator?.fontSize ?? STEPPER_TOKENS.indicator.fontSize,\r\n fontWeight: String(s.indicator?.fontWeight ?? STEPPER_TOKENS.indicator.fontWeight),\r\n lineHeight: s.indicator?.lineHeight ?? STEPPER_TOKENS.indicator.lineHeight,\r\n completedBackground:\r\n s.indicator?.completedBackground ?? STEPPER_TOKENS.indicator.completedBackground,\r\n completedBorder: s.indicator?.completedBorder ?? STEPPER_TOKENS.indicator.completedBorder,\r\n completedColor: s.indicator?.completedColor ?? STEPPER_TOKENS.indicator.completedColor,\r\n activeBackground: s.indicator?.activeBackground ?? STEPPER_TOKENS.indicator.activeBackground,\r\n activeBorder: s.indicator?.activeBorder ?? STEPPER_TOKENS.indicator.activeBorder,\r\n activeColor: s.indicator?.activeColor ?? STEPPER_TOKENS.indicator.activeColor,\r\n pendingBackground:\r\n s.indicator?.pendingBackground ?? STEPPER_TOKENS.indicator.pendingBackground,\r\n pendingBorder: s.indicator?.pendingBorder ?? STEPPER_TOKENS.indicator.pendingBorder,\r\n pendingColor: s.indicator?.pendingColor ?? STEPPER_TOKENS.indicator.pendingColor,\r\n },\r\n label: {\r\n fontFamily: s.label?.fontFamily ?? STEPPER_TOKENS.label.fontFamily,\r\n fontSize: s.label?.fontSize ?? STEPPER_TOKENS.label.fontSize,\r\n fontWeight: String(s.label?.fontWeight ?? STEPPER_TOKENS.label.fontWeight),\r\n lineHeight: s.label?.lineHeight ?? STEPPER_TOKENS.label.lineHeight,\r\n completedColor: s.label?.completedColor ?? STEPPER_TOKENS.label.completedColor,\r\n activeColor: s.label?.activeColor ?? STEPPER_TOKENS.label.activeColor,\r\n pendingColor: s.label?.pendingColor ?? STEPPER_TOKENS.label.pendingColor,\r\n },\r\n };\r\n}\r\n\r\nexport interface AccordionTokens {\r\n container: {\r\n width: string;\r\n borderWidth: string;\r\n borderColor: string;\r\n borderRadius: string;\r\n background: string;\r\n };\r\n header: {\r\n padding: string;\r\n gap: string;\r\n contentGap: string;\r\n defaultBackground: string;\r\n hoverBackground: string;\r\n expandedBackground: string;\r\n };\r\n statusIcon: {\r\n size: string;\r\n background: string;\r\n color: string;\r\n symbol: string;\r\n fontSize: string;\r\n fontWeight: string;\r\n lineHeight: string;\r\n };\r\n title: {\r\n fontFamily: string;\r\n fontSize: string;\r\n fontWeight: string;\r\n lineHeight: string;\r\n color: string;\r\n };\r\n subtitle: {\r\n fontFamily: string;\r\n fontSize: string;\r\n fontStyle: string;\r\n fontWeight: string;\r\n lineHeight: string;\r\n color: string;\r\n };\r\n actionIcon: {\r\n size: string;\r\n color: string;\r\n strokeWidth: string;\r\n };\r\n content: {\r\n padding: string;\r\n background: string;\r\n };\r\n}\r\n\r\nconst accordionComp = defaultResolved.components?.accordion;\r\nexport const ACCORDION_TOKENS: AccordionTokens = {\r\n container: {\r\n width: accordionComp?.container?.width ?? '100%',\r\n borderWidth: accordionComp?.container?.borderWidth ?? '1px',\r\n borderColor: accordionComp?.container?.borderColor ?? '#D4DDE1',\r\n borderRadius: accordionComp?.container?.borderRadius ?? '12px',\r\n background: accordionComp?.container?.background ?? '#ffffff',\r\n },\r\n header: {\r\n padding: accordionComp?.header?.padding ?? '20px',\r\n gap: accordionComp?.header?.gap ?? '16px',\r\n contentGap: accordionComp?.header?.contentGap ?? '16px',\r\n defaultBackground: accordionComp?.header?.defaultBackground ?? '#f5f7f8',\r\n hoverBackground: accordionComp?.header?.hoverBackground ?? '#ffffff',\r\n expandedBackground: accordionComp?.header?.expandedBackground ?? '#e7f2d4',\r\n },\r\n statusIcon: {\r\n size: accordionComp?.statusIcon?.size ?? '40px',\r\n background: accordionComp?.statusIcon?.background ?? '#6B8F00',\r\n color: accordionComp?.statusIcon?.color ?? '#ffffff',\r\n symbol: accordionComp?.statusIcon?.symbol ?? '✓',\r\n fontSize: accordionComp?.statusIcon?.fontSize ?? '20px',\r\n fontWeight: String(accordionComp?.statusIcon?.fontWeight ?? '700'),\r\n lineHeight: accordionComp?.statusIcon?.lineHeight ?? '20px',\r\n },\r\n title: {\r\n fontFamily: accordionComp?.title?.fontFamily ?? '\"Inter\", sans-serif',\r\n fontSize: accordionComp?.title?.fontSize ?? '34px',\r\n fontWeight: String(accordionComp?.title?.fontWeight ?? '600'),\r\n lineHeight: accordionComp?.title?.lineHeight ?? '40px',\r\n color: accordionComp?.title?.color ?? '#22313A',\r\n },\r\n subtitle: {\r\n fontFamily: accordionComp?.subtitle?.fontFamily ?? '\"Inter\", sans-serif',\r\n fontSize: accordionComp?.subtitle?.fontSize ?? '30px',\r\n fontStyle: accordionComp?.subtitle?.fontStyle ?? 'italic',\r\n fontWeight: String(accordionComp?.subtitle?.fontWeight ?? '500'),\r\n lineHeight: accordionComp?.subtitle?.lineHeight ?? '32px',\r\n color: accordionComp?.subtitle?.color ?? '#56636A',\r\n },\r\n actionIcon: {\r\n size: accordionComp?.actionIcon?.size ?? '24px',\r\n color: accordionComp?.actionIcon?.color ?? '#6B8F00',\r\n strokeWidth: accordionComp?.actionIcon?.strokeWidth ?? '2px',\r\n },\r\n content: {\r\n padding: accordionComp?.content?.padding ?? '20px',\r\n background: accordionComp?.content?.background ?? '#ffffff',\r\n },\r\n};\r\n\r\nexport function getAccordionTokensFromResolved(resolved: ResolvedTokens): AccordionTokens {\r\n const a = resolved.components?.accordion as Record<string, any> | undefined;\r\n if (!a) return ACCORDION_TOKENS;\r\n\r\n return {\r\n container: {\r\n width: a.container?.width ?? ACCORDION_TOKENS.container.width,\r\n borderWidth: a.container?.borderWidth ?? ACCORDION_TOKENS.container.borderWidth,\r\n borderColor: a.container?.borderColor ?? ACCORDION_TOKENS.container.borderColor,\r\n borderRadius: a.container?.borderRadius ?? ACCORDION_TOKENS.container.borderRadius,\r\n background: a.container?.background ?? ACCORDION_TOKENS.container.background,\r\n },\r\n header: {\r\n padding: a.header?.padding ?? ACCORDION_TOKENS.header.padding,\r\n gap: a.header?.gap ?? ACCORDION_TOKENS.header.gap,\r\n contentGap: a.header?.contentGap ?? ACCORDION_TOKENS.header.contentGap,\r\n defaultBackground: a.header?.defaultBackground ?? ACCORDION_TOKENS.header.defaultBackground,\r\n hoverBackground: a.header?.hoverBackground ?? ACCORDION_TOKENS.header.hoverBackground,\r\n expandedBackground:\r\n a.header?.expandedBackground ?? ACCORDION_TOKENS.header.expandedBackground,\r\n },\r\n statusIcon: {\r\n size: a.statusIcon?.size ?? ACCORDION_TOKENS.statusIcon.size,\r\n background: a.statusIcon?.background ?? ACCORDION_TOKENS.statusIcon.background,\r\n color: a.statusIcon?.color ?? ACCORDION_TOKENS.statusIcon.color,\r\n symbol: a.statusIcon?.symbol ?? ACCORDION_TOKENS.statusIcon.symbol,\r\n fontSize: a.statusIcon?.fontSize ?? ACCORDION_TOKENS.statusIcon.fontSize,\r\n fontWeight: String(a.statusIcon?.fontWeight ?? ACCORDION_TOKENS.statusIcon.fontWeight),\r\n lineHeight: a.statusIcon?.lineHeight ?? ACCORDION_TOKENS.statusIcon.lineHeight,\r\n },\r\n title: {\r\n fontFamily: a.title?.fontFamily ?? ACCORDION_TOKENS.title.fontFamily,\r\n fontSize: a.title?.fontSize ?? ACCORDION_TOKENS.title.fontSize,\r\n fontWeight: String(a.title?.fontWeight ?? ACCORDION_TOKENS.title.fontWeight),\r\n lineHeight: a.title?.lineHeight ?? ACCORDION_TOKENS.title.lineHeight,\r\n color: a.title?.color ?? ACCORDION_TOKENS.title.color,\r\n },\r\n subtitle: {\r\n fontFamily: a.subtitle?.fontFamily ?? ACCORDION_TOKENS.subtitle.fontFamily,\r\n fontSize: a.subtitle?.fontSize ?? ACCORDION_TOKENS.subtitle.fontSize,\r\n fontStyle: a.subtitle?.fontStyle ?? ACCORDION_TOKENS.subtitle.fontStyle,\r\n fontWeight: String(a.subtitle?.fontWeight ?? ACCORDION_TOKENS.subtitle.fontWeight),\r\n lineHeight: a.subtitle?.lineHeight ?? ACCORDION_TOKENS.subtitle.lineHeight,\r\n color: a.subtitle?.color ?? ACCORDION_TOKENS.subtitle.color,\r\n },\r\n actionIcon: {\r\n size: a.actionIcon?.size ?? ACCORDION_TOKENS.actionIcon.size,\r\n color: a.actionIcon?.color ?? ACCORDION_TOKENS.actionIcon.color,\r\n strokeWidth: a.actionIcon?.strokeWidth ?? ACCORDION_TOKENS.actionIcon.strokeWidth,\r\n },\r\n content: {\r\n padding: a.content?.padding ?? ACCORDION_TOKENS.content.padding,\r\n background: a.content?.background ?? ACCORDION_TOKENS.content.background,\r\n },\r\n };\r\n}\r\n\r\n// ReportCard tokens\r\nexport interface ReportCardTokens {\r\n headerBackground: string;\r\n headerColor: string;\r\n bodyBackground: string;\r\n dividerColor: string;\r\n bulletColor: string;\r\n itemColor: string;\r\n itemHoverColor: string;\r\n borderRadius: string;\r\n shadow: string;\r\n}\r\n\r\nconst reportCardComp = (components as any).reportcard as Record<string, any> | undefined;\r\nexport const REPORT_CARD_TOKENS: ReportCardTokens = {\r\n headerBackground: reportCardComp?.header?.background ?? '#52760A',\r\n headerColor: reportCardComp?.header?.color ?? '#ffffff',\r\n bodyBackground: reportCardComp?.body?.background ?? '#ffffff',\r\n dividerColor: reportCardComp?.body?.dividerColor ?? '#E5E9EB',\r\n bulletColor: reportCardComp?.body?.bulletColor ?? '#D1D5DB',\r\n itemColor: reportCardComp?.body?.itemColor ?? '#4B5563',\r\n itemHoverColor: reportCardComp?.body?.itemHoverColor ?? '#52760A',\r\n borderRadius: reportCardComp?.borderRadius ?? '8px',\r\n shadow: reportCardComp?.shadow ?? '0 1px 4px rgba(0,0,0,0.08)',\r\n};\r\n\r\nconst defaultReportCardTokens = REPORT_CARD_TOKENS;\r\n\r\n/** Build ReportCard tokens from resolved tokens (e.g. from useTokens()). Use this so tokens update when theme mode (light/dark) or brand changes. */\r\nexport function getReportCardTokensFromResolved(resolved: ResolvedTokens): ReportCardTokens {\r\n const rc = (resolved.components as any)?.reportcard as Record<string, any> | undefined;\r\n if (!rc) return defaultReportCardTokens;\r\n return {\r\n headerBackground: rc.header?.background ?? defaultReportCardTokens.headerBackground,\r\n headerColor: rc.header?.color ?? defaultReportCardTokens.headerColor,\r\n bodyBackground: rc.body?.background ?? defaultReportCardTokens.bodyBackground,\r\n dividerColor: rc.body?.dividerColor ?? defaultReportCardTokens.dividerColor,\r\n bulletColor: rc.body?.bulletColor ?? defaultReportCardTokens.bulletColor,\r\n itemColor: rc.body?.itemColor ?? defaultReportCardTokens.itemColor,\r\n itemHoverColor: rc.body?.itemHoverColor ?? defaultReportCardTokens.itemHoverColor,\r\n borderRadius: rc.borderRadius ?? defaultReportCardTokens.borderRadius,\r\n shadow: rc.shadow ?? defaultReportCardTokens.shadow,\r\n };\r\n}\r\n\r\n// Spacing (legacy format)\r\nexport const spacing = {\r\n xs: foundation.spacing['1'],\r\n sm: foundation.spacing['2'],\r\n md: foundation.spacing['3'],\r\n lg: foundation.spacing['4'],\r\n};\r\n","import { createContext, useContext, useMemo, useState, useEffect, ReactNode } from 'react';\r\nimport {\r\n getTokens,\r\n getScreen,\r\n getBreakpoints,\r\n type ResolvedTokens,\r\n type BrandKey,\r\n type ThemeMode,\r\n} from '../tokens';\r\n\r\nexport interface ThemeContextValue {\r\n brand: BrandKey;\r\n mode: ThemeMode;\r\n tokens: ResolvedTokens;\r\n}\r\n\r\nconst defaultTokens = getTokens({\r\n brand: 'cpc',\r\n mode: 'light',\r\n screen: 'desktop',\r\n});\r\n\r\nexport const ThemeContext = createContext<ThemeContextValue>({\r\n brand: 'cpc',\r\n mode: 'light',\r\n tokens: defaultTokens,\r\n});\r\n\r\nexport interface DesignSystemThemeProviderProps {\r\n brand?: BrandKey;\r\n mode?: ThemeMode;\r\n children: ReactNode;\r\n}\r\n\r\nexport function DesignSystemThemeProvider({\r\n brand = 'cpc',\r\n mode = 'light',\r\n children,\r\n}: DesignSystemThemeProviderProps) {\r\n const breakpoints = useMemo(() => getBreakpoints(), []);\r\n // Start with \"desktop\" so we never use a wrong read from before viewport is applied\r\n const [screen, setScreen] = useState<ReturnType<typeof getScreen>>('desktop');\r\n\r\n useEffect(() => {\r\n const updateScreen = () => setScreen(getScreen(breakpoints));\r\n // Run immediately (correct on many loads)\r\n updateScreen();\r\n // Run again after paint so we catch the real viewport when it was wrong on first read\r\n const rafId = requestAnimationFrame(updateScreen);\r\n // One more time after a short delay for slow viewport application (e.g. mobile)\r\n const timeoutId = window.setTimeout(updateScreen, 100);\r\n window.addEventListener('resize', updateScreen);\r\n return () => {\r\n cancelAnimationFrame(rafId);\r\n window.clearTimeout(timeoutId);\r\n window.removeEventListener('resize', updateScreen);\r\n };\r\n }, [breakpoints]);\r\n\r\n const value = useMemo<ThemeContextValue>(\r\n () => ({\r\n brand,\r\n mode,\r\n tokens: getTokens({ brand, mode, screen }),\r\n }),\r\n [brand, mode, screen]\r\n );\r\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\r\n}\r\n\r\n/** Hook to read resolved tokens (mode + brand) from ThemeProvider. Falls back to default tokens if no provider. */\r\nexport function useTokens(): ResolvedTokens {\r\n const ctx = useContext(ThemeContext);\r\n return ctx.tokens;\r\n}\r\n","import { useEffect, useRef } from \"react\";\r\nimport { useTokens } from \"../../ThemeProvider/ThemeContext\";\r\nimport { getButtonTokensFromResolved } from \"../../tokens\";\r\nimport type { SpinnerProps } from \"./Spinner.types\";\r\n\r\nconst KEYFRAMES_ID = \"ds-spinner-keyframes\";\r\n\r\nfunction ensureKeyframes() {\r\n if (typeof document === \"undefined\") return;\r\n if (document.getElementById(KEYFRAMES_ID)) return;\r\n\r\n const css = `\r\n@keyframes dsSpinnerSpin {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n}`;\r\n\r\n const style = document.createElement(\"style\");\r\n style.id = KEYFRAMES_ID;\r\n style.textContent = css;\r\n document.head.appendChild(style);\r\n}\r\n\r\nexport const Spinner = ({\r\n size,\r\n color = \"currentColor\",\r\n style,\r\n}: SpinnerProps) => {\r\n const resolvedTokens = useTokens();\r\n const { sizes } = getButtonTokensFromResolved(resolvedTokens);\r\n\r\n // Default to md button icon size\r\n const defaultSize = sizes.md.fontSize;\r\n const finalSize = size ?? defaultSize;\r\n\r\n const injectedRef = useRef(false);\r\n\r\n useEffect(() => {\r\n if (!injectedRef.current) {\r\n ensureKeyframes();\r\n injectedRef.current = true;\r\n }\r\n }, []);\r\n\r\n return (\r\n <svg\r\n width={finalSize}\r\n height={finalSize}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style={{\r\n animation: \"dsSpinnerSpin 1s linear infinite\",\r\n display: \"block\",\r\n transformOrigin: \"center\",\r\n ...style,\r\n fill: \"transparent\",\r\n }}\r\n >\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke={color}\r\n strokeOpacity=\"0.25\"\r\n strokeWidth=\"3\"\r\n />\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke={color}\r\n strokeWidth=\"3\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray=\"20 60\"\r\n />\r\n </svg>\r\n );\r\n};\r\n","import React, { ReactNode, cloneElement, isValidElement, useState, useCallback } from 'react';\r\nimport { getButtonTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport type { ButtonVariant, ButtonSize, ButtonShape } from '../../tokens';\r\nimport { Spinner } from '../Spinner/Spinner';\r\n\r\ninterface CustomButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {\r\n variant?: ButtonVariant;\r\n size?: ButtonSize;\r\n shape?: ButtonShape;\r\n leftIcon?: ReactNode;\r\n rightIcon?: ReactNode;\r\n iconOnly?: boolean;\r\n fullWidth?: boolean;\r\n showBoderRadis?: boolean;\r\n loading?: boolean;\r\n}\r\n\r\nexport const Button = ({\r\n variant = 'blue',\r\n size = 'md',\r\n shape,\r\n children,\r\n leftIcon,\r\n rightIcon,\r\n iconOnly = false,\r\n disabled = false,\r\n fullWidth = false,\r\n showBoderRadis = true,\r\n loading = false,\r\n type = 'button',\r\n onMouseEnter,\r\n onMouseLeave,\r\n style,\r\n ...rest\r\n}: CustomButtonProps) => {\r\n // shape prop is kept for API compatibility but borderRadius now uses size-based values\r\n void shape;\r\n const [hovered, setHovered] = useState(false);\r\n const resolvedTokens = useTokens();\r\n const { colors, sizes } = getButtonTokensFromResolved(resolvedTokens);\r\n const colorTokens = colors[variant];\r\n const sizeTokens = sizes[size];\r\n\r\n const hoverTextColor = colorTokens?.hoverTextColor ?? colorTokens?.color;\r\n const disabledOpacity = disabled || loading ? 0.3 : 1;\r\n const isHover = hovered && !disabled && !loading;\r\n\r\n const handleMouseEnter = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n setHovered(true);\r\n onMouseEnter?.(e);\r\n },\r\n [onMouseEnter]\r\n );\r\n\r\n const handleMouseLeave = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n setHovered(false);\r\n onMouseLeave?.(e);\r\n },\r\n [onMouseLeave]\r\n );\r\n\r\n const getWidth = () => {\r\n if (iconOnly) return sizeTokens?.height;\r\n if (fullWidth) return '100%';\r\n return sizeTokens?.width;\r\n };\r\n\r\n const iconColor =\r\n disabled || loading ? colorTokens?.color\r\n : isHover ? hoverTextColor\r\n : colorTokens?.color;\r\n const effectiveColor = (style as React.CSSProperties)?.color ?? iconColor;\r\n const backgroundColor =\r\n disabled || loading ? colorTokens?.background\r\n : isHover ? colorTokens?.hover\r\n : colorTokens?.background;\r\n\r\n const cloneIconWithColor = (icon: ReactNode) => {\r\n if (!icon) return null;\r\n if (isValidElement(icon)) {\r\n const iconSizePx = (sizeTokens?.fontSize ?? 0) + 4;\r\n const iconSize = `${iconSizePx}px`;\r\n const existingStyle =\r\n (icon as React.ReactElement<{ style?: React.CSSProperties }>).props?.style || {};\r\n return cloneElement(\r\n icon as React.ReactElement<{\r\n style?: React.CSSProperties;\r\n sx?: any;\r\n }>,\r\n {\r\n style: {\r\n ...existingStyle,\r\n color: effectiveColor,\r\n fill: effectiveColor,\r\n fontSize: iconSize,\r\n width: iconSize,\r\n height: iconSize,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n }\r\n );\r\n }\r\n return icon;\r\n };\r\n\r\n const baseStyle: React.CSSProperties = {\r\n backgroundColor,\r\n color: iconColor,\r\n height: sizeTokens?.height,\r\n minHeight: sizeTokens?.height,\r\n maxHeight: sizeTokens?.height,\r\n minWidth:\r\n iconOnly ? sizeTokens.height\r\n : fullWidth ? '100%'\r\n : undefined,\r\n width: getWidth(),\r\n padding: iconOnly ? 0 : sizeTokens?.padding,\r\n fontSize: sizeTokens?.fontSize,\r\n fontFamily: '\"Roboto\", sans-serif',\r\n fontWeight: 500,\r\n lineHeight: 1.5,\r\n borderRadius: showBoderRadis ? sizeTokens?.borderRadius : 0,\r\n border: colorTokens?.border || 'none',\r\n textTransform: 'none',\r\n boxSizing: 'border-box',\r\n opacity: disabled || loading ? disabledOpacity : 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap:\r\n !iconOnly && children && (leftIcon || rightIcon || loading) ?\r\n (sizeTokens?.contentGap ?? 12)\r\n : 0,\r\n cursor: disabled || loading ? 'not-allowed' : 'pointer',\r\n outline: 'none',\r\n ...style,\r\n };\r\n\r\n return (\r\n <button\r\n {...rest}\r\n type={type}\r\n disabled={disabled || loading}\r\n style={baseStyle}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n >\r\n {iconOnly ?\r\n <span\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: effectiveColor,\r\n }}\r\n >\r\n {loading ?\r\n cloneIconWithColor(<Spinner color={effectiveColor as string} />)\r\n : cloneIconWithColor(leftIcon || rightIcon || children)}\r\n </span>\r\n : <>\r\n {(loading || leftIcon) && (\r\n <span\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: effectiveColor,\r\n flexShrink: 0,\r\n }}\r\n >\r\n {loading ?\r\n cloneIconWithColor(<Spinner color={effectiveColor as string} />)\r\n : cloneIconWithColor(leftIcon)}\r\n </span>\r\n )}\r\n {children && (\r\n <span style={{ color: effectiveColor, whiteSpace: 'nowrap' }}>{children}</span>\r\n )}\r\n {rightIcon && !loading && (\r\n <span\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: effectiveColor,\r\n flexShrink: 0,\r\n }}\r\n >\r\n {cloneIconWithColor(rightIcon)}\r\n </span>\r\n )}\r\n </>\r\n }\r\n </button>\r\n );\r\n};\r\n","import PluginSkeleton from 'react-loading-skeleton';\r\nimport 'react-loading-skeleton/dist/skeleton.css';\r\n\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport { getSkeletonTokensFromResolved } from '../../tokens';\r\nimport type { SkeletonProps } from './Skeleton.types';\r\n\r\n/**\r\n * Design-system Skeleton component. Wraps react-loading-skeleton and applies\r\n * design tokens for baseColor and highlightColor by default. All props are\r\n * passed through to the plugin; component props override token defaults.\r\n */\r\nexport const Skeleton = (props: SkeletonProps) => {\r\n const resolvedTokens = useTokens();\r\n const tokens = getSkeletonTokensFromResolved(resolvedTokens);\r\n\r\n const { baseColor = tokens.baseColor, highlightColor = tokens.highlightColor, ...rest } = props;\r\n\r\n return <PluginSkeleton baseColor={baseColor} highlightColor={highlightColor} {...rest} />;\r\n};\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport type { TextFieldProps } from './TextField.types';\r\nimport { getTextFieldTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\n// import { Icon as FirebirdIcon } from \"firebird-icon-lib\";\r\nimport { Skeleton } from '../Skeleton/Skeleton';\r\n\r\nexport const TextField = ({\r\n label,\r\n value,\r\n defaultValue,\r\n placeholder,\r\n helperText,\r\n required = false,\r\n error = false,\r\n disabled = false,\r\n fullWidth = true,\r\n type = 'text',\r\n name,\r\n id,\r\n onChange,\r\n onBlur,\r\n onFocus,\r\n multiline = false,\r\n rows = 3,\r\n maxRows,\r\n minRows,\r\n autoFocus = false,\r\n autoComplete,\r\n size = 'md',\r\n color = 'white',\r\n inputProps,\r\n inputRef: inputRefProp,\r\n InputProps,\r\n skeletonLoading = false,\r\n prefix,\r\n suffix,\r\n startIcon,\r\n endIcon,\r\n}: TextFieldProps) => {\r\n const [internalValue, setInternalValue] = useState<string>(\r\n value !== undefined ? value : (defaultValue ?? '')\r\n );\r\n const [isFocused, setIsFocused] = useState(false);\r\n const internalInputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\r\n\r\n useEffect(() => {\r\n if (value !== undefined) {\r\n setInternalValue(value);\r\n }\r\n }, [value]);\r\n\r\n const inputId =\r\n id ?? name ?? (label ? String(label).replace(/\\s+/g, '-').toLowerCase() : undefined);\r\n const currentValue = value !== undefined ? value : internalValue;\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const newValue = e.target.value;\r\n if (value === undefined) {\r\n setInternalValue(newValue);\r\n }\r\n onChange?.(e);\r\n };\r\n\r\n const handleFocusInternal = (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n setIsFocused(true);\r\n onFocus?.(e);\r\n };\r\n\r\n const handleBlurInternal = (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n setIsFocused(false);\r\n onBlur?.(e);\r\n };\r\n\r\n const resolvedTokens = useTokens();\r\n const tokens = getTextFieldTokensFromResolved(resolvedTokens);\r\n const inputHeight =\r\n size === 'sm' ? parseInt(tokens.heightSm, 10)\r\n : size === 'lg' ? parseInt(tokens.heightLg, 10)\r\n : parseInt(tokens.heightMd, 10);\r\n const inputPaddingRaw =\r\n size === 'sm' ? tokens.paddingSm\r\n : size === 'md' ? tokens.paddingMd\r\n : tokens.paddingLg;\r\n\r\n // Parse a CSS shorthand padding string into explicit sides to avoid\r\n // shorthand vs longhand conflicts when adding icon offset later.\r\n const parsePadding = (p: string) => {\r\n const parts = p.trim().split(/\\s+/);\r\n if (parts.length === 1)\r\n return {\r\n top: parts[0],\r\n right: parts[0],\r\n bottom: parts[0],\r\n left: parts[0],\r\n };\r\n if (parts.length === 2)\r\n return {\r\n top: parts[0],\r\n right: parts[1],\r\n bottom: parts[0],\r\n left: parts[1],\r\n };\r\n if (parts.length === 3)\r\n return {\r\n top: parts[0],\r\n right: parts[1],\r\n bottom: parts[2],\r\n left: parts[1],\r\n };\r\n return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[3] };\r\n };\r\n const parsedPadding = parsePadding(inputPaddingRaw);\r\n const inputFontSize =\r\n size === 'sm' ? tokens.fontSizeSm\r\n : size === 'lg' ? tokens.fontSizeLg\r\n : tokens.fontSizeMd;\r\n\r\n const labelStyle: React.CSSProperties = {\r\n display: 'block',\r\n marginBottom: parseInt(tokens.labelMarginBottom, 10),\r\n fontSize: tokens.labelFontSize,\r\n fontWeight: tokens.labelFontWeight,\r\n color: tokens.labelColor,\r\n fontFamily: tokens.fontFamily,\r\n };\r\n\r\n const resolvedBackgroundColor =\r\n color === 'white' ? tokens.backgroundColorWhite : tokens.backgroundColorWhite;\r\n const inputStyle: React.CSSProperties = {\r\n width: fullWidth ? '100%' : undefined,\r\n // Use explicit sides (no shorthand) so paddingLeft/paddingRight\r\n // overrides in adjustedInputStyle work reliably.\r\n paddingTop: parsedPadding.top,\r\n paddingRight: parsedPadding.right,\r\n paddingBottom: parsedPadding.bottom,\r\n paddingLeft: parsedPadding.left,\r\n fontSize: inputFontSize,\r\n color: tokens.inputTextColor,\r\n fontFamily: tokens.fontFamily,\r\n backgroundColor: resolvedBackgroundColor,\r\n border:\r\n error ? `1px solid ${tokens.outlineError}`\r\n : isFocused ? `1px solid ${tokens.outlineActive}`\r\n : `1px solid ${tokens.outlineDefault}`,\r\n borderRadius:\r\n size === 'sm' ? tokens.borderRadiusSm\r\n : size === 'lg' ? tokens.borderRadiusLg\r\n : tokens.borderRadiusMd,\r\n outline: 'none',\r\n boxSizing: 'border-box',\r\n minHeight: multiline ? undefined : inputHeight,\r\n opacity: disabled ? parseFloat(tokens.disabledOpacity) : 1,\r\n cursor: disabled ? 'not-allowed' : undefined,\r\n lineHeight: 1,\r\n };\r\n\r\n const helperStyle: React.CSSProperties = {\r\n marginTop: 4,\r\n fontSize: tokens.helperFontSize,\r\n color: error ? tokens.errorColor : tokens.labelColor,\r\n fontFamily: tokens.fontFamily,\r\n };\r\n\r\n const rowsNum = typeof rows === 'string' ? parseInt(rows, 10) : rows;\r\n const minRowsNum =\r\n minRows != null ?\r\n typeof minRows === 'string' ?\r\n parseInt(minRows, 10)\r\n : minRows\r\n : rowsNum;\r\n const maxRowsNum =\r\n maxRows != null ?\r\n typeof maxRows === 'string' ?\r\n parseInt(maxRows, 10)\r\n : maxRows\r\n : undefined;\r\n const lineHeight = 20;\r\n\r\n const setInputRef = (el: HTMLInputElement | HTMLTextAreaElement | null) => {\r\n (\r\n internalInputRef as React.MutableRefObject<HTMLInputElement | HTMLTextAreaElement | null>\r\n ).current = el;\r\n if (inputRefProp) {\r\n if (typeof inputRefProp === 'function') {\r\n inputRefProp(el);\r\n } else {\r\n (\r\n inputRefProp as React.MutableRefObject<HTMLInputElement | HTMLTextAreaElement | null>\r\n ).current = el;\r\n }\r\n }\r\n };\r\n\r\n const resolvedStartAdornment = prefix ? undefined : (startIcon ?? InputProps?.startAdornment);\r\n const resolvedEndAdornment = suffix ? undefined : (endIcon ?? InputProps?.endAdornment);\r\n const hasPrefix = prefix != null && prefix !== '';\r\n const hasSuffix = suffix != null && suffix !== '';\r\n const hasAffix = hasPrefix || hasSuffix;\r\n const hasAdornment = resolvedStartAdornment || resolvedEndAdornment;\r\n\r\n const borderRadius =\r\n size === 'sm' ? tokens.borderRadiusSm\r\n : size === 'lg' ? tokens.borderRadiusLg\r\n : tokens.borderRadiusMd;\r\n\r\n const outlineColor =\r\n error ? tokens.outlineError\r\n : isFocused ? tokens.outlineActive\r\n : tokens.outlineDefault;\r\n\r\n const inputWrapperStyle: React.CSSProperties = {\r\n position: 'relative',\r\n width: fullWidth ? '100%' : undefined,\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: disabled ? 'not-allowed' : undefined,\r\n };\r\n\r\n const prefixWrapperStyle: React.CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'stretch',\r\n width: fullWidth ? '100%' : undefined,\r\n minHeight: multiline ? undefined : inputHeight,\r\n border: `1px solid ${outlineColor}`,\r\n borderRadius,\r\n overflow: 'hidden',\r\n boxSizing: 'border-box',\r\n backgroundColor: resolvedBackgroundColor,\r\n opacity: disabled ? parseFloat(tokens.disabledOpacity) : 1,\r\n cursor: disabled ? 'not-allowed' : undefined,\r\n };\r\n\r\n const prefixBoxStyle: React.CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n padding: `0 ${parsedPadding.left}`,\r\n backgroundColor: '#F1F5F9',\r\n borderRight: `1px solid ${tokens.outlineDefault}`,\r\n color: '#64748B',\r\n fontSize: inputFontSize,\r\n fontWeight: 500,\r\n fontFamily: tokens.fontFamily,\r\n pointerEvents: 'none',\r\n };\r\n\r\n const suffixBoxStyle: React.CSSProperties = {\r\n ...prefixBoxStyle,\r\n borderRight: 'none',\r\n borderLeft: `1px solid ${tokens.outlineDefault}`,\r\n };\r\n\r\n const prefixInputStyle: React.CSSProperties = {\r\n ...inputStyle,\r\n flex: 1,\r\n minWidth: 0,\r\n border: 'none',\r\n borderRadius: 0,\r\n minHeight: multiline ? undefined : inputHeight,\r\n opacity: 1,\r\n ...(resolvedEndAdornment && { paddingRight: tokens.iconPaddingLeft }),\r\n };\r\n\r\n const adjustedInputStyle: React.CSSProperties = {\r\n ...inputStyle,\r\n ...(resolvedEndAdornment && { paddingRight: tokens.iconPaddingLeft }),\r\n ...(resolvedStartAdornment && { paddingLeft: tokens.iconPaddingLeft }),\r\n };\r\n\r\n const startAdornmentStyle: React.CSSProperties = {\r\n position: 'absolute',\r\n left: tokens.iconStartLeft,\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n zIndex: 1,\r\n pointerEvents: 'none',\r\n color: tokens.placeholderColor,\r\n };\r\n\r\n const endAdornmentStyle: React.CSSProperties = {\r\n position: 'absolute',\r\n right: tokens.iconEndRight,\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n zIndex: 1,\r\n color: tokens.placeholderColor,\r\n };\r\n\r\n return (\r\n <div style={{ width: fullWidth ? '100%' : undefined }}>\r\n <style>\r\n {`.text-field-input::placeholder {\r\n color: ${tokens.placeholderColor};\r\n }`}\r\n </style>\r\n {label != null && label !== '' && (\r\n <label htmlFor={inputId} style={labelStyle}>\r\n {label}\r\n {required && <span style={{ color: tokens.errorColor, marginRight: 4 }}>*</span>}\r\n </label>\r\n )}\r\n {skeletonLoading ?\r\n <Skeleton height={inputHeight} borderRadius={8} />\r\n : hasAffix ?\r\n <div style={prefixWrapperStyle}>\r\n {hasPrefix && <div style={prefixBoxStyle}>{prefix}</div>}\r\n <div style={{ position: 'relative', flex: 1, display: 'flex', alignItems: 'center' }}>\r\n {multiline ?\r\n <textarea\r\n ref={setInputRef as React.Ref<HTMLTextAreaElement>}\r\n id={inputId}\r\n name={name}\r\n required={required}\r\n value={currentValue}\r\n placeholder={placeholder}\r\n onChange={handleChange}\r\n onBlur={handleBlurInternal}\r\n onFocus={handleFocusInternal}\r\n onInvalid={(e) => {\r\n e.preventDefault();\r\n }}\r\n disabled={disabled}\r\n rows={minRowsNum}\r\n autoFocus={autoFocus}\r\n autoComplete={autoComplete}\r\n aria-invalid={error}\r\n aria-required={required}\r\n aria-describedby={helperText ? `${inputId}-helper` : undefined}\r\n className=\"text-field-input\"\r\n style={{\r\n ...prefixInputStyle,\r\n resize: 'vertical',\r\n minHeight: minRowsNum * lineHeight,\r\n ...(maxRowsNum != null && {\r\n maxHeight: maxRowsNum * lineHeight,\r\n }),\r\n width: '100%',\r\n }}\r\n {...(inputProps as React.TextareaHTMLAttributes<HTMLTextAreaElement>)}\r\n />\r\n : <input\r\n required={required}\r\n ref={setInputRef as React.Ref<HTMLInputElement>}\r\n id={inputId}\r\n name={name}\r\n type={type}\r\n value={currentValue}\r\n placeholder={placeholder}\r\n onChange={handleChange}\r\n onBlur={handleBlurInternal}\r\n onFocus={handleFocusInternal}\r\n onInvalid={(e) => {\r\n e.preventDefault();\r\n }}\r\n disabled={disabled}\r\n autoFocus={autoFocus}\r\n autoComplete={autoComplete}\r\n aria-invalid={error}\r\n aria-required={required}\r\n aria-describedby={helperText ? `${inputId}-helper` : undefined}\r\n className=\"text-field-input\"\r\n style={{ ...prefixInputStyle, width: '100%' }}\r\n {...(inputProps as React.InputHTMLAttributes<HTMLInputElement>)}\r\n />\r\n }\r\n {resolvedEndAdornment && <div style={endAdornmentStyle}>{resolvedEndAdornment}</div>}\r\n </div>\r\n {hasSuffix && <div style={suffixBoxStyle}>{suffix}</div>}\r\n </div>\r\n : <>\r\n <div style={hasAdornment ? inputWrapperStyle : undefined}>\r\n {resolvedStartAdornment && (\r\n <div style={startAdornmentStyle}>{resolvedStartAdornment}</div>\r\n )}\r\n {multiline ?\r\n <textarea\r\n ref={setInputRef as React.Ref<HTMLTextAreaElement>}\r\n id={inputId}\r\n name={name}\r\n required={required}\r\n value={currentValue}\r\n placeholder={placeholder}\r\n onChange={handleChange}\r\n onBlur={handleBlurInternal}\r\n onFocus={handleFocusInternal}\r\n onInvalid={(e) => {\r\n // Prevent browser-native validation bubble so apps can show custom helper text.\r\n e.preventDefault();\r\n }}\r\n disabled={disabled}\r\n rows={minRowsNum}\r\n autoFocus={autoFocus}\r\n autoComplete={autoComplete}\r\n aria-invalid={error}\r\n aria-required={required}\r\n aria-describedby={helperText ? `${inputId}-helper` : undefined}\r\n className=\"text-field-input\"\r\n style={{\r\n ...adjustedInputStyle,\r\n resize: 'vertical',\r\n minHeight: minRowsNum * lineHeight,\r\n ...(maxRowsNum != null && {\r\n maxHeight: maxRowsNum * lineHeight,\r\n }),\r\n width: hasAdornment ? '100%' : inputStyle.width,\r\n }}\r\n {...(inputProps as React.TextareaHTMLAttributes<HTMLTextAreaElement>)}\r\n />\r\n : <input\r\n required={required}\r\n ref={setInputRef as React.Ref<HTMLInputElement>}\r\n id={inputId}\r\n name={name}\r\n type={type}\r\n value={currentValue}\r\n placeholder={placeholder}\r\n onChange={handleChange}\r\n onBlur={handleBlurInternal}\r\n onFocus={handleFocusInternal}\r\n onInvalid={(e) => {\r\n // Prevent browser-native validation bubble so apps can show custom helper text.\r\n e.preventDefault();\r\n }}\r\n disabled={disabled}\r\n autoFocus={autoFocus}\r\n autoComplete={autoComplete}\r\n aria-invalid={error}\r\n aria-required={required}\r\n aria-describedby={helperText ? `${inputId}-helper` : undefined}\r\n className=\"text-field-input\"\r\n style={{\r\n ...adjustedInputStyle,\r\n width: hasAdornment ? '100%' : inputStyle.width,\r\n }}\r\n {...(inputProps as React.InputHTMLAttributes<HTMLInputElement>)}\r\n />\r\n }\r\n {resolvedEndAdornment && <div style={endAdornmentStyle}>{resolvedEndAdornment}</div>}\r\n </div>\r\n </>\r\n }\r\n\r\n {helperText != null && helperText !== '' && (\r\n <div\r\n id={inputId ? `${inputId}-helper` : undefined}\r\n style={helperStyle}\r\n className=\"d-flex gap-1\"\r\n role={error ? 'alert' : undefined}\r\n >\r\n {/* <FirebirdIcon name=\"info_circle\" size={16} /> */}\r\n <span>{helperText}</span>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { forwardRef, useState, useRef, useEffect } from 'react';\r\nimport ReactDatePicker from 'react-datepicker';\r\nimport type { DatePickerProps } from 'react-datepicker';\r\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\r\nimport AccessTimeOutlinedIcon from '@mui/icons-material/AccessTimeOutlined';\r\nimport { getDatePickerTokensFromResolved, getTextFieldTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport { TextField } from '../TextField/TextField';\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\n// import \"firebird-icon-lib/dist/style.css\";\r\n\r\nexport type { DatePickerProps };\r\n\r\n/** Props that react-datepicker passes to customInput (value, onClick, etc.) plus our own */\r\nexport interface ExampleCustomInputProps extends Omit<\r\n React.InputHTMLAttributes<HTMLInputElement>,\r\n 'size'\r\n> {\r\n error?: boolean;\r\n size?: 'sm' | 'md' | 'lg';\r\n className?: string;\r\n /** Optional icon name for the trailing adornment (defaults to calendar) */\r\n iconName?: string;\r\n /** When provided, enables click-to-toggle: skip opening on focus when focus came from click */\r\n mouseDownOnFieldRef?: React.MutableRefObject<boolean>;\r\n /** When provided, enables click-to-toggle behavior */\r\n isOpen?: boolean;\r\n onToggleOpen?: () => void;\r\n onToggleClose?: () => void;\r\n /** Icon at the start (left) of the input, same as TextField startIcon */\r\n startIcon?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Custom input for DatePicker that uses TextField styling.\r\n * Use with: customInput={<ExampleCustomInput className=\"example-custom-input\" />}\r\n */\r\nexport const ExampleCustomInput = forwardRef<HTMLInputElement, ExampleCustomInputProps>(\r\n function ExampleCustomInput(props, ref) {\r\n const {\r\n value,\r\n onClick,\r\n onChange,\r\n onBlur,\r\n onFocus,\r\n placeholder,\r\n disabled,\r\n className,\r\n id,\r\n error = false,\r\n size = 'md',\r\n mouseDownOnFieldRef,\r\n isOpen,\r\n onToggleOpen,\r\n onToggleClose,\r\n ...rest\r\n } = props;\r\n\r\n // const resolvedTokens = useTokens();\r\n // const dpTokens = getDatePickerTokensFromResolved(resolvedTokens);\r\n\r\n const valueStr =\r\n value === undefined || value === null ? ''\r\n : typeof value === 'string' ? value\r\n : String(value);\r\n\r\n const iconFontSize =\r\n size === 'lg' ? 20\r\n : size === 'md' ? 18\r\n : 16;\r\n const LeadingIcon = props.iconName === 'clock' ? AccessTimeOutlinedIcon : CalendarMonthIcon;\r\n const inputCursor = disabled ? 'not-allowed' : 'pointer';\r\n const scopedInputId = typeof id === 'string' ? id : undefined;\r\n const scopedCursorSelector =\r\n scopedInputId ?\r\n `#${CSS.escape(scopedInputId)}.text-field-input`\r\n : `.${className ?? 'example-custom-input'} input.text-field-input`;\r\n\r\n return (\r\n <div\r\n className={className}\r\n style={{\r\n position: 'relative',\r\n width: '100%',\r\n display: 'block',\r\n cursor: inputCursor,\r\n }}\r\n >\r\n <style>{`${scopedCursorSelector} { cursor: ${inputCursor}; }`}</style>\r\n <TextField\r\n id={scopedInputId}\r\n label=\"\"\r\n helperText=\"\"\r\n value={valueStr}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n error={error}\r\n size={size}\r\n inputRef={ref}\r\n startIcon={<LeadingIcon sx={{ fontSize: iconFontSize }} />}\r\n inputProps={{\r\n ...rest,\r\n readOnly: true,\r\n onMouseDown:\r\n mouseDownOnFieldRef ?\r\n () => {\r\n mouseDownOnFieldRef.current = true;\r\n }\r\n : undefined,\r\n onClick:\r\n onToggleClose != null ?\r\n (e: React.MouseEvent<HTMLInputElement>) => {\r\n if (mouseDownOnFieldRef) mouseDownOnFieldRef.current = false;\r\n if (disabled) return;\r\n if ((e.target as HTMLElement).closest('button')) return;\r\n if (isOpen) {\r\n onToggleClose();\r\n } else {\r\n onToggleOpen?.();\r\n }\r\n }\r\n : (onClick as React.MouseEventHandler<HTMLInputElement>),\r\n }}\r\n onChange={onChange as React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>}\r\n onBlur={onBlur as React.FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>}\r\n onFocus={(e) => {\r\n (onFocus as React.FocusEventHandler<HTMLInputElement>)?.(\r\n e as React.FocusEvent<HTMLInputElement>\r\n );\r\n if (mouseDownOnFieldRef?.current) return;\r\n onToggleOpen?.();\r\n }}\r\n fullWidth\r\n />\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nconst headerControlStyle: React.CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 6,\r\n};\r\n\r\nconst getHeaderWrapperStyle = (\r\n dpTokens: ReturnType<typeof getDatePickerTokensFromResolved>\r\n): React.CSSProperties => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n padding: dpTokens.header.padding,\r\n borderBottom: dpTokens.header.borderBottom,\r\n fontFamily: dpTokens.input.fontFamily,\r\n fontSize: dpTokens.header.fontSize,\r\n});\r\n\r\nconst getHeaderButtonStyle = (\r\n dpTokens: ReturnType<typeof getDatePickerTokensFromResolved>\r\n): React.CSSProperties => ({\r\n border: 'none',\r\n background: 'transparent',\r\n color: dpTokens.input.color,\r\n cursor: 'pointer',\r\n padding: dpTokens.headerButton.padding,\r\n fontSize: dpTokens.headerButton.fontSize,\r\n lineHeight: 1,\r\n});\r\n\r\nconst getHeaderSelectStyle = (\r\n dpTokens: ReturnType<typeof getDatePickerTokensFromResolved>\r\n): React.CSSProperties => ({\r\n padding: dpTokens.headerSelect.padding,\r\n borderRadius: dpTokens.headerSelect.borderRadius,\r\n border: dpTokens.headerSelect.border,\r\n backgroundColor: dpTokens.headerSelect.background,\r\n fontSize: dpTokens.headerSelect.fontSize,\r\n});\r\n\r\nconst MONTH_NAMES = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n];\r\n\r\nconst CURRENT_YEAR = new Date().getFullYear();\r\nconst YEAR_START = CURRENT_YEAR - 50;\r\nconst YEAR_END = CURRENT_YEAR + 20;\r\n\r\nconst getAvailableYears = (minDate?: Date | null, maxDate?: Date | null): number[] => {\r\n const start = minDate ? minDate.getFullYear() : YEAR_START;\r\n const end = maxDate ? maxDate.getFullYear() : YEAR_END;\r\n const years: number[] = [];\r\n for (let y = start; y <= end; y += 1) {\r\n years.push(y);\r\n }\r\n return years;\r\n};\r\n\r\nconst isMonthInRange = (\r\n monthIndex: number,\r\n selectedYear: number,\r\n minDate?: Date | null,\r\n maxDate?: Date | null\r\n): boolean => {\r\n if (minDate) {\r\n const minYear = minDate.getFullYear();\r\n if (selectedYear < minYear) return false;\r\n if (selectedYear === minYear && monthIndex < minDate.getMonth()) return false;\r\n }\r\n if (maxDate) {\r\n const maxYear = maxDate.getFullYear();\r\n if (selectedYear > maxYear) return false;\r\n if (selectedYear === maxYear && monthIndex > maxDate.getMonth()) return false;\r\n }\r\n return true;\r\n};\r\n\r\nconst getHelperStyle = (\r\n dpTokens: ReturnType<typeof getDatePickerTokensFromResolved>,\r\n error?: boolean\r\n): React.CSSProperties => ({\r\n marginTop: 4,\r\n fontSize: dpTokens.helper.fontSize,\r\n color: error ? dpTokens.helper.errorColor : dpTokens.helper.color,\r\n fontFamily: dpTokens.input.fontFamily,\r\n});\r\n\r\n/**\r\n * react-datepicker's DatePickerProps is a discriminated union (single | range | multi).\r\n * Spreading the union into JSX cannot pick a branch, so we pin the default (single-date) props shape.\r\n */\r\nexport type SingleDatePickerProps = Extract<\r\n DatePickerProps,\r\n { selectsRange?: never; selectsMultiple?: never }\r\n>;\r\n\r\nexport type DatePickerWrapperProps = DatePickerProps & {\r\n /** Helper text below the input (e.g. date format or error message). */\r\n helperText?: React.ReactNode;\r\n /** When true, shows error state (red border, red helper text). */\r\n error?: boolean;\r\n /** Label shown above the input */\r\n label?: string;\r\n /** When true, marks the field as required */\r\n required?: boolean;\r\n /** Size variant: sm, md, or lg */\r\n size?: 'sm' | 'md' | 'lg';\r\n /** Custom input for the DatePicker */\r\n customInput?: React.ReactNode;\r\n};\r\n\r\nexport function DatePicker({\r\n helperText = '(Date Format - YYYY-MM-DD)',\r\n placeholderText = 'Valid Upto',\r\n dateFormat = 'yyyy-MM-dd',\r\n isClearable = false,\r\n error = false,\r\n label,\r\n required = false,\r\n disabled = false,\r\n size = 'md',\r\n\r\n ...props\r\n}: DatePickerWrapperProps) {\r\n // Only render the helper line when the consumer actually provides a helperText\r\n // (e.g. an error message). No automatic date-format hint fallback.\r\n const displayHelperText: React.ReactNode = helperText;\r\n const { renderCustomHeader, onChange, ...restProps } = props;\r\n const [isOpen, setIsOpen] = useState(false);\r\n const mouseDownOnFieldRef = useRef(false);\r\n const suppressOpenOnFocusRef = useRef(false);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n const closeCalendar = () => {\r\n // Selecting a value returns focus to the input; skip the focus-open once.\r\n suppressOpenOnFocusRef.current = true;\r\n setIsOpen(false);\r\n };\r\n\r\n const openCalendar = () => {\r\n if (suppressOpenOnFocusRef.current) {\r\n suppressOpenOnFocusRef.current = false;\r\n return;\r\n }\r\n setIsOpen(true);\r\n };\r\n\r\n const handleChange = (date: any, event: any) => {\r\n (onChange as any)?.(date, event);\r\n\r\n const showTimeSelect = Boolean((restProps as { showTimeSelect?: boolean }).showTimeSelect);\r\n\r\n if (Array.isArray(date)) {\r\n const [start, end] = date;\r\n if (start && end && !showTimeSelect) {\r\n closeCalendar();\r\n }\r\n return;\r\n }\r\n\r\n if (!date) return;\r\n\r\n if (!showTimeSelect) {\r\n // Date-only: close after picking a day.\r\n closeCalendar();\r\n return;\r\n }\r\n\r\n // With showTimeSelect, day clicks pass a click/keyboard event; time clicks call\r\n // onChange with no event (react-datepicker handleTimeChange). Stay open for date\r\n // so the user can pick a time; close once the time is chosen.\r\n // Also: controlled `open` never syncs internal state.open, so onCalendarClose\r\n // often does not fire after time select — close explicitly here.\r\n const isTimeListClick =\r\n event?.target instanceof HTMLElement &&\r\n Boolean(event.target.closest('.react-datepicker__time-list-item'));\r\n const isTimeSelection = event == null || isTimeListClick;\r\n\r\n if (isTimeSelection) {\r\n closeCalendar();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const handleMouseUp = () => {\r\n mouseDownOnFieldRef.current = false;\r\n };\r\n document.addEventListener('mouseup', handleMouseUp);\r\n return () => document.removeEventListener('mouseup', handleMouseUp);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n const target = e.target as Node;\r\n if (!containerRef.current?.contains(target)) {\r\n const isInsideCalendar = (target as HTMLElement).closest?.('.react-datepicker');\r\n if (!isInsideCalendar) {\r\n setIsOpen(false);\r\n }\r\n }\r\n };\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => document.removeEventListener('mousedown', handleClickOutside);\r\n }, []);\r\n\r\n const resolvedTokens = useTokens();\r\n const dpTokens = getDatePickerTokensFromResolved(resolvedTokens);\r\n const tfTokens = getTextFieldTokensFromResolved(resolvedTokens);\r\n const datePickerInputHeight =\r\n size === 'sm' ? parseInt(tfTokens.heightSm, 10)\r\n : size === 'lg' ? parseInt(tfTokens.heightLg, 10)\r\n : parseInt(tfTokens.heightMd, 10);\r\n\r\n const defaultRenderHeader = (headerProps: any) => {\r\n const {\r\n date,\r\n changeYear,\r\n changeMonth,\r\n decreaseMonth,\r\n increaseMonth,\r\n prevMonthButtonDisabled,\r\n nextMonthButtonDisabled,\r\n } = headerProps;\r\n\r\n const monthIndex = date.getMonth();\r\n const year = date.getFullYear();\r\n const { minDate, maxDate } = restProps;\r\n const availableYears = getAvailableYears(minDate, maxDate);\r\n const availableMonths = MONTH_NAMES.filter((_, index) =>\r\n isMonthInRange(index, year, minDate, maxDate)\r\n );\r\n\r\n return (\r\n <div style={getHeaderWrapperStyle(dpTokens)}>\r\n <div style={headerControlStyle}>\r\n <button\r\n type=\"button\"\r\n onClick={decreaseMonth}\r\n disabled={prevMonthButtonDisabled}\r\n style={getHeaderButtonStyle(dpTokens)}\r\n aria-label=\"Previous month\"\r\n >\r\n ‹\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={increaseMonth}\r\n disabled={nextMonthButtonDisabled}\r\n style={getHeaderButtonStyle(dpTokens)}\r\n aria-label=\"Next month\"\r\n >\r\n ›\r\n </button>\r\n </div>\r\n <div style={headerControlStyle}>\r\n <select\r\n value={MONTH_NAMES[monthIndex]}\r\n onChange={(e) => {\r\n const newMonthIndex = MONTH_NAMES.indexOf(e.target.value);\r\n if (newMonthIndex >= 0) changeMonth(newMonthIndex);\r\n }}\r\n style={getHeaderSelectStyle(dpTokens)}\r\n >\r\n {availableMonths.map((name) => (\r\n <option key={name} value={name}>\r\n {name}\r\n </option>\r\n ))}\r\n </select>\r\n <select\r\n value={year}\r\n onChange={(e) => changeYear(Number(e.target.value))}\r\n style={getHeaderSelectStyle(dpTokens)}\r\n >\r\n {availableYears.map((y) => (\r\n <option key={y} value={y}>\r\n {y}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n const labelStyle: React.CSSProperties = {\r\n display: 'block',\r\n marginBottom: parseInt(String(tfTokens.labelMarginBottom), 10),\r\n fontSize: tfTokens.labelFontSize,\r\n fontWeight: tfTokens.labelFontWeight,\r\n color: tfTokens.labelColor,\r\n fontFamily: tfTokens.fontFamily,\r\n };\r\n const rootStyle: React.CSSProperties = {\r\n width: '100%',\r\n fontFamily: dpTokens.input.fontFamily,\r\n opacity: disabled ? parseFloat(String(tfTokens.disabledOpacity)) : 1,\r\n };\r\n\r\n return (\r\n <div ref={containerRef} style={rootStyle}>\r\n {label != null && label !== '' && (\r\n <label\r\n onClick={(e) => {\r\n if (disabled) return;\r\n if (isOpen) {\r\n setIsOpen(false);\r\n } else {\r\n e.preventDefault();\r\n }\r\n }}\r\n style={{\r\n ...labelStyle,\r\n color: disabled ? 'var(--text-disabled)' : labelStyle.color,\r\n cursor: 'default',\r\n }}\r\n >\r\n {label}\r\n {required && (\r\n <span\r\n style={{\r\n color: dpTokens.label.requiredColor,\r\n marginLeft: 4,\r\n }}\r\n >\r\n *\r\n </span>\r\n )}\r\n </label>\r\n )}\r\n <ReactDatePicker\r\n {...(restProps as SingleDatePickerProps)}\r\n dateFormat={dateFormat}\r\n placeholderText={placeholderText}\r\n isClearable={isClearable}\r\n disabled={disabled}\r\n open={isOpen}\r\n preventOpenOnFocus\r\n onChange={handleChange}\r\n onCalendarOpen={openCalendar}\r\n onCalendarClose={closeCalendar}\r\n portalId=\"react-datepicker-portal\"\r\n customInput={\r\n restProps.customInput ?\r\n React.cloneElement(restProps.customInput as React.ReactElement<any>, {\r\n isOpen,\r\n onToggleOpen: openCalendar,\r\n onToggleClose: closeCalendar,\r\n mouseDownOnFieldRef,\r\n })\r\n : <ExampleCustomInput\r\n className=\"example-custom-input\"\r\n id={restProps.id}\r\n error={error}\r\n disabled={disabled}\r\n size={size}\r\n iconName={\r\n // When used as a time-only picker, show a clock icon instead of a calendar\r\n (restProps as { showTimeSelectOnly?: boolean }).showTimeSelectOnly ?\r\n 'clock'\r\n : 'calendar'\r\n }\r\n mouseDownOnFieldRef={mouseDownOnFieldRef}\r\n isOpen={isOpen}\r\n onToggleOpen={openCalendar}\r\n onToggleClose={closeCalendar}\r\n />\r\n }\r\n renderCustomHeader={renderCustomHeader ?? defaultRenderHeader}\r\n />\r\n {helperText != null && helperText !== '' && (\r\n <div\r\n style={getHelperStyle(dpTokens, error)}\r\n role={error ? 'alert' : undefined}\r\n className=\"d-flex gap-1\"\r\n >\r\n {/* <FirebirdIcon name=\"info_circle\" size={16} /> */}\r\n <span>{displayHelperText}</span>\r\n </div>\r\n )}\r\n <style>\r\n {`.react-datepicker-wrapper {\r\n width: 100%;\r\n }\r\n .react-datepicker__input-container .example-custom-input input.text-field-input {\r\n height: ${datePickerInputHeight}px;\r\n min-height: ${datePickerInputHeight}px;\r\n padding-top: 0 !important;\r\n padding-bottom: 0 !important;\r\n padding-left: ${tfTokens.iconPaddingLeft} !important;\r\n box-sizing: border-box !important;\r\n }\r\n .react-datepicker__input-container input::placeholder {\r\n color: ${dpTokens.placeholderColor};\r\n }\r\n .react-datepicker-popper {\r\n z-index: 1400;\r\n }\r\n .react-datepicker {\r\n font-family: ${dpTokens.input.fontFamily};\r\n border: ${dpTokens.calendar.border};\r\n border-radius: ${dpTokens.calendar.borderRadius};\r\n box-shadow: 0 4px 8px rgba(0,0,0,0.1);\r\n background-color: ${dpTokens.calendar.headerBackground};\r\n color: ${dpTokens.input.color};\r\n }\r\n .react-datepicker__month-container {\r\n background-color: ${dpTokens.calendar.headerBackground};\r\n }\r\n .react-datepicker__header {\r\n background-color: ${dpTokens.calendar.headerBackground};\r\n border-bottom: ${dpTokens.calendar.border};\r\n border-top-left-radius: ${dpTokens.calendar.borderRadius};\r\n border-top-right-radius: ${dpTokens.calendar.borderRadius};\r\n padding-top: 8px;\r\n color: ${dpTokens.input.color};\r\n }\r\n .react-datepicker__header select,\r\n .react-datepicker select {\r\n background-color: ${dpTokens.headerSelect.background};\r\n color: ${dpTokens.input.color};\r\n border: ${dpTokens.headerSelect.border};\r\n }\r\n .react-datepicker__header option,\r\n .react-datepicker option {\r\n background-color: ${dpTokens.headerSelect.background};\r\n color: ${dpTokens.input.color};\r\n }\r\n .react-datepicker__day-names,\r\n .react-datepicker__day-name {\r\n color: ${dpTokens.input.color};\r\n }\r\n .react-datepicker__day--selected,\r\n .react-datepicker__day--in-selecting-range,\r\n .react-datepicker__day--in-range {\r\n background-color: ${dpTokens.calendar.selectedBackground};\r\n color: ${dpTokens.calendar.selectedColor} !important;\r\n }\r\n .react-datepicker__day--selected:hover,\r\n .react-datepicker__day--in-selecting-range:hover,\r\n .react-datepicker__day--in-range:hover {\r\n background-color: ${dpTokens.calendar.selectedBackground};\r\n }\r\n .react-datepicker__day {\r\n color: ${dpTokens.input.color};\r\n }\r\n .react-datepicker__day:hover {\r\n background-color: ${dpTokens.calendar.selectedBackground} !important;\r\n color: ${dpTokens.calendar.selectedColor} !important;\r\n }\r\n .react-datepicker__day--keyboard-selected {\r\n background-color: ${dpTokens.calendar.selectedBackground};\r\n color: ${dpTokens.calendar.selectedColor};\r\n }\r\n .react-datepicker__day--today {\r\n font-weight: 500;\r\n }\r\n .react-datepicker__day--disabled {\r\n color: ${dpTokens.calendar.disabledColor};\r\n cursor: not-allowed;\r\n }\r\n .react-datepicker__triangle {\r\n display: none;\r\n }\r\n .react-datepicker__time-container,\r\n .react-datepicker__time,\r\n .react-datepicker__time-box {\r\n background-color: ${dpTokens.calendar.headerBackground};\r\n color: ${dpTokens.input.color};\r\n border-left: ${dpTokens.calendar.border};\r\n }\r\n .react-datepicker__time-list-item {\r\n color: ${dpTokens.input.color};\r\n }\r\n .react-datepicker__time-list-item:hover {\r\n background-color: ${dpTokens.calendar.selectedBackground} !important;\r\n color: ${dpTokens.calendar.selectedColor} !important;\r\n }\r\n .react-datepicker__time-list-item--selected {\r\n background-color: ${dpTokens.calendar.selectedBackground} !important;\r\n color: ${dpTokens.calendar.selectedColor};\r\n }\r\n .react-datepicker-time__header,\r\n .react-datepicker-time__caption {\r\n color: ${dpTokens.input.color};\r\n }\r\n .react-datepicker__input-time-container,\r\n .react-datepicker-time__input input {\r\n color: ${dpTokens.input.color};\r\n background-color: ${dpTokens.calendar.headerBackground};\r\n }\r\n .react-datepicker__header button {\r\n color: ${dpTokens.input.color};\r\n }\r\n .react-datepicker__close-icon {\r\n right: 30px;\r\n padding: 4px;\r\n }\r\n .react-datepicker__close-icon::after {\r\n background-color: ${dpTokens.helper.bgColor};\r\n color: ${dpTokens.helper.color};\r\n font-size: 18px;\r\n padding: 1px;\r\n min-width: 20px;\r\n }\r\n .react-datepicker__close-icon:hover::after {\r\n background-color: ${dpTokens.label.color};\r\n }\r\n .react-datepicker--time-only, .react-datepicker__time-container, .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box {\r\n width: 200px !important;\r\n }\r\n\r\n `}\r\n </style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DatePicker;\r\n","import { DatePicker } from './DatePicker';\r\nimport type { DatePickerWrapperProps } from './DatePicker';\r\n\r\nexport type DateTimePickerProps = DatePickerWrapperProps & {\r\n /** Display format for date and time (default: yyyy/MM/dd HH:mm) */\r\n dateFormat?: string;\r\n /** Minute step in the time list (default: 1) */\r\n timeIntervals?: number;\r\n};\r\n\r\n/**\r\n * Date and time picker built on the design-system DatePicker (24-hour format).\r\n */\r\nexport function DateTimePicker({\r\n dateFormat = 'yyyy/MM/dd HH:mm',\r\n timeFormat = 'HH:mm',\r\n timeIntervals = 1,\r\n timeCaption = 'Time',\r\n placeholderText = 'Select date and time',\r\n ...props\r\n}: DateTimePickerProps) {\r\n return (\r\n <DatePicker\r\n {...props}\r\n showTimeSelect\r\n timeFormat={timeFormat}\r\n timeIntervals={timeIntervals}\r\n timeCaption={timeCaption}\r\n dateFormat={dateFormat}\r\n placeholderText={placeholderText}\r\n />\r\n );\r\n}\r\n\r\nexport default DateTimePicker;\r\n","import { useCallback, type CSSProperties, forwardRef } from 'react';\r\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\r\nimport { DatePicker, ExampleCustomInput } from '../DatePicker/DatePicker';\r\nimport type { DateRangePickerProps } from './DateRangePicker.types';\r\n\r\nconst FIELD_HEIGHT: Record<NonNullable<DateRangePickerProps['size']>, number> = {\r\n sm: 32,\r\n md: 40,\r\n lg: 48,\r\n};\r\n\r\nconst RangeInput = forwardRef<HTMLDivElement, any>((props, ref) => {\r\n const {\r\n startLabel,\r\n endLabel,\r\n startPlaceholder,\r\n endPlaceholder,\r\n disabled,\r\n wrapperStyle,\r\n fieldGroupStyle,\r\n inlineLabelStyle,\r\n fieldStyle,\r\n startDate,\r\n endDate,\r\n onClick,\r\n isOpen,\r\n onToggleOpen,\r\n onToggleClose,\r\n mouseDownOnFieldRef,\r\n className,\r\n } = props;\r\n const size = (props.size || 'sm') as NonNullable<DateRangePickerProps['size']>;\r\n\r\n // If date-fns format is used, we can just do a very simple slice for now or use toLocaleDateString\r\n const valStart = startDate ? startDate.toLocaleDateString() : '';\r\n const valEnd = endDate ? endDate.toLocaleDateString() : '';\r\n\r\n return (\r\n <div className={className} style={wrapperStyle} ref={ref}>\r\n <div style={fieldGroupStyle}>\r\n <span style={inlineLabelStyle}>{startLabel}</span>\r\n <div style={fieldStyle}>\r\n <ExampleCustomInput\r\n value={valStart}\r\n placeholder={startPlaceholder}\r\n disabled={disabled}\r\n size={size}\r\n iconName=\"calendar\"\r\n onClick={onClick}\r\n isOpen={isOpen}\r\n onToggleOpen={onToggleOpen}\r\n onToggleClose={onToggleClose}\r\n mouseDownOnFieldRef={mouseDownOnFieldRef}\r\n />\r\n </div>\r\n </div>\r\n\r\n <span\r\n aria-hidden\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n color: '#6B7280',\r\n height: FIELD_HEIGHT[size],\r\n }}\r\n >\r\n <ArrowForwardIcon sx={{ fontSize: 18 }} />\r\n </span>\r\n\r\n <div style={fieldGroupStyle}>\r\n <span style={inlineLabelStyle}>{endLabel}</span>\r\n <div style={fieldStyle}>\r\n <ExampleCustomInput\r\n value={valEnd}\r\n placeholder={endPlaceholder}\r\n disabled={disabled}\r\n size={size}\r\n iconName=\"calendar\"\r\n onClick={onClick}\r\n isOpen={isOpen}\r\n onToggleOpen={onToggleOpen}\r\n onToggleClose={onToggleClose}\r\n mouseDownOnFieldRef={mouseDownOnFieldRef}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nexport function DateRangePicker({\r\n startDate,\r\n endDate,\r\n onChange,\r\n startLabel = 'From',\r\n endLabel = 'To',\r\n dateFormat = 'MMM dd, yyyy',\r\n startPlaceholder = 'From',\r\n endPlaceholder = 'To',\r\n size = 'sm',\r\n minDate,\r\n maxDate,\r\n disabled,\r\n className,\r\n style,\r\n}: DateRangePickerProps) {\r\n const handleRangeChange = useCallback(\r\n (dates: any) => {\r\n if (Array.isArray(dates)) {\r\n const [nextStart, nextEnd] = dates;\r\n onChange({ startDate: nextStart, endDate: nextEnd });\r\n } else {\r\n onChange({ startDate: dates, endDate: null });\r\n }\r\n },\r\n [onChange]\r\n );\r\n\r\n const wrapperStyle: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: 12,\r\n ...style,\r\n };\r\n\r\n const fieldGroupStyle: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: 8,\r\n };\r\n\r\n const inlineLabelStyle: CSSProperties = {\r\n fontSize: size === 'lg' ? 14 : 13,\r\n fontWeight: 500,\r\n color: disabled ? '#9CA3AF' : '#374151',\r\n whiteSpace: 'nowrap',\r\n };\r\n\r\n const fieldWidth =\r\n size === 'lg' ? 220\r\n : size === 'md' ? 200\r\n : 188;\r\n const fieldStyle: CSSProperties = {\r\n width: fieldWidth,\r\n };\r\n\r\n const DatePickerAny = DatePicker as any;\r\n\r\n return (\r\n <div className={className}>\r\n <DatePickerAny\r\n selectsRange={true}\r\n startDate={startDate}\r\n endDate={endDate}\r\n onChange={handleRangeChange}\r\n dateFormat={dateFormat}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n disabled={disabled}\r\n customInput={\r\n <RangeInput\r\n startLabel={startLabel}\r\n endLabel={endLabel}\r\n startPlaceholder={startPlaceholder}\r\n endPlaceholder={endPlaceholder}\r\n size={size}\r\n disabled={disabled}\r\n wrapperStyle={wrapperStyle}\r\n fieldGroupStyle={fieldGroupStyle}\r\n inlineLabelStyle={inlineLabelStyle}\r\n fieldStyle={fieldStyle}\r\n startDate={startDate}\r\n endDate={endDate}\r\n />\r\n }\r\n />\r\n </div>\r\n );\r\n}\r\n","import React, { useState, useCallback } from 'react';\r\nimport type { RadioButtonProps, RadioButtonGroupProps } from './RadioButton.types';\r\nimport { getRadioTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\n// import { Icon as FirebirdIcon } from \"firebird-icon-lib\";\r\n\r\nexport const RadioButton = ({\r\n label,\r\n description,\r\n size = 'md',\r\n value,\r\n checked,\r\n disabled = false,\r\n name,\r\n id,\r\n onChange,\r\n onBlur,\r\n onFocus,\r\n}: RadioButtonProps) => {\r\n const radioId = id || `${name || 'radio'}-${value}`;\r\n const resolvedTokens = useTokens();\r\n const tokens = getRadioTokensFromResolved(resolvedTokens);\r\n const sizeKey = size as 'sm' | 'md' | 'lg';\r\n const sizeTokens = (resolvedTokens?.components as any)?.radio?.size?.[sizeKey];\r\n const radioSize = sizeTokens?.radioSize ?? tokens.radioSize;\r\n const labelFontSize = sizeTokens?.labelFontSize ?? tokens.labelFontSize;\r\n const dotSize = sizeTokens?.dotSize ?? tokens.radioDotSize;\r\n\r\n const [focused, setFocused] = useState(false);\r\n\r\n const handleFocus = useCallback(() => setFocused(true), []);\r\n const handleBlur = useCallback(() => setFocused(false), []);\r\n\r\n const containerStyle: React.CSSProperties = {\r\n display: 'flex',\r\n alignItems: description ? 'flex-start' : 'center',\r\n position: 'relative',\r\n margin: 0,\r\n marginBottom: tokens.labelMarginBottom,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none',\r\n };\r\n\r\n // Hidden native input for accessibility\r\n const inputStyle: React.CSSProperties = {\r\n position: 'absolute',\r\n opacity: 0,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n width: 0,\r\n height: 0,\r\n };\r\n\r\n // Custom checkmark outer circle - always show border ring, fill with background\r\n const checkmarkStyle: React.CSSProperties = {\r\n position: 'relative',\r\n flexShrink: 0,\r\n width: radioSize,\r\n height: radioSize,\r\n borderRadius: '50%',\r\n backgroundColor: tokens.radioBackground,\r\n border: `${tokens.radioStrokeWidth} solid ${tokens.radioColorInactive}`,\r\n boxSizing: 'border-box',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginRight: tokens.labelMarginLeft,\r\n transition: 'border-color 0.2s ease, box-shadow 0.2s ease',\r\n boxShadow:\r\n focused && !disabled && tokens.radioFocusRing !== 'none' ? tokens.radioFocusRing : undefined,\r\n opacity: disabled ? 0.6 : 1,\r\n };\r\n\r\n // Inner dot (visible only when checked) - uses tokenized dot color and size\r\n const dotStyle: React.CSSProperties = {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n width: dotSize,\r\n height: dotSize,\r\n borderRadius: '50%',\r\n background: tokens.radioColorDot,\r\n display: checked ? 'block' : 'none',\r\n };\r\n\r\n const textStyle: React.CSSProperties = {\r\n fontFamily: tokens.labelFontFamily,\r\n fontSize: labelFontSize,\r\n fontWeight: tokens.labelFontWeight,\r\n color: checked ? tokens.labelColorActive : tokens.labelColorInactive,\r\n userSelect: 'none',\r\n transition: 'color 0.2s ease',\r\n };\r\n\r\n const labelContainerStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n };\r\n\r\n const descriptionStyle: React.CSSProperties = {\r\n fontFamily: tokens.labelFontFamily,\r\n fontSize: (() => {\r\n if (typeof labelFontSize === 'string') {\r\n const numValue = parseInt(labelFontSize.replace('px', ''), 10);\r\n return isNaN(numValue) ? '11px' : `${Math.round(numValue * 0.786)}px`;\r\n }\r\n return `${Math.round((labelFontSize as number) * 0.786)}px`;\r\n })(),\r\n fontWeight: tokens.labelFontWeight,\r\n color: checked ? tokens.labelColorActive : tokens.labelColorInactive,\r\n opacity: 0.8,\r\n marginTop: '2px',\r\n userSelect: 'none',\r\n };\r\n\r\n return (\r\n <label htmlFor={radioId} style={containerStyle}>\r\n <input\r\n type=\"radio\"\r\n id={radioId}\r\n name={name}\r\n value={value}\r\n checked={checked}\r\n disabled={disabled}\r\n onChange={onChange}\r\n onBlur={(e) => {\r\n handleBlur();\r\n onBlur?.(e);\r\n }}\r\n onFocus={(e) => {\r\n handleFocus();\r\n onFocus?.(e);\r\n }}\r\n style={inputStyle}\r\n />\r\n <span style={checkmarkStyle}>\r\n <span style={dotStyle} />\r\n </span>\r\n {description ?\r\n <div style={labelContainerStyle}>\r\n <span style={textStyle}>{label}</span>\r\n <span style={descriptionStyle}>{description}</span>\r\n </div>\r\n : <span style={textStyle}>{label}</span>}\r\n </label>\r\n );\r\n};\r\n\r\nexport const RadioButtonGroup = ({\r\n label,\r\n helperText,\r\n required = false,\r\n error = false,\r\n options,\r\n value,\r\n defaultValue,\r\n id,\r\n name,\r\n disabled = false,\r\n direction = 'horizontal',\r\n groupClassName,\r\n itemClassName,\r\n size = 'md',\r\n onChange,\r\n}: RadioButtonGroupProps) => {\r\n const groupName = name || `radio-group-${Math.random().toString(36).substr(2, 9)}`;\r\n const groupId = id ?? `${groupName}-group`;\r\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\r\n value !== undefined ? value : defaultValue\r\n );\r\n const resolvedTokens = useTokens();\r\n const tokens = getRadioTokensFromResolved(resolvedTokens);\r\n const errorColor = resolvedTokens?.semantic?.color?.error?.default || '#c00';\r\n const sizeKey = size as 'sm' | 'md' | 'lg';\r\n const sizeTokens = (resolvedTokens?.components as any)?.radio?.size?.[sizeKey];\r\n const radioSize = sizeTokens?.radioSize ?? tokens.radioSize;\r\n const labelFontSize = sizeTokens?.labelFontSize ?? tokens.labelFontSize;\r\n const descriptionFontSize = sizeTokens?.descriptionFontSize ?? tokens.descriptionFontSize;\r\n const dotSize = sizeTokens?.dotSize ?? tokens.radioDotSize;\r\n\r\n React.useEffect(() => {\r\n if (value !== undefined) {\r\n setInternalValue(value);\r\n }\r\n }, [value]);\r\n\r\n const currentValue = value !== undefined ? value : internalValue;\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = event.target.value;\r\n if (value === undefined) {\r\n // Uncontrolled\r\n setInternalValue(newValue);\r\n }\r\n onChange?.(newValue);\r\n };\r\n\r\n const containerStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n };\r\n\r\n const headingStyle: React.CSSProperties = {\r\n display: 'block',\r\n marginBottom: parseInt(tokens.headingMarginBottom, 10),\r\n fontSize: parseInt(tokens.headingFontSize, 10),\r\n fontWeight: tokens.headingFontWeight,\r\n color: tokens.headingColor,\r\n fontFamily: tokens.headingFontFamily,\r\n };\r\n\r\n const groupStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: direction === 'horizontal' ? 'row' : 'column',\r\n columnGap: direction === 'horizontal' ? tokens.groupGapHorizontal : tokens.groupGapVertical,\r\n rowGap: direction === 'horizontal' ? tokens.groupGapVertical : tokens.groupGapHorizontal,\r\n flexWrap: 'wrap',\r\n };\r\n\r\n return (\r\n <div style={containerStyle}>\r\n {label != null && label !== '' && (\r\n <label style={headingStyle}>\r\n {required && <span style={{ color: errorColor, marginRight: 4 }}>*</span>}\r\n {label}\r\n </label>\r\n )}\r\n <div\r\n role=\"radiogroup\"\r\n aria-invalid={error}\r\n aria-describedby={helperText ? `${groupId}-helper` : undefined}\r\n style={groupStyle}\r\n className={groupClassName}\r\n >\r\n {options.map((option) => {\r\n const isChecked = currentValue === option.value;\r\n const optionDisabled = disabled || option.disabled;\r\n const optionId = `${groupName}-${option.value}`;\r\n\r\n return (\r\n <div key={option.value} className={itemClassName}>\r\n <RadioButtonGroupItem\r\n option={option}\r\n optionId={optionId}\r\n groupName={groupName}\r\n isChecked={isChecked}\r\n optionDisabled={optionDisabled}\r\n error={error}\r\n tokens={tokens}\r\n radioSize={radioSize}\r\n labelFontSize={labelFontSize}\r\n descriptionFontSize={descriptionFontSize}\r\n dotSize={dotSize}\r\n handleChange={handleChange}\r\n />\r\n </div>\r\n );\r\n })}\r\n </div>\r\n {helperText != null && helperText !== '' && (\r\n <div\r\n id={`${groupId}-helper`}\r\n style={{\r\n marginTop: tokens.helperMarginTop,\r\n fontSize: tokens.helperFontSize,\r\n color: error ? tokens.helperErrorColor : tokens.helperColor,\r\n fontFamily: tokens.labelFontFamily,\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: 4,\r\n }}\r\n role={error ? 'alert' : undefined}\r\n >\r\n {/* <FirebirdIcon name=\"info_circle\" size={16} /> */}\r\n <span>{helperText}</span>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n// Extracted to its own component so each item can have its own hover state\r\nfunction RadioButtonGroupItem({\r\n option,\r\n optionId,\r\n groupName,\r\n isChecked,\r\n optionDisabled,\r\n error = false,\r\n tokens,\r\n radioSize,\r\n labelFontSize,\r\n descriptionFontSize,\r\n dotSize,\r\n handleChange,\r\n}: {\r\n option: {\r\n label: string;\r\n value: string;\r\n description?: string;\r\n disabled?: boolean;\r\n };\r\n optionId: string;\r\n groupName: string;\r\n isChecked: boolean;\r\n optionDisabled: boolean | undefined;\r\n error?: boolean;\r\n tokens: ReturnType<typeof getRadioTokensFromResolved>;\r\n radioSize: string;\r\n labelFontSize: string;\r\n descriptionFontSize: string;\r\n dotSize: string;\r\n handleChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n}) {\r\n const activeColor = tokens.optionBorderActive;\r\n const inactiveBorderColor = error ? tokens.helperErrorColor : tokens.optionBorderInactive;\r\n const activeBackground = tokens.optionBackgroundActive;\r\n const inactiveBackground = tokens.optionBackgroundInactive;\r\n const activeTextColor = tokens.optionTextActive;\r\n const inactiveTextColor = tokens.optionTextInactive;\r\n\r\n const labelStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n margin: 0,\r\n marginBottom: option.description ? tokens.labelMarginBottom : 0,\r\n // padding: '12px 20px',\r\n // borderRadius: 999,\r\n // border: `2px solid ${isChecked ? activeColor : inactiveBorderColor}`,\r\n // backgroundColor: isChecked ? activeBackground : inactiveBackground,\r\n cursor: optionDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none',\r\n transition: 'border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease',\r\n // boxShadow:\r\n // focused && !optionDisabled && tokens.radioFocusRing !== 'none' ?\r\n // tokens.radioFocusRing\r\n // : undefined,\r\n opacity: optionDisabled ? 0.6 : 1,\r\n };\r\n\r\n const inputStyle: React.CSSProperties = {\r\n position: 'absolute',\r\n opacity: 0,\r\n cursor: optionDisabled ? 'not-allowed' : 'pointer',\r\n width: 0,\r\n height: 0,\r\n };\r\n\r\n const checkmarkStyle: React.CSSProperties = {\r\n position: 'relative',\r\n flexShrink: 0,\r\n width: radioSize,\r\n height: radioSize,\r\n borderRadius: '50%',\r\n backgroundColor: isChecked ? activeBackground : inactiveBackground,\r\n border: `${tokens.radioStrokeWidth} solid ${isChecked ? activeColor : inactiveBorderColor}`,\r\n boxSizing: 'border-box',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginRight: 10,\r\n transition: 'border-color 0.2s ease, background-color 0.2s ease',\r\n };\r\n\r\n const dotStyleInner: React.CSSProperties = {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n width: dotSize,\r\n height: dotSize,\r\n borderRadius: '50%',\r\n background: tokens.radioColorDot,\r\n display: isChecked ? 'block' : 'none',\r\n };\r\n\r\n const textStyle: React.CSSProperties = {\r\n fontFamily: tokens.labelFontFamily,\r\n fontSize: labelFontSize,\r\n fontWeight: isChecked ? 600 : tokens.labelFontWeight,\r\n color: isChecked ? activeTextColor : inactiveTextColor,\r\n userSelect: 'none',\r\n transition: 'color 0.2s ease',\r\n lineHeight: '1.5',\r\n };\r\n\r\n const labelContainerStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: `calc(${radioSize} + 10px)`,\r\n marginTop: '6px',\r\n };\r\n\r\n const descriptionStyle: React.CSSProperties = {\r\n fontFamily: tokens.labelFontFamily,\r\n fontSize: descriptionFontSize,\r\n fontWeight: tokens.descriptionFontWeight,\r\n color: tokens.descriptionColor,\r\n userSelect: 'none',\r\n transition: 'color 0.2s ease',\r\n };\r\n\r\n return (\r\n <label key={option.value} htmlFor={optionId} style={labelStyle}>\r\n <input\r\n type=\"radio\"\r\n id={optionId}\r\n name={groupName}\r\n value={option.value}\r\n checked={isChecked}\r\n disabled={!!optionDisabled}\r\n onChange={handleChange}\r\n style={inputStyle}\r\n />\r\n <span style={checkmarkStyle}>\r\n <span style={dotStyleInner} />\r\n </span>\r\n <span style={textStyle}>{option.label}</span>\r\n {option.description ?\r\n <div style={labelContainerStyle}>\r\n <span style={descriptionStyle}>{option.description}</span>\r\n </div>\r\n : <></>}\r\n </label>\r\n );\r\n}\r\n","import React, { useRef, useEffect, useId } from 'react';\r\nimport type { CheckboxProps, CheckboxGroupProps } from './Checkbox.types';\r\nimport { getCheckboxTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\n\r\nconst CheckIcon = ({ size }: { size: number }) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n style={{ display: 'block' }}\r\n >\r\n <path\r\n d=\"M2.5 6L5 8.5L9.5 3.5\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.75\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n);\r\n\r\nconst IndeterminateIcon = ({ size }: { size: number }) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n style={{ display: 'block' }}\r\n >\r\n <path d=\"M2.5 6H9.5\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" />\r\n </svg>\r\n);\r\n\r\nexport const Checkbox = ({\r\n label,\r\n labelPlacement = 'end',\r\n size = 'md',\r\n checked,\r\n defaultChecked,\r\n disabled = false,\r\n indeterminate = false,\r\n name,\r\n id,\r\n value,\r\n onChange,\r\n onBlur,\r\n onFocus,\r\n helperText,\r\n error,\r\n}: CheckboxProps) => {\r\n const generatedId = useId();\r\n const checkboxId = id || `${name || 'checkbox'}-${value || generatedId}`;\r\n const checkboxRef = useRef<HTMLInputElement>(null);\r\n const [isHovered, setIsHovered] = React.useState(false);\r\n const [isFocused, setIsFocused] = React.useState(false);\r\n const [internalChecked, setInternalChecked] = React.useState(\r\n checked !== undefined ? checked : defaultChecked || false\r\n );\r\n\r\n const resolvedTokens = useTokens();\r\n const tokens = getCheckboxTokensFromResolved(resolvedTokens);\r\n\r\n const checkboxSize =\r\n size === 'sm' ? tokens.checkboxSizeSm\r\n : size === 'lg' ? tokens.checkboxSizeLg\r\n : tokens.checkboxSizeMd;\r\n const checkboxBorderRadius =\r\n size === 'sm' ? tokens.checkboxBorderRadiusSm\r\n : size === 'lg' ? tokens.checkboxBorderRadiusLg\r\n : tokens.checkboxBorderRadiusMd;\r\n const labelFontSize =\r\n size === 'sm' ? tokens.textFontSizeSm\r\n : size === 'lg' ? tokens.textFontSizeLg\r\n : tokens.textFontSizeMd;\r\n const iconSize =\r\n size === 'sm' ? 10\r\n : size === 'lg' ? 14\r\n : 12;\r\n\r\n useEffect(() => {\r\n if (checkboxRef.current) {\r\n checkboxRef.current.indeterminate = indeterminate;\r\n }\r\n }, [indeterminate]);\r\n\r\n useEffect(() => {\r\n if (checked !== undefined) {\r\n setInternalChecked(checked);\r\n }\r\n }, [checked]);\r\n\r\n const isChecked = checked !== undefined ? checked : internalChecked;\r\n const isActive = isChecked || indeterminate;\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newChecked = e.target.checked;\r\n if (checked === undefined) {\r\n setInternalChecked(newChecked);\r\n }\r\n onChange?.(e);\r\n };\r\n\r\n const isControlled = checked !== undefined;\r\n\r\n const inputProps: React.InputHTMLAttributes<HTMLInputElement> = {\r\n className: 'ds-checkbox-input',\r\n type: 'checkbox',\r\n onChange: handleChange,\r\n name,\r\n id: checkboxId,\r\n value,\r\n disabled,\r\n 'aria-checked': indeterminate ? 'mixed' : isChecked,\r\n };\r\n\r\n if (isControlled) {\r\n inputProps.checked = checked;\r\n } else if (defaultChecked !== undefined) {\r\n inputProps.defaultChecked = defaultChecked;\r\n } else {\r\n inputProps.checked = internalChecked;\r\n }\r\n\r\n const boxBorderColor =\r\n isActive || (isHovered && !disabled) ? tokens.checkedBorderColor : tokens.checkboxColorInactive;\r\n\r\n const boxStyle: React.CSSProperties = {\r\n width: checkboxSize,\r\n height: checkboxSize,\r\n minWidth: checkboxSize,\r\n borderRadius: checkboxBorderRadius,\r\n border: `1.5px solid ${boxBorderColor}`,\r\n backgroundColor: isActive ? tokens.checkboxColorActive : tokens.checkboxBackgroundInactive,\r\n color: '#FFFFFF',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease',\r\n boxShadow:\r\n isFocused ? `0 0 0 2px ${tokens.checkedBorderColor}33`\r\n : isActive ? 'none'\r\n : 'inset 0 1px 2px rgba(15, 23, 42, 0.04)',\r\n pointerEvents: 'none',\r\n opacity: disabled ? 0.7 : 1,\r\n };\r\n\r\n const labelStyle: React.CSSProperties = {\r\n fontSize: labelFontSize,\r\n fontWeight: tokens.textFontWeight,\r\n color: disabled ? tokens.textColorInactive : tokens.textColorActive,\r\n userSelect: 'none',\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n margin: 0,\r\n lineHeight: '1.35',\r\n };\r\n\r\n const controlRowStyle: React.CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n flexDirection: labelPlacement === 'start' ? 'row-reverse' : 'row',\r\n gap: tokens.textMarginLeft,\r\n width: 'fit-content',\r\n maxWidth: '100%',\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n opacity: disabled ? 0.6 : 1,\r\n };\r\n\r\n return (\r\n <div\r\n className=\"ds-checkbox\"\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n width: 'fit-content',\r\n maxWidth: '100%',\r\n }}\r\n >\r\n <label\r\n htmlFor={checkboxId}\r\n style={controlRowStyle}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n >\r\n <span\r\n className=\"ds-checkbox-control\"\r\n style={{\r\n position: 'relative',\r\n display: 'inline-flex',\r\n width: checkboxSize,\r\n height: checkboxSize,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <input\r\n ref={checkboxRef}\r\n {...inputProps}\r\n onFocus={(e) => {\r\n setIsFocused(true);\r\n onFocus?.(e);\r\n }}\r\n onBlur={(e) => {\r\n setIsFocused(false);\r\n onBlur?.(e);\r\n }}\r\n style={{\r\n position: 'absolute',\r\n inset: 0,\r\n width: '100%',\r\n height: '100%',\r\n margin: 0,\r\n opacity: 0,\r\n appearance: 'none',\r\n WebkitAppearance: 'none',\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n zIndex: 1,\r\n }}\r\n />\r\n <span className=\"ds-checkbox-box\" style={boxStyle} aria-hidden=\"true\">\r\n {indeterminate ?\r\n <IndeterminateIcon size={iconSize} />\r\n : isChecked ?\r\n <CheckIcon size={iconSize} />\r\n : null}\r\n </span>\r\n </span>\r\n {label ?\r\n <span style={labelStyle}>{label}</span>\r\n : null}\r\n </label>\r\n {helperText != null && helperText !== '' && (\r\n <div\r\n style={{\r\n marginTop: tokens.helperTextMarginTop,\r\n marginLeft: `calc(${checkboxSize} + ${tokens.textMarginLeft})`,\r\n fontSize: tokens.helperTextFontSize,\r\n color: error ? tokens.helperTextErrorColor : tokens.helperTextColor,\r\n fontWeight: tokens.helperTextFontWeight,\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: 4,\r\n }}\r\n role={error ? 'alert' : undefined}\r\n >\r\n <span>{helperText}</span>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport const CheckboxGroup = ({\r\n label,\r\n options,\r\n value,\r\n defaultValue,\r\n name,\r\n disabled = false,\r\n direction = 'horizontal',\r\n size = 'md',\r\n columns,\r\n className,\r\n onChange,\r\n}: CheckboxGroupProps) => {\r\n const groupName = name || `checkbox-group-${Math.random().toString(36).substr(2, 9)}`;\r\n const [internalValue, setInternalValue] = React.useState<string[]>(\r\n value !== undefined ? value : defaultValue || []\r\n );\r\n\r\n const resolvedTokens = useTokens();\r\n const tokens = getCheckboxTokensFromResolved(resolvedTokens);\r\n\r\n React.useEffect(() => {\r\n if (value !== undefined) {\r\n setInternalValue(value);\r\n }\r\n }, [value]);\r\n\r\n const currentValue = value !== undefined ? value : internalValue;\r\n\r\n const handleChange = (optionValue: string, checked: boolean) => {\r\n let newValues: string[];\r\n if (checked) {\r\n newValues = [...currentValue, optionValue];\r\n } else {\r\n newValues = currentValue.filter((v) => v !== optionValue);\r\n }\r\n\r\n if (value === undefined) {\r\n setInternalValue(newValues);\r\n }\r\n onChange?.(newValues);\r\n };\r\n\r\n const groupLayoutStyle: React.CSSProperties =\r\n columns && columns > 1 ?\r\n {\r\n display: 'grid',\r\n gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,\r\n columnGap: tokens.groupGapHorizontal,\r\n rowGap: tokens.groupGapVertical,\r\n alignItems: 'start',\r\n justifyItems: 'start',\r\n }\r\n : {\r\n display: 'flex',\r\n flexDirection: direction === 'horizontal' ? 'row' : 'column',\r\n gap: direction === 'horizontal' ? tokens.groupGapHorizontal : tokens.groupGapVertical,\r\n flexWrap: direction === 'horizontal' ? 'wrap' : 'nowrap',\r\n alignItems: direction === 'horizontal' ? 'center' : 'flex-start',\r\n };\r\n\r\n return (\r\n <div\r\n className={className ? `ds-checkbox-group ${className}` : 'ds-checkbox-group'}\r\n style={{ width: '100%' }}\r\n >\r\n {label && (\r\n <span\r\n style={{\r\n display: 'block',\r\n fontSize: tokens.headingFontSize,\r\n fontWeight: tokens.headingFontWeight,\r\n color: tokens.headingColor,\r\n marginBottom: tokens.headingMarginBottom,\r\n lineHeight: 1.4,\r\n }}\r\n >\r\n {label}\r\n </span>\r\n )}\r\n <div style={groupLayoutStyle}>\r\n {options.map((option) => (\r\n <Checkbox\r\n key={option.value}\r\n label={option.label}\r\n value={option.value}\r\n name={groupName}\r\n size={size}\r\n checked={currentValue.includes(option.value)}\r\n disabled={disabled || option.disabled}\r\n onChange={(e) => handleChange(option.value, e.target.checked)}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import React, { useState, useCallback } from 'react';\r\n// import { Icon } from \"firebird-icon-lib\";\r\nimport type { CloseButtonSize } from '../../tokens';\r\nimport type { CloseButtonProps } from './CloseButton.types';\r\nimport { getCloseButtonTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\nexport const CloseButton = ({\r\n size = 'md',\r\n variant = 'filled',\r\n color = 'grey',\r\n disabled = false,\r\n 'aria-label': ariaLabel = 'Close',\r\n onMouseEnter,\r\n onMouseLeave,\r\n style,\r\n ...rest\r\n}: CloseButtonProps) => {\r\n const [hovered, setHovered] = useState(false);\r\n const isHover = hovered && !disabled;\r\n const resolvedTokens = useTokens();\r\n const t = getCloseButtonTokensFromResolved(resolvedTokens);\r\n\r\n const sizeKey = size as CloseButtonSize;\r\n const sizeVal = t[\r\n `size${sizeKey.charAt(0).toUpperCase()}${sizeKey.slice(1)}` as keyof typeof t\r\n ] as string;\r\n const paddingVal = t[\r\n `padding${sizeKey.charAt(0).toUpperCase()}${sizeKey.slice(1)}` as keyof typeof t\r\n ] as string;\r\n const borderRadiusVal = t[\r\n `borderRadius${sizeKey.charAt(0).toUpperCase()}${sizeKey.slice(1)}` as keyof typeof t\r\n ] as string;\r\n\r\n const filledBackground = color === 'white' ? t.filledBackgroundWhite : t.filledBackground;\r\n const filledHoverBackground =\r\n color === 'white' ? t.filledHoverBackgroundWhite : t.filledHoverBackground;\r\n\r\n const backgroundColor =\r\n variant === 'filled' ?\r\n disabled ? filledBackground\r\n : isHover ? filledHoverBackground\r\n : filledBackground\r\n : t.outlineBackground;\r\n\r\n const iconColor =\r\n variant === 'filled' ?\r\n disabled ? t.filledColor\r\n : isHover ? t.filledHoverColor\r\n : t.filledColor\r\n : disabled ? t.outlineColor\r\n : isHover ? t.outlineHoverColor\r\n : t.outlineColor;\r\n\r\n const border =\r\n variant === 'outline' ?\r\n isHover ? `1px solid ${t.outlineHoverBorder}`\r\n : `1px solid ${t.outlineBorder}`\r\n : t.filledBorder !== 'none' ? `1px solid ${t.filledBorder}`\r\n : 'none';\r\n\r\n const handleMouseEnter = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n setHovered(true);\r\n onMouseEnter?.(e);\r\n },\r\n [onMouseEnter]\r\n );\r\n\r\n const handleMouseLeave = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n setHovered(false);\r\n onMouseLeave?.(e);\r\n },\r\n [onMouseLeave]\r\n );\r\n\r\n const buttonStyle: React.CSSProperties = {\r\n width: sizeVal,\r\n height: sizeVal,\r\n minWidth: sizeVal,\r\n minHeight: sizeVal,\r\n padding: paddingVal,\r\n margin: 0,\r\n borderRadius: borderRadiusVal,\r\n border,\r\n backgroundColor,\r\n color: iconColor,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n outline: 'none',\r\n boxSizing: 'border-box',\r\n opacity: disabled ? parseFloat(t.disabledOpacity) : 1,\r\n transition: 'background-color 0.15s ease, border-color 0.15s ease',\r\n ...style,\r\n };\r\n\r\n // const iconSize = parseInt(String(iconSizeVal).replace(/px$/, '') || '16', 10);\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n aria-label={ariaLabel}\r\n disabled={disabled}\r\n style={buttonStyle}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n {...rest}\r\n >\r\n {/* <Icon name=\"close\" size={iconSize} color={iconColor} showLabel={false} /> */}\r\n <CloseIcon fontSize={size as 'small' | 'medium' | 'large'} />\r\n </button>\r\n );\r\n};\r\n","import React, { useState, useCallback } from \"react\";\r\nimport { AVATAR_TOKENS } from \"../../tokens\";\r\nimport type { AvatarSize } from \"../../tokens\";\r\nimport type { AvatarProps } from \"./Avatar.types\";\r\n\r\nfunction toPxString(value: string | number): string {\r\n if (typeof value === \"number\") return `${value}px`;\r\n const s = String(value).trim();\r\n if (/^\\d+$/.test(s)) return `${s}px`;\r\n return s.endsWith(\"px\") ? s : s ? `${s}px` : \"16px\";\r\n}\r\n\r\nfunction parsePx(value: string | number, fallback: number): number {\r\n if (typeof value === \"number\") return value;\r\n const match = String(value).match(/^(-?\\d+)/);\r\n return match ? parseInt(match[1], 10) : fallback;\r\n}\r\n\r\nconst AVATAR_SIZE_KEYS: Record<AvatarSize, string> = {\r\n xs: \"Xs\",\r\n sm: \"Sm\",\r\n md: \"Md\",\r\n lg: \"Lg\",\r\n xl: \"Xl\",\r\n xxl: \"Xxl\",\r\n xxxl: \"Xxxl\",\r\n};\r\n\r\nfunction getSizeTokenKey(size: AvatarSize): string {\r\n return AVATAR_SIZE_KEYS[size] ?? \"Md\";\r\n}\r\n\r\n/** Default placeholder SVG (wave/mountain shape) for image fallback */\r\nfunction PlaceholderSvg({\r\n color,\r\n backgroundColor,\r\n sizePx,\r\n}: {\r\n color: string;\r\n backgroundColor: string;\r\n sizePx: number;\r\n}) {\r\n const s = sizePx;\r\n return (\r\n <svg\r\n width={s}\r\n height={s}\r\n viewBox={`0 0 ${s} ${s}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden\r\n >\r\n <rect width={s} height={s} fill={backgroundColor} />\r\n <path\r\n d={`M 0 ${s * 0.6} Q ${s * 0.25} ${s * 0.35} ${s * 0.5} ${s * 0.55} T ${s} ${s * 0.5} V ${s} H 0 Z`}\r\n fill={color}\r\n />\r\n <circle cx={s * 0.25} cy={s * 0.3} r={s * 0.05} fill={color} />\r\n </svg>\r\n );\r\n}\r\n\r\n/** Simple person silhouette for icon variant when no custom icon */\r\nfunction PersonIconSvg({\r\n color,\r\n sizePx,\r\n}: {\r\n color: string;\r\n sizePx: number;\r\n}) {\r\n const s = sizePx;\r\n const stroke = Math.max(1, Math.round(sizePx / 24));\r\n return (\r\n <svg\r\n width={s}\r\n height={s}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke={color}\r\n strokeWidth={stroke}\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden\r\n >\r\n <circle cx=\"12\" cy=\"8\" r=\"3\" />\r\n <path d=\"M5 21v-2a5 5 0 0 1 5-5h4a5 5 0 0 1 5 5v2\" />\r\n </svg>\r\n );\r\n}\r\n\r\nexport const Avatar = ({\r\n size = \"md\",\r\n shape = \"circle\",\r\n variant = \"text\",\r\n initials = \"AB\",\r\n src = null,\r\n alt = \"\",\r\n iconType = \"male\",\r\n icon,\r\n style,\r\n ...rest\r\n}: AvatarProps) => {\r\n const [imageError, setImageError] = useState(false);\r\n const t = AVATAR_TOKENS;\r\n\r\n const sizeKey = getSizeTokenKey(size as AvatarSize);\r\n const sizeVal = toPxString(\r\n (t[`size${sizeKey}` as keyof typeof t] as string) ?? t.sizeMd\r\n );\r\n const fontSizeVal = toPxString(\r\n (t[`fontSize${sizeKey}` as keyof typeof t] as string) ?? t.fontSizeMd\r\n );\r\n const iconSizeVal = toPxString(\r\n (t[`iconSize${sizeKey}` as keyof typeof t] as string) ?? t.iconSizeMd\r\n );\r\n\r\n const borderRadius =\r\n shape === \"circle\" ? t.shapeCircle : t.shapeSquare;\r\n const sizePx = parsePx(sizeVal, 28);\r\n const iconSizePx = parsePx(iconSizeVal, 16);\r\n\r\n const showImage = variant === \"image\" && src && !imageError;\r\n const showPlaceholder =\r\n variant === \"image\" && (!src || imageError);\r\n const handleImageError = useCallback(() => setImageError(true), []);\r\n\r\n const baseStyle: React.CSSProperties = {\r\n width: sizeVal,\r\n height: sizeVal,\r\n minWidth: sizeVal,\r\n minHeight: sizeVal,\r\n borderRadius,\r\n backgroundColor: t.background,\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n overflow: \"hidden\",\r\n boxSizing: \"border-box\",\r\n ...style,\r\n };\r\n\r\n return (\r\n <div\r\n role=\"img\"\r\n aria-label={alt || (variant === \"text\" ? initials : undefined)}\r\n style={baseStyle}\r\n {...rest}\r\n >\r\n {variant === \"text\" && (\r\n <span\r\n style={{\r\n color: t.textColor,\r\n fontSize: fontSizeVal,\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n userSelect: \"none\",\r\n }}\r\n >\r\n {initials.slice(0, 2).toUpperCase()}\r\n </span>\r\n )}\r\n\r\n {variant === \"icon\" && (\r\n <>\r\n {icon !== undefined && icon !== null ? (\r\n <span\r\n style={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: iconSizeVal,\r\n height: iconSizeVal,\r\n color: t.iconColor,\r\n }}\r\n >\r\n {icon}\r\n </span>\r\n ) : (\r\n <PersonIconSvg\r\n color={t.iconColor}\r\n sizePx={iconSizePx}\r\n />\r\n )}\r\n </>\r\n )}\r\n\r\n {variant === \"image\" && showImage && (\r\n <img\r\n src={src!}\r\n alt={alt}\r\n onError={handleImageError}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n }}\r\n />\r\n )}\r\n\r\n {variant === \"image\" && showPlaceholder && (\r\n <PlaceholderSvg\r\n color={t.placeholderShape}\r\n backgroundColor={t.placeholderBackground}\r\n sizePx={sizePx}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n","import { getTabsTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport type { TabsProps } from './Tabs.types';\r\n\r\nfunction toColor(value: string | undefined, fallback: string): string {\r\n if (!value || typeof value !== 'string') return fallback;\r\n const s = value.trim();\r\n if (s.includes('{')) return fallback;\r\n if (s.startsWith('#') || s.startsWith('rgb') || s.startsWith('hsl')) return s;\r\n if (/^[0-9A-Fa-f]{6}$/.test(s)) return `#${s}`;\r\n return fallback;\r\n}\r\n\r\nconst skeletonKeyframes = `\r\n @keyframes tabs-skeleton-shimmer {\r\n 0% { opacity: 0.4; }\r\n 50% { opacity: 0.8; }\r\n 100% { opacity: 0.4; }\r\n }\r\n`;\r\n\r\nfunction TabsSkeleton({\r\n optionCount,\r\n containerBg,\r\n gap,\r\n paddingY,\r\n containerBorderRadius,\r\n paddingX,\r\n borderRadius,\r\n height,\r\n}: {\r\n optionCount: number;\r\n containerBg: string;\r\n gap: string;\r\n paddingY: string;\r\n containerBorderRadius: string;\r\n paddingX: string;\r\n borderRadius: string;\r\n height: string;\r\n}) {\r\n return (\r\n <>\r\n <style>{skeletonKeyframes}</style>\r\n <div\r\n role=\"status\"\r\n aria-label=\"Loading tabs\"\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap,\r\n padding: paddingY,\r\n borderRadius: containerBorderRadius,\r\n backgroundColor: containerBg,\r\n }}\r\n >\r\n {Array.from({ length: optionCount }, (_, i) => (\r\n <div\r\n key={i}\r\n style={{\r\n height,\r\n minWidth: '64px',\r\n paddingLeft: paddingX,\r\n paddingRight: paddingX,\r\n borderRadius,\r\n backgroundColor: '#E5E7EB',\r\n animation: 'tabs-skeleton-shimmer 1.5s ease-in-out infinite',\r\n }}\r\n />\r\n ))}\r\n </div>\r\n </>\r\n );\r\n}\r\n\r\nexport const Tabs = ({\r\n options,\r\n value,\r\n onChange,\r\n disabled = false,\r\n getOptionDisabled,\r\n loading = false,\r\n size = 'md',\r\n color = 'grey',\r\n style,\r\n ...rest\r\n}: TabsProps) => {\r\n const resolvedTokens = useTokens();\r\n const { tokens: t, sizes } = getTabsTokensFromResolved(resolvedTokens);\r\n const sizeTokens = sizes[size];\r\n const activeBg = toColor(t?.activeBackground, '#00545e');\r\n const activeTextColor = activeBg;\r\n const inactiveTextColor = toColor(t?.inactiveColor, '#56636a');\r\n const containerBg = toColor(\r\n color === 'white' ? t?.containerBackgroundWhite : t?.containerBackground,\r\n '#F3F5F6'\r\n );\r\n const inactiveBg = toColor(\r\n color === 'white' ? t?.inactiveBackgroundWhite : t?.inactiveBackground,\r\n '#EEF1F2'\r\n );\r\n const fontWeight = sizeTokens.fontWeight;\r\n\r\n if (loading) {\r\n return (\r\n <div style={style} {...rest}>\r\n <TabsSkeleton\r\n optionCount={options.length}\r\n containerBg={containerBg}\r\n gap={t.gap}\r\n paddingY={t.paddingY}\r\n containerBorderRadius={t.containerBorderRadius}\r\n paddingX={t.paddingX}\r\n borderRadius={sizeTokens.borderRadius}\r\n height={sizeTokens.height}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n overflowX: 'auto',\r\n overflowY: 'hidden',\r\n paddingBottom: 3,\r\n marginBottom: -4,\r\n width: '100%',\r\n ...style,\r\n }}\r\n {...rest}\r\n >\r\n <div\r\n role=\"tablist\"\r\n aria-orientation=\"horizontal\"\r\n aria-disabled={disabled}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'flex-end',\r\n gap: t.gap,\r\n padding: `0px ${t.paddingX}`,\r\n width: 'max-content',\r\n minWidth: '100%',\r\n boxSizing: 'border-box',\r\n position: 'relative',\r\n }}\r\n >\r\n {options.map((option) => {\r\n const isSelected = option.value === value;\r\n const isOptionDisabled = option.disabled === true || getOptionDisabled?.(option) === true;\r\n const isButtonDisabled = disabled || isOptionDisabled;\r\n const labelWithCount =\r\n option.count !== undefined ? `${option.label} (${option.count})` : option.label;\r\n\r\n return (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={isSelected}\r\n aria-label={labelWithCount}\r\n aria-disabled={isOptionDisabled}\r\n disabled={isButtonDisabled}\r\n onClick={() => {\r\n if (!isButtonDisabled) onChange?.(option.value);\r\n }}\r\n style={{\r\n backgroundColor: isSelected ? '#FFFFFF' : inactiveBg || containerBg,\r\n color: isSelected ? activeTextColor : inactiveTextColor,\r\n border: `1px solid ${isSelected ? activeBg : '#D4DDE1'}`,\r\n borderBottomColor: isSelected ? '#FFFFFF' : '#D4DDE1',\r\n position: 'relative',\r\n zIndex: isSelected ? 2 : 0,\r\n height: sizeTokens.height,\r\n minHeight: sizeTokens.height,\r\n maxHeight: sizeTokens.height,\r\n padding: sizeTokens.padding,\r\n fontSize: `${sizeTokens.fontSize}px`,\r\n borderTopLeftRadius: sizeTokens.borderRadius,\r\n borderTopRightRadius: sizeTokens.borderRadius,\r\n borderBottomLeftRadius: '0px',\r\n borderBottomRightRadius: '0px',\r\n fontWeight: isSelected ? fontWeight : '400',\r\n whiteSpace: 'nowrap',\r\n cursor: isButtonDisabled ? 'not-allowed' : 'pointer',\r\n marginBottom: 0,\r\n boxShadow: isSelected ? '0 3px 0 0 #FFFFFF' : 'none',\r\n opacity: isOptionDisabled ? 0.5 : 1,\r\n }}\r\n >\r\n {labelWithCount}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import React, { useState } from 'react';\r\n\r\nimport { Button } from '../Button/Button';\r\nimport { getToggleButtonTokensFromResolved } from '../../tokens';\r\nimport type { ToggleButtonProps } from './ToggleButton.types';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\n\r\nfunction parsePx(value: string): number {\r\n const num = parseInt(String(value).replace(/px$/i, ''), 10);\r\n return Number.isFinite(num) ? num : 0;\r\n}\r\n\r\nexport const ToggleButton = ({\r\n options,\r\n value,\r\n onChange,\r\n size = 'sm',\r\n color = 'grey',\r\n variant = 'default',\r\n disabled = false,\r\n getOptionDisabled,\r\n style,\r\n ...rest\r\n}: ToggleButtonProps) => {\r\n const resolvedTokens = useTokens();\r\n const t = getToggleButtonTokensFromResolved(resolvedTokens);\r\n const sizeTokens =\r\n size === 'lg' ?\r\n {\r\n height: t.sizeLgHeight,\r\n paddingX: t.sizeLgPaddingX,\r\n paddingY: t.sizeLgPaddingY,\r\n fontSize: t.sizeLgFontSize,\r\n borderRadius: t.sizeLgBorderRadius,\r\n borderWidth: t.sizeLgBorderWidth,\r\n }\r\n : size === 'md' ?\r\n {\r\n height: t.sizeMdHeight,\r\n paddingX: t.sizeMdPaddingX,\r\n paddingY: t.sizeMdPaddingY,\r\n fontSize: t.sizeMdFontSize,\r\n borderRadius: t.sizeMdBorderRadius,\r\n borderWidth: t.sizeMdBorderWidth,\r\n }\r\n : {\r\n height: t.sizeSmHeight,\r\n paddingX: t.sizeSmPaddingX,\r\n paddingY: t.sizeSmPaddingY,\r\n fontSize: t.sizeSmFontSize,\r\n borderRadius: t.sizeSmBorderRadius,\r\n borderWidth: t.sizeSmBorderWidth,\r\n };\r\n\r\n if (variant === 'pill') {\r\n return (\r\n <PillToggleButton\r\n options={options}\r\n value={value}\r\n onChange={onChange}\r\n sizeTokens={sizeTokens}\r\n tokens={t}\r\n color={color}\r\n disabled={disabled}\r\n getOptionDisabled={getOptionDisabled}\r\n style={style}\r\n {...rest}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n role=\"group\"\r\n aria-disabled={disabled}\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: t.gap,\r\n ...style,\r\n }}\r\n {...rest}\r\n >\r\n {options.map((option, index) => {\r\n const isSelected = option.value === value;\r\n const isOptionDisabled =\r\n disabled || option.disabled || getOptionDisabled?.(option) === true;\r\n const inactiveBackground =\r\n color === 'white' ? t.inactive.backgroundWhite : t.inactive.background;\r\n const borderColor = isSelected ? t.active.border : t.inactive.border;\r\n const fontWeight = isSelected ? t.activeFontWeight : t.fontWeight;\r\n const isFirst = index === 0;\r\n const isLast = index === options.length - 1;\r\n const showBoderRadis = isFirst || isLast;\r\n const borderRadius =\r\n isFirst ? `${sizeTokens.borderRadius} 0 0 ${sizeTokens.borderRadius}`\r\n : isLast ? `0 ${sizeTokens.borderRadius} ${sizeTokens.borderRadius} 0`\r\n : '0';\r\n\r\n return (\r\n <Button\r\n key={option.value}\r\n type=\"button\"\r\n size={size}\r\n variant={isSelected ? 'blue' : 'grey'}\r\n disabled={isOptionDisabled}\r\n showBoderRadis={showBoderRadis}\r\n aria-pressed={isSelected}\r\n aria-label={option.label}\r\n onClick={() => {\r\n if (!isOptionDisabled) onChange?.(option.value);\r\n }}\r\n style={{\r\n backgroundColor: isSelected ? t.active.background : inactiveBackground,\r\n color: isSelected ? t.active.color : t.inactive.color,\r\n border: `${sizeTokens.borderWidth} solid ${borderColor}`,\r\n height: sizeTokens.height,\r\n minHeight: sizeTokens.height,\r\n maxHeight: sizeTokens.height,\r\n padding: `${sizeTokens.paddingY} ${sizeTokens.paddingX}`,\r\n borderRadius,\r\n fontFamily: t.fontFamily,\r\n fontSize: sizeTokens.fontSize,\r\n lineHeight: t.lineHeight,\r\n fontWeight,\r\n boxSizing: 'border-box',\r\n }}\r\n >\r\n {option.label}\r\n </Button>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\ntype PillToggleButtonProps = Pick<\r\n ToggleButtonProps,\r\n 'options' | 'value' | 'onChange' | 'color' | 'disabled' | 'getOptionDisabled' | 'style'\r\n> &\r\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> & {\r\n sizeTokens: {\r\n height: string;\r\n paddingX: string;\r\n paddingY: string;\r\n fontSize: string;\r\n borderRadius: string;\r\n borderWidth: string;\r\n };\r\n tokens: ReturnType<typeof getToggleButtonTokensFromResolved>;\r\n };\r\n\r\nfunction PillToggleButton({\r\n options,\r\n value,\r\n onChange,\r\n sizeTokens,\r\n tokens: t,\r\n color = 'grey',\r\n disabled = false,\r\n getOptionDisabled,\r\n style,\r\n ...rest\r\n}: PillToggleButtonProps) {\r\n const [hoveredValue, setHoveredValue] = useState<string | null>(null);\r\n const selectedIndex = Math.max(\r\n 0,\r\n options.findIndex((option) => option.value === value)\r\n );\r\n const trackPadding = 3;\r\n const heightPx = parsePx(sizeTokens.height);\r\n const trackRadius = heightPx > 0 ? `${heightPx / 2}px` : sizeTokens.borderRadius;\r\n const inactiveTrackBg = color === 'white' ? '#F9FAFB' : (t.inactive.background ?? '#F3F4F6');\r\n const segmentCount = Math.max(options.length, 1);\r\n\r\n return (\r\n <div\r\n role=\"group\"\r\n aria-disabled={disabled}\r\n style={{\r\n position: 'relative',\r\n display: 'inline-flex',\r\n alignItems: 'stretch',\r\n boxSizing: 'border-box',\r\n height: sizeTokens.height,\r\n minHeight: sizeTokens.height,\r\n padding: trackPadding,\r\n borderRadius: trackRadius,\r\n border: `${sizeTokens.borderWidth} solid ${t.inactive.border}`,\r\n backgroundColor: inactiveTrackBg,\r\n boxShadow: 'inset 0 1px 2px rgba(0, 0, 0, 0.05)',\r\n ...style,\r\n }}\r\n {...rest}\r\n >\r\n <span\r\n aria-hidden\r\n style={{\r\n position: 'absolute',\r\n top: trackPadding,\r\n left: trackPadding,\r\n width: `calc((100% - ${trackPadding * 2}px) / ${segmentCount})`,\r\n height: `calc(100% - ${trackPadding * 2}px)`,\r\n borderRadius: `calc(${trackRadius} - ${trackPadding}px)`,\r\n backgroundColor: t.active.background,\r\n boxShadow:\r\n '0 1px 3px rgba(0, 0, 0, 0.14), 0 1px 2px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.12)',\r\n transform: `translateX(calc(${selectedIndex} * 100%))`,\r\n transition: 'transform 0.28s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.2s ease',\r\n pointerEvents: 'none',\r\n zIndex: 0,\r\n }}\r\n />\r\n\r\n {options.map((option) => {\r\n const isSelected = option.value === value;\r\n const isHovered = hoveredValue === option.value && !isSelected;\r\n const isOptionDisabled =\r\n disabled || option.disabled || getOptionDisabled?.(option) === true;\r\n\r\n return (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n aria-pressed={isSelected}\r\n aria-label={option.label}\r\n disabled={isOptionDisabled}\r\n onClick={() => {\r\n if (!isOptionDisabled) onChange?.(option.value);\r\n }}\r\n onMouseEnter={() => {\r\n if (!isOptionDisabled) setHoveredValue(option.value);\r\n }}\r\n onMouseLeave={() => setHoveredValue(null)}\r\n style={{\r\n position: 'relative',\r\n zIndex: 1,\r\n flex: '1 1 0',\r\n minWidth: 0,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '100%',\r\n padding: `0 ${sizeTokens.paddingX}`,\r\n border: 'none',\r\n borderRadius: `calc(${trackRadius} - ${trackPadding}px)`,\r\n backgroundColor: isHovered ? 'rgba(0, 0, 0, 0.04)' : 'transparent',\r\n color: isSelected ? t.active.color : t.inactive.color,\r\n fontFamily: t.fontFamily,\r\n fontSize: sizeTokens.fontSize,\r\n lineHeight: t.lineHeight,\r\n fontWeight: isSelected ? t.activeFontWeight : t.fontWeight,\r\n cursor: isOptionDisabled ? 'not-allowed' : 'pointer',\r\n opacity: isOptionDisabled ? 0.5 : 1,\r\n transition: 'color 0.2s ease, background-color 0.15s ease, opacity 0.15s ease',\r\n whiteSpace: 'nowrap',\r\n userSelect: 'none',\r\n WebkitTapHighlightColor: 'transparent',\r\n }}\r\n >\r\n {option.label}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { createPortal } from 'react-dom';\r\n\r\nimport { ToggleButton } from '../ToggleButton/ToggleButton';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport type { ViewEditToggleProps } from './ViewEditToggle.types';\r\n\r\nconst VIEW_EDIT_OPTIONS = [\r\n { value: 'view', label: 'View' },\r\n { value: 'edit', label: 'Edit' },\r\n] as const;\r\n\r\nconst DEFAULT_SPOTLIGHT_MESSAGE = (\r\n <>\r\n Switch between <strong style={{ color: '#111827' }}>View</strong> and{' '}\r\n <strong style={{ color: '#52760A' }}>Edit</strong> mode to update employee details\r\n </>\r\n);\r\n\r\nfunction defaultIsDismissed(key: string): boolean {\r\n try {\r\n return localStorage.getItem(key) === 'true';\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nfunction defaultOnDismiss(key: string): void {\r\n try {\r\n localStorage.setItem(key, 'true');\r\n } catch {\r\n /* ignore */\r\n }\r\n}\r\n\r\nexport const ViewEditToggle = ({\r\n value,\r\n onChange,\r\n ready = false,\r\n size = 'md',\r\n disabled = false,\r\n showView = true,\r\n showEdit = true,\r\n spotlight,\r\n ...rest\r\n}: ViewEditToggleProps) => {\r\n const toggleRef = useRef<HTMLDivElement>(null);\r\n const [spotlightRect, setSpotlightRect] = useState<DOMRect | null>(null);\r\n const [showSpotlight, setShowSpotlight] = useState(false);\r\n\r\n const isDismissed = spotlight?.isDismissed ?? defaultIsDismissed;\r\n const onDismiss = spotlight?.onDismiss ?? defaultOnDismiss;\r\n\r\n const options = VIEW_EDIT_OPTIONS.filter((option) => {\r\n if (option.value === 'view') return showView;\r\n if (option.value === 'edit') return showEdit;\r\n return true;\r\n });\r\n\r\n const canShowToggle = options.length > 0;\r\n const canShowSpotlight = canShowToggle && showView && showEdit;\r\n\r\n useEffect(() => {\r\n if (!ready || !spotlight?.storageKey || !canShowSpotlight) return;\r\n if (isDismissed(spotlight.storageKey)) return;\r\n\r\n const timer = window.setTimeout(() => {\r\n if (toggleRef.current) {\r\n setSpotlightRect(toggleRef.current.getBoundingClientRect());\r\n setShowSpotlight(true);\r\n }\r\n }, 400);\r\n\r\n return () => window.clearTimeout(timer);\r\n }, [ready, spotlight?.storageKey, isDismissed, canShowSpotlight]);\r\n\r\n const handleSkip = () => {\r\n if (spotlight?.storageKey) {\r\n onDismiss(spotlight.storageKey);\r\n }\r\n setShowSpotlight(false);\r\n };\r\n\r\n if (!canShowToggle) return null;\r\n\r\n return (\r\n <>\r\n <div ref={toggleRef} {...rest}>\r\n <ToggleButton\r\n options={[...options]}\r\n value={value}\r\n onChange={(next) => onChange(next as 'view' | 'edit')}\r\n size={size}\r\n variant=\"pill\"\r\n disabled={disabled}\r\n />\r\n </div>\r\n\r\n {showSpotlight && spotlightRect && spotlight && canShowSpotlight && (\r\n <SpotlightOverlay\r\n rect={spotlightRect}\r\n onSkip={handleSkip}\r\n message={spotlight.message ?? DEFAULT_SPOTLIGHT_MESSAGE}\r\n dismissLabel={spotlight.dismissLabel ?? 'Skip'}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\ninterface SpotlightOverlayProps {\r\n rect: DOMRect;\r\n onSkip: () => void;\r\n message: React.ReactNode;\r\n dismissLabel: string;\r\n}\r\n\r\nfunction SpotlightOverlay({ rect, onSkip, message, dismissLabel }: SpotlightOverlayProps) {\r\n const resolvedTokens = useTokens();\r\n const accentColor =\r\n resolvedTokens.semantic?.color?.primary?.default ??\r\n resolvedTokens.foundation?.colors?.green?.['500'] ??\r\n '#52760A';\r\n\r\n const pad = 10;\r\n const x = rect.left - pad;\r\n const y = rect.top - pad;\r\n const w = rect.width + pad * 2;\r\n const h = rect.height + pad * 2;\r\n const rx = (h / 2).toFixed(1);\r\n\r\n const tooltipLeft = Math.min(Math.max(x + w / 2, 120), window.innerWidth - 120);\r\n\r\n return createPortal(\r\n <div style={{ position: 'fixed', inset: 0, zIndex: 9999 }} onClick={onSkip}>\r\n <svg\r\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%' }}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <defs>\r\n <mask id=\"ds-ve-spotlight-mask\">\r\n <rect width=\"100%\" height=\"100%\" fill=\"white\" />\r\n <rect x={x} y={y} width={w} height={h} rx={rx} ry={rx} fill=\"black\" />\r\n </mask>\r\n </defs>\r\n <rect\r\n width=\"100%\"\r\n height=\"100%\"\r\n fill=\"rgba(0,0,0,0.58)\"\r\n mask=\"url(#ds-ve-spotlight-mask)\"\r\n />\r\n </svg>\r\n\r\n <div\r\n style={{\r\n position: 'absolute',\r\n left: x - 3,\r\n top: y - 3,\r\n width: w + 6,\r\n height: h + 6,\r\n borderRadius: `calc(${rx}px + 3px)`,\r\n border: `2px solid color-mix(in srgb, ${accentColor} 80%, transparent)`,\r\n boxShadow: `0 0 0 4px color-mix(in srgb, ${accentColor} 20%, transparent)`,\r\n pointerEvents: 'none',\r\n animation: 'ds-ve-pulse 1.6s ease-in-out infinite',\r\n }}\r\n />\r\n\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: y + h + 16,\r\n left: tooltipLeft,\r\n transform: 'translateX(-50%)',\r\n background: '#FFFFFF',\r\n borderRadius: 10,\r\n padding: '14px 18px',\r\n boxShadow: '0 6px 24px rgba(0,0,0,0.18)',\r\n minWidth: 240,\r\n maxWidth: 280,\r\n textAlign: 'center',\r\n pointerEvents: 'auto',\r\n }}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: -7,\r\n left: '50%',\r\n transform: 'translateX(-50%)',\r\n width: 0,\r\n height: 0,\r\n borderLeft: '8px solid transparent',\r\n borderRight: '8px solid transparent',\r\n borderBottom: '8px solid #FFFFFF',\r\n }}\r\n />\r\n\r\n <p\r\n style={{\r\n margin: '0 0 12px',\r\n fontSize: 13,\r\n color: '#374151',\r\n fontWeight: 500,\r\n lineHeight: 1.5,\r\n }}\r\n >\r\n {message}\r\n </p>\r\n\r\n <button\r\n type=\"button\"\r\n onClick={onSkip}\r\n style={{\r\n background: accentColor,\r\n color: '#FFFFFF',\r\n border: 'none',\r\n borderRadius: 6,\r\n padding: '6px 20px',\r\n fontSize: 13,\r\n cursor: 'pointer',\r\n fontWeight: 600,\r\n }}\r\n >\r\n {dismissLabel}\r\n </button>\r\n </div>\r\n\r\n <style>{`\r\n @keyframes ds-ve-pulse {\r\n 0%, 100% { box-shadow: 0 0 0 4px color-mix(in srgb, ${accentColor} 20%, transparent); }\r\n 50% { box-shadow: 0 0 0 8px color-mix(in srgb, ${accentColor} 8%, transparent); }\r\n }\r\n `}</style>\r\n </div>,\r\n document.body\r\n );\r\n}\r\n","import React, { useCallback, useState } from \"react\";\r\nimport {\r\n getSwitchTokensFromResolved,\r\n getTextFieldTokensFromResolved,\r\n} from \"../../tokens\";\r\nimport { useTokens } from \"../../ThemeProvider/ThemeContext\";\r\nimport type { SwitchProps } from \"./Switch.types\";\r\n\r\nfunction parsePx(value: string): number {\r\n const num = parseInt(String(value).replace(/px$/i, \"\"), 10);\r\n return Number.isFinite(num) ? num : 0;\r\n}\r\n\r\nexport const Switch = ({\r\n label,\r\n caption,\r\n helperText,\r\n required,\r\n checked,\r\n defaultChecked = false,\r\n onChange,\r\n disabled = false,\r\n size = \"md\",\r\n style,\r\n direction = \"row\",\r\n id,\r\n \"aria-label\": ariaLabel = \"Toggle\",\r\n ...rest\r\n}: SwitchProps) => {\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\r\n const isControlled = checked !== undefined;\r\n const isChecked = isControlled ? checked : internalChecked;\r\n\r\n const resolvedTokens = useTokens();\r\n const t = getSwitchTokensFromResolved(resolvedTokens);\r\n const sizeTokens =\r\n size === \"lg\"\r\n ? {\r\n width: t.sizeLgWidth,\r\n height: t.sizeLgHeight,\r\n thumbSize: t.sizeLgThumbSize,\r\n trackPadding: t.sizeLgTrackPadding,\r\n radius: t.sizeLgRadius,\r\n borderWidth: t.sizeLgBorderWidth,\r\n }\r\n : size === \"sm\"\r\n ? {\r\n width: t.sizeSmWidth,\r\n height: t.sizeSmHeight,\r\n thumbSize: t.sizeSmThumbSize,\r\n trackPadding: t.sizeSmTrackPadding,\r\n radius: t.sizeSmRadius,\r\n borderWidth: t.sizeSmBorderWidth,\r\n }\r\n : {\r\n width: t.sizeMdWidth,\r\n height: t.sizeMdHeight,\r\n thumbSize: t.sizeMdThumbSize,\r\n trackPadding: t.sizeMdTrackPadding,\r\n radius: t.sizeMdRadius,\r\n borderWidth: t.sizeMdBorderWidth,\r\n };\r\n\r\n const width = parsePx(sizeTokens.width);\r\n const thumbSize = parsePx(sizeTokens.thumbSize);\r\n const padding = parsePx(sizeTokens.trackPadding);\r\n\r\n const translateX = isChecked\r\n ? Math.max(0, width - thumbSize - padding * 2)\r\n : 0;\r\n\r\n const trackStyle: React.CSSProperties = {\r\n position: \"relative\",\r\n width: sizeTokens.width,\r\n height: sizeTokens.height,\r\n borderRadius: sizeTokens.radius,\r\n border: `${sizeTokens.borderWidth} solid ${\r\n isChecked ? t.trackBorderActive : t.trackBorder\r\n }`,\r\n backgroundColor: isChecked ? t.trackBackgroundActive : t.trackBackground,\r\n boxSizing: \"border-box\",\r\n transition: \"background-color 0.2s ease, border-color 0.2s ease\",\r\n };\r\n\r\n const thumbStyle: React.CSSProperties = {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: padding,\r\n width: sizeTokens.thumbSize,\r\n height: sizeTokens.thumbSize,\r\n borderRadius: sizeTokens.radius,\r\n backgroundColor: isChecked ? t.thumbBackgroundActive : t.thumbBackground,\r\n transform: `translate(${translateX}px, -50%)`,\r\n transition: \"transform 0.2s ease, background-color 0.2s ease\",\r\n };\r\n\r\n const handleToggle = useCallback(() => {\r\n if (disabled) return;\r\n const next = !isChecked;\r\n if (!isControlled) setInternalChecked(next);\r\n onChange?.(next);\r\n }, [disabled, isChecked, isControlled, onChange]);\r\n\r\n const tfTokens = getTextFieldTokensFromResolved(resolvedTokens);\r\n\r\n const labelStyle: React.CSSProperties = {\r\n display: \"block\",\r\n marginBottom: parseInt(String(t.labelMarginBottom), 10),\r\n fontSize: t.labelFontSize,\r\n fontWeight: t.labelFontWeight,\r\n color: t.labelColor,\r\n fontFamily: t.labelFontFamily,\r\n };\r\n\r\n const captionStyle: React.CSSProperties = {\r\n marginTop: 2,\r\n fontSize: t.captionFontSize,\r\n color: t.captionTextColor ?? t.labelColor,\r\n fontFamily: t.labelFontFamily,\r\n fontWeight: 400,\r\n };\r\n\r\n const helperTextStyle: React.CSSProperties = {\r\n marginTop: 4,\r\n fontSize: t.switchHelperTextFontSize,\r\n color: t.switchHelperTextColor,\r\n fontFamily: tfTokens.fontFamily,\r\n width: \"max-content\",\r\n };\r\n\r\n const switchComponent = (\r\n <button\r\n type=\"button\"\r\n id={id}\r\n role=\"switch\"\r\n aria-checked={!!isChecked}\r\n aria-label={label && typeof label === \"string\" ? label : ariaLabel}\r\n disabled={disabled}\r\n onClick={handleToggle}\r\n style={{\r\n padding: 0,\r\n border: \"none\",\r\n background: \"transparent\",\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n outline: \"none\",\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n opacity: disabled ? 0.6 : 1,\r\n ...style,\r\n }}\r\n {...rest}\r\n >\r\n <span style={trackStyle}>\r\n <span style={thumbStyle} />\r\n </span>\r\n </button>\r\n );\r\n\r\n if (label || helperText) {\r\n const isColumn = direction === \"column\" || direction === \"column-reverse\";\r\n return (\r\n <div\r\n style={{\r\n width: label ? \"100%\" : \"fit-content\",\r\n display: \"flex\",\r\n flexDirection: direction,\r\n alignItems: isColumn ? \"flex-start\" : \"center\",\r\n gap: 16,\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: direction,\r\n alignItems: isColumn ? \"flex-start\" : \"center\",\r\n gap: 24,\r\n justifyContent:\r\n direction === \"row\"\r\n ? \"space-between\"\r\n : direction === \"row-reverse\"\r\n ? \"flex-end\"\r\n : label\r\n ? \"space-between\"\r\n : \"flex-start\",\r\n width: label ? \"100%\" : \"fit-content\",\r\n }}\r\n >\r\n {label && (\r\n <div className=\"d-flex flex-column\">\r\n <label htmlFor={id} style={labelStyle} className=\"m-0\">\r\n {required && (\r\n <span\r\n style={{\r\n color: \"#c00\",\r\n marginRight: 4,\r\n }}\r\n >\r\n *\r\n </span>\r\n )}\r\n <span>{label}</span>\r\n {caption && <div style={captionStyle}>{caption}</div>}\r\n </label>\r\n <span style={{ width: \"max-content\" }}>\r\n {helperText && <div style={helperTextStyle}>{helperText}</div>}\r\n </span>\r\n </div>\r\n )}\r\n {switchComponent}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return switchComponent;\r\n};\r\n","import { Button } from '../Button/Button';\r\nimport type { MenuButtonProps } from './MenuButton.types';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\n\r\nconst DEFAULT_MIN_WIDTH = 120;\r\n\r\nexport function MenuButton({\r\n children,\r\n open = false,\r\n variant = 'blue',\r\n size = 'md',\r\n disabled = false,\r\n minWidth = DEFAULT_MIN_WIDTH,\r\n style,\r\n leftIcon,\r\n ...rest\r\n}: MenuButtonProps) {\r\n return (\r\n <Button\r\n type=\"button\"\r\n variant={variant}\r\n size={size}\r\n shape=\"pill\"\r\n disabled={disabled}\r\n leftIcon={leftIcon ?? null}\r\n rightIcon={\r\n <ExpandMoreIcon\r\n style={{\r\n transform: open ? 'rotate(180deg)' : 'rotate(0deg)',\r\n transition: 'transform 0.2s ease',\r\n }}\r\n />\r\n }\r\n style={{\r\n minWidth: typeof minWidth === 'number' ? `${minWidth}px` : minWidth,\r\n ...style,\r\n }}\r\n aria-expanded={open}\r\n aria-haspopup=\"menu\"\r\n {...rest}\r\n >\r\n {children}\r\n </Button>\r\n );\r\n}\r\n","import React, { useEffect, useRef, useCallback } from \"react\";\r\nimport { useTokens } from \"../../ThemeProvider/ThemeContext\";\r\nimport { getMenuTokensFromResolved } from \"../../tokens\";\r\nimport type { MenuProps } from \"./Menu.types\";\r\n\r\nexport function Menu({\r\n open,\r\n onClose,\r\n items,\r\n value,\r\n onSelect,\r\n minWidth,\r\n anchorRef,\r\n closeOnSelect = true,\r\n}: MenuProps) {\r\n const resolvedTokens = useTokens();\r\n const t = getMenuTokensFromResolved(resolvedTokens);\r\n const resolvedMinWidth =\r\n minWidth ??\r\n (typeof t.minWidth === \"string\" && /^\\d+$/.test(t.minWidth)\r\n ? `${t.minWidth}px`\r\n : t.minWidth);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n\r\n const handleClickOutside = useCallback(\r\n (e: MouseEvent) => {\r\n const target = e.target as Node;\r\n if (\r\n !anchorRef.current?.contains(target) &&\r\n !menuRef.current?.contains(target)\r\n ) {\r\n onClose();\r\n }\r\n },\r\n [anchorRef, onClose]\r\n );\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [open, handleClickOutside]);\r\n\r\n const handleItemClick = useCallback(\r\n (itemValue: string) => {\r\n onSelect?.(itemValue);\r\n if (closeOnSelect) onClose();\r\n },\r\n [onSelect, onClose, closeOnSelect]\r\n );\r\n\r\n if (!open) return null;\r\n\r\n const panelStyle: React.CSSProperties = {\r\n position: \"absolute\",\r\n top: \"100%\",\r\n right: 0,\r\n marginTop: t.marginTop,\r\n minWidth:\r\n typeof resolvedMinWidth === \"number\"\r\n ? `${resolvedMinWidth}px`\r\n : resolvedMinWidth,\r\n maxHeight: /^\\d+$/.test(String(t.listMaxHeight))\r\n ? `${t.listMaxHeight}px`\r\n : t.listMaxHeight,\r\n overflowY: \"auto\",\r\n background: t.background,\r\n borderRadius: t.borderRadius,\r\n boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.12)\",\r\n padding: t.padding,\r\n listStyle: \"none\",\r\n zIndex: 1000,\r\n };\r\n\r\n const panel = (\r\n <div\r\n ref={menuRef}\r\n role=\"menu\"\r\n aria-orientation=\"vertical\"\r\n style={panelStyle}\r\n >\r\n {items.map((item) => {\r\n const selected = value != null && item.value === value;\r\n return (\r\n <div\r\n key={item.value}\r\n role=\"menuitem\"\r\n aria-selected={selected}\r\n aria-disabled={item.disabled}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: t.itemIconLabelGap,\r\n padding: `${t.itemPaddingY} ${t.itemPaddingX}`,\r\n borderRadius: t.itemBorderRadius,\r\n fontFamily: t.fontFamily,\r\n fontSize: t.fontSize,\r\n fontWeight: t.fontWeight,\r\n lineHeight: t.lineHeight,\r\n color: t.textColor,\r\n cursor: item.disabled ? \"not-allowed\" : \"pointer\",\r\n backgroundColor: selected ? t.selectedBackground : \"transparent\",\r\n opacity: item.disabled ? 0.6 : 1,\r\n }}\r\n onMouseEnter={(e) => {\r\n if (!item.disabled)\r\n e.currentTarget.style.backgroundColor = t.hoverBackground;\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = selected\r\n ? t.selectedBackground\r\n : \"transparent\";\r\n }}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n if (!item.disabled) handleItemClick(item.value);\r\n }}\r\n >\r\n {item.icon != null && (\r\n <span\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n fontSize: 20,\r\n width: 20,\r\n height: 20,\r\n color: \"inherit\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n {item.icon}\r\n </span>\r\n )}\r\n <span style={{ flex: 1, textAlign: \"left\" }}>{item.label}</span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n\r\n return panel;\r\n}\r\n","import React, { useState, useCallback } from 'react';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport { getBadgeTokensFromResolved } from '../../tokens';\r\nimport type { BadgeProps } from './Badge.types';\r\n\r\nfunction CloseIcon({ size }: { size: number }) {\r\n return (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden\r\n >\r\n <path\r\n d=\"M1 1L11 11M11 1L1 11\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nexport const Badge = ({\r\n children,\r\n variant = 'default',\r\n size = 'md',\r\n color = 'grey',\r\n onRemove,\r\n disabled = false,\r\n removeLabel,\r\n style,\r\n className,\r\n}: BadgeProps) => {\r\n const [removeHovered, setRemoveHovered] = useState(false);\r\n const resolvedTokens = useTokens();\r\n const tokens = getBadgeTokensFromResolved(resolvedTokens);\r\n\r\n const height =\r\n size === 'xs' ? tokens.heightXs\r\n : size === 'sm' ? tokens.heightSm\r\n : size === 'lg' ? tokens.heightLg\r\n : tokens.heightMd;\r\n const isCircle = variant === 'circle';\r\n const padding =\r\n size === 'xs' ? tokens.paddingXs\r\n : size === 'sm' ? tokens.paddingSm\r\n : size === 'lg' ? tokens.paddingLg\r\n : tokens.paddingMd;\r\n const fontSize =\r\n size === 'xs' ? tokens.fontSizeXs\r\n : size === 'sm' ? tokens.fontSizeSm\r\n : size === 'lg' ? tokens.fontSizeLg\r\n : tokens.fontSizeMd;\r\n const borderRadius =\r\n size === 'xs' ? tokens.borderRadiusXs\r\n : size === 'sm' ? tokens.borderRadiusSm\r\n : size === 'lg' ? tokens.borderRadiusLg\r\n : tokens.borderRadiusMd;\r\n const iconSize =\r\n size === 'xs' ? tokens.removeIconSizeXs\r\n : size === 'sm' ? tokens.removeIconSizeSm\r\n : size === 'lg' ? tokens.removeIconSizeLg\r\n : tokens.removeIconSizeMd;\r\n\r\n const handleRemoveClick = useCallback(\r\n (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!disabled && onRemove) onRemove(e);\r\n },\r\n [disabled, onRemove]\r\n );\r\n\r\n const removeButtonColor =\r\n disabled ? tokens.removeButtonColor\r\n : removeHovered ? tokens.removeButtonHoverColor\r\n : tokens.removeButtonColor;\r\n\r\n const backgroundColor = color === 'white' ? tokens.backgroundWhite : tokens.background;\r\n\r\n return (\r\n <span\r\n className={className}\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: isCircle ? 0 : 6,\r\n boxSizing: 'border-box',\r\n padding: isCircle ? 0 : padding,\r\n fontSize,\r\n fontWeight: 400,\r\n backgroundColor,\r\n color: tokens.color,\r\n borderRadius: isCircle ? '50%' : borderRadius,\r\n border: isCircle ? `1px solid ${tokens.borderColor}` : undefined,\r\n width: isCircle ? height : undefined,\r\n height: isCircle ? height : undefined,\r\n minWidth: isCircle ? height : undefined,\r\n boxShadow: isCircle ? 'none' : tokens.boxShadow,\r\n opacity: disabled ? 0.6 : 1,\r\n ...style,\r\n }}\r\n >\r\n <span style={{ lineHeight: 1.4 }}>{children}</span>\r\n {onRemove != null && (\r\n <button\r\n type=\"button\"\r\n onClick={handleRemoveClick}\r\n onMouseDown={(e) => e.preventDefault()}\r\n onMouseEnter={() => setRemoveHovered(true)}\r\n onMouseLeave={() => setRemoveHovered(false)}\r\n disabled={disabled}\r\n aria-label={removeLabel ?? `Remove ${typeof children === 'string' ? children : 'item'}`}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: iconSize + 4,\r\n height: iconSize + 4,\r\n padding: 0,\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n color: removeButtonColor,\r\n marginLeft: 2,\r\n }}\r\n >\r\n <CloseIcon size={iconSize} />\r\n </button>\r\n )}\r\n </span>\r\n );\r\n};\r\n","import React, { useState, useRef, useEffect, useCallback, useMemo, memo } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { getSelectorTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport type { SelectorOption, SelectorProps } from './Selector.types';\r\nimport { Badge } from '../Badge/Badge';\r\nimport { Checkbox } from '../Checkbox/Checkbox';\r\nimport { Skeleton } from '../Skeleton/Skeleton';\r\n\r\nconst LIST_MAX_HEIGHT = 300;\r\nconst ESTIMATED_OPTION_ROW_HEIGHT = 40;\r\nconst ESTIMATED_GROUP_HEADING_HEIGHT = 32;\r\nconst ESTIMATED_EMPTY_STATE_HEIGHT = 48;\r\n\r\nexport type { SelectorOption, SelectorProps };\r\n\r\n/** Minimum gap between input and listbox; also used if spacing token is missing. */\r\nconst LISTBOX_GAP_FALLBACK_PX = 8;\r\n/** Keep the listbox inside the viewport with this margin from the nearest viewport edge. */\r\nconst VIEWPORT_EDGE_MARGIN_PX = 8;\r\n\r\n/** Scroll selected option inside the list only — `scrollIntoView` scrolls the window and grows page scroll. */\r\nfunction scrollListboxItemIntoView(list: HTMLUListElement, item: HTMLElement) {\r\n const pad = 4;\r\n const listRect = list.getBoundingClientRect();\r\n const itemRect = item.getBoundingClientRect();\r\n const itemTop = list.scrollTop + (itemRect.top - listRect.top);\r\n const itemBottom = itemTop + itemRect.height;\r\n const viewTop = list.scrollTop;\r\n const viewBottom = viewTop + list.clientHeight;\r\n if (itemTop < viewTop + pad) {\r\n list.scrollTop = Math.max(0, itemTop - pad);\r\n } else if (itemBottom > viewBottom - pad) {\r\n list.scrollTop = Math.max(0, itemBottom - list.clientHeight + pad);\r\n }\r\n}\r\n\r\nfunction getOptionLabelDefault(option: SelectorOption): string {\r\n if (typeof option === 'string') return option;\r\n return (option as { label?: string }).label ?? String(option);\r\n}\r\n\r\nfunction getOptionKey<T extends SelectorOption>(\r\n option: T,\r\n index: number,\r\n getOptionLabel: (o: T) => string\r\n): string {\r\n if (typeof option === 'object' && option !== null && 'id' in option) {\r\n return String((option as { id?: string }).id);\r\n }\r\n return `${getOptionLabel(option)}-${index}`;\r\n}\r\n\r\n// ----- Option row (li): shows checkbox when multiple -----\r\ninterface OptionItemProps<T extends SelectorOption> {\r\n option: T;\r\n optionLabel: string;\r\n disabled: boolean;\r\n index: number;\r\n selected: boolean;\r\n multiple: boolean;\r\n onSelect: (option: T) => void;\r\n renderOption?: (option: T, state: { index: number }) => React.ReactNode;\r\n selectorTokens: ReturnType<typeof getSelectorTokensFromResolved>;\r\n showFlag?: boolean;\r\n}\r\n\r\nfunction getOptionIsoCode(option: SelectorOption): string | null {\r\n if (typeof option !== 'object' || option == null) return null;\r\n const iso = (option as { iso?: unknown }).iso;\r\n return typeof iso === 'string' && iso.trim() ? iso.toLowerCase() : null;\r\n}\r\n\r\nfunction OptionItemInner<T extends SelectorOption>({\r\n option,\r\n optionLabel,\r\n disabled,\r\n index,\r\n selected,\r\n multiple,\r\n onSelect,\r\n renderOption,\r\n selectorTokens: selTokens,\r\n showFlag = false,\r\n}: OptionItemProps<T>) {\r\n const handleMouseDown = useCallback(\r\n (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n if (!disabled) onSelect(option);\r\n },\r\n [option, onSelect, disabled]\r\n );\r\n\r\n const handleMouseEnter = useCallback(\r\n (e: React.MouseEvent<HTMLLIElement>) => {\r\n if (!disabled) e.currentTarget.style.backgroundColor = selTokens.optionHoverBackground;\r\n },\r\n [disabled, selTokens.optionHoverBackground]\r\n );\r\n\r\n const handleMouseLeave = useCallback((e: React.MouseEvent<HTMLLIElement>) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }, []);\r\n\r\n const itemStyle = useMemo(\r\n () => ({\r\n padding: selTokens.optionPadding,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n opacity: disabled ? 0.6 : 1,\r\n backgroundColor: 'transparent',\r\n fontSize: selTokens.optionFontSize,\r\n color: selTokens.optionColor,\r\n listStyle: 'none' as const,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n }),\r\n [disabled, selTokens.optionPadding, selTokens.optionFontSize, selTokens.optionColor]\r\n );\r\n\r\n return (\r\n <li\r\n role=\"option\"\r\n aria-selected={selected}\r\n aria-disabled={disabled}\r\n onMouseDown={handleMouseDown}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n style={itemStyle}\r\n >\r\n <span style={{ display: 'flex', alignItems: 'center', minWidth: 0 }}>\r\n {showFlag && getOptionIsoCode(option) && (\r\n <img\r\n loading=\"lazy\"\r\n width=\"24px\"\r\n style={{ marginRight: 8, flexShrink: 0 }}\r\n srcSet={`https://flagcdn.com/w40/${getOptionIsoCode(option)}.png 2x`}\r\n src={`https://flagcdn.com/w20/${getOptionIsoCode(option)}.png`}\r\n alt={`${optionLabel} flag`}\r\n />\r\n )}\r\n <span>{renderOption ? renderOption(option, { index }) : optionLabel}</span>\r\n </span>\r\n {multiple ?\r\n <div style={{ marginLeft: 8, flexShrink: 0, pointerEvents: 'none' }}>\r\n <Checkbox\r\n label=\"\"\r\n checked={selected}\r\n disabled={disabled}\r\n id={`selector-checkbox-${index}`}\r\n />\r\n </div>\r\n : selected ?\r\n <div aria-hidden=\"true\" style={{ marginLeft: 8, flexShrink: 0 }}>\r\n {/* <FirebirdIcon name=\"dubble_check\" size={16} /> */}\r\n </div>\r\n : null}\r\n </li>\r\n );\r\n}\r\n\r\nconst OptionItem = memo(OptionItemInner) as typeof OptionItemInner;\r\n\r\nfunction getListboxStyle(\r\n tokens: ReturnType<typeof getSelectorTokensFromResolved>\r\n): React.CSSProperties {\r\n return {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n background: tokens.listboxBackground,\r\n border: tokens.listboxBorder,\r\n borderRadius: tokens.listboxBorderRadius,\r\n marginTop: 0,\r\n padding: 0,\r\n listStyle: 'none',\r\n maxHeight: LIST_MAX_HEIGHT,\r\n overflowY: 'auto',\r\n // Prevent wheel/touch scroll from chaining to the page when reaching list edges,\r\n // which would otherwise move the anchor input and force a position recompute.\r\n overscrollBehavior: 'contain',\r\n boxShadow: '0 4px 8px rgba(0,0,0,0.1)',\r\n zIndex: 1400,\r\n };\r\n}\r\n\r\nconst getGroupHeadingStyle = (\r\n tokens: ReturnType<typeof getSelectorTokensFromResolved>\r\n): React.CSSProperties => ({\r\n padding: tokens.optionPadding,\r\n fontSize: tokens.optionFontSize,\r\n fontWeight: 600,\r\n color: tokens.optionColor,\r\n background: tokens.listboxGroupHeadingBackground,\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 1,\r\n borderBottom: tokens.listboxGroupHeadingBorder,\r\n});\r\n\r\nconst defaultGroupListStyle: React.CSSProperties = {\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n};\r\n\r\nfunction SelectorInner<T extends SelectorOption>(props: SelectorProps<T>) {\r\n const {\r\n multiple = false,\r\n options = [],\r\n value,\r\n onChange,\r\n label,\r\n placeholder = 'Select...',\r\n required = false,\r\n error,\r\n helperText,\r\n disabled = false,\r\n size = 'md',\r\n color = 'grey',\r\n noOptionsText = 'No options',\r\n loading = false,\r\n loadingText = 'Loading…',\r\n isOptionDisabled,\r\n getOptionLabel = getOptionLabelDefault as (option: T) => string,\r\n renderOption,\r\n groupBy,\r\n renderGroup,\r\n id,\r\n limitTags = 1,\r\n clearable = true,\r\n filterOptions: filterOptionsProp,\r\n onListboxScroll,\r\n onOpenChange,\r\n open,\r\n skeletonLoading = false,\r\n onKeyDown,\r\n onInput,\r\n showFlag = false,\r\n autoComplete = 'off',\r\n listboxMinWidth,\r\n isOptionEqualToValue,\r\n } = props;\r\n\r\n const valueArray = useMemo(\r\n () =>\r\n multiple ?\r\n Array.isArray(value) ?\r\n value\r\n : []\r\n : value != null ? [value as T]\r\n : [],\r\n [multiple, value]\r\n );\r\n const hasValueSingle = !multiple && value != null;\r\n const hasValuesMulti = multiple && valueArray.length > 0;\r\n\r\n const [inputValue, setInputValue] = useState('');\r\n const [isTyping, setIsTyping] = useState(false);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [isHovering, setIsHovering] = useState(false);\r\n const [isFocused, setIsFocused] = useState(false);\r\n const [listboxPosition, setListboxPosition] = useState<{\r\n top: number;\r\n left: number;\r\n width: number;\r\n placement: 'up' | 'down';\r\n maxHeight: number;\r\n } | null>(null);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n /** Bounds of the combobox/input only (excludes label/helper); used so listbox gaps match the field edges. */\r\n const inputAnchorRef = useRef<HTMLDivElement>(null);\r\n const listboxRef = useRef<HTMLUListElement>(null);\r\n const prevIsOpenForCallbackRef = useRef(isOpen);\r\n const didSelectRef = useRef(false);\r\n const multiWrapperRef = useRef<HTMLDivElement>(null);\r\n const multiInputRef = useRef<HTMLInputElement>(null);\r\n const mouseDownOnFieldRef = useRef(false);\r\n const listboxPositionRafRef = useRef<number | null>(null);\r\n\r\n const isEqual = useCallback(\r\n (a: T, b: T) => (isOptionEqualToValue ? isOptionEqualToValue(a, b) : a === b),\r\n [isOptionEqualToValue]\r\n );\r\n\r\n const valueSet = useMemo(() => new Set(valueArray), [valueArray]);\r\n\r\n const isSelected = useCallback(\r\n (option: T) => {\r\n if (isOptionEqualToValue) return valueArray.some((v) => isOptionEqualToValue(v, option));\r\n return valueSet.has(option);\r\n },\r\n [isOptionEqualToValue, valueArray, valueSet]\r\n );\r\n\r\n const searchString = isTyping || multiple ? inputValue : '';\r\n\r\n const filterFn = useCallback(\r\n (option: T) => {\r\n const labelStr = getOptionLabel(option)?.toLowerCase();\r\n return labelStr?.includes(searchString?.toLowerCase());\r\n },\r\n [searchString, getOptionLabel]\r\n );\r\n\r\n const filteredOptions = useMemo(\r\n () =>\r\n filterOptionsProp ?\r\n filterOptionsProp(options, {\r\n inputValue: searchString,\r\n getOptionLabel,\r\n })\r\n : options.filter(filterFn),\r\n [filterOptionsProp, options, searchString, getOptionLabel, filterFn]\r\n );\r\n\r\n const groupedFilteredOptions = useMemo(() => {\r\n if (!groupBy) return null;\r\n const map = new Map<string, T[]>();\r\n for (const option of filteredOptions) {\r\n const group = String(groupBy(option) ?? '');\r\n const arr = map.get(group);\r\n if (arr) arr.push(option);\r\n else map.set(group, [option]);\r\n }\r\n return Array.from(map.entries()).map(([group, groupOptions]) => ({\r\n group,\r\n options: groupOptions,\r\n }));\r\n }, [filteredOptions, groupBy]);\r\n\r\n const noDataFound = filteredOptions.length === 0 && !loading;\r\n const resolvedTokens = useTokens();\r\n const selectorTokens = getSelectorTokensFromResolved(resolvedTokens);\r\n const listboxGapPx = useMemo(() => {\r\n const raw = resolvedTokens?.foundation?.spacing?.['1'];\r\n const n =\r\n typeof raw === 'string' ? parseInt(raw.replace(/px$/i, ''), 10)\r\n : typeof raw === 'number' ? raw\r\n : NaN;\r\n if (Number.isFinite(n) && n > 0) return n;\r\n return LISTBOX_GAP_FALLBACK_PX;\r\n }, [resolvedTokens]);\r\n const badgeStyle: React.CSSProperties = {\r\n backgroundColor: selectorTokens.chipBackground,\r\n };\r\n const inputHeight =\r\n size === 'xs' ? parseInt(selectorTokens.inputHeightXs, 10)\r\n : size === 'sm' ? parseInt(selectorTokens.inputHeightSm, 10)\r\n : size === 'lg' ? parseInt(selectorTokens.inputHeightLg, 10)\r\n : parseInt(selectorTokens.inputHeightMd, 10);\r\n const inputPadding =\r\n size === 'xs' ? selectorTokens.inputPaddingXs\r\n : size === 'sm' ? selectorTokens.inputPaddingSm\r\n : size === 'lg' ? selectorTokens.inputPaddingLg\r\n : selectorTokens.inputPaddingMd;\r\n const inputFontSize =\r\n size === 'xs' ? selectorTokens.inputFontSizeXs\r\n : size === 'sm' ? selectorTokens.inputFontSizeSm\r\n : size === 'lg' ? selectorTokens.inputFontSizeLg\r\n : selectorTokens.inputFontSizeMd;\r\n const inputBorderRadius =\r\n size === 'xs' ? selectorTokens.inputBorderRadiusXs\r\n : size === 'sm' ? selectorTokens.inputBorderRadiusSm\r\n : size === 'lg' ? selectorTokens.inputBorderRadiusLg\r\n : selectorTokens.inputBorderRadiusMd;\r\n const showClear =\r\n clearable &&\r\n (isOpen || (isHovering && !disabled)) &&\r\n (multiple ? hasValuesMulti : hasValueSingle || inputValue !== '');\r\n const selectedSingleIso =\r\n !multiple && showFlag && value != null ? getOptionIsoCode(value as SelectorOption) : null;\r\n const inputPaddingRight =\r\n disabled ? 20\r\n : showClear ? 56\r\n : 36;\r\n const inputPaddingLeft = selectedSingleIso ? '40px' : '20px';\r\n\r\n const parsePaddingY = useCallback((padding: string) => {\r\n // Expected: \"6px 12px\" or \"6 12\" etc; we only need the first value\r\n const first =\r\n String(padding ?? '')\r\n .trim()\r\n .split(/\\s+/)[0] ?? '';\r\n const n = parseInt(first, 10);\r\n return Number.isFinite(n) ? n : 0;\r\n }, []);\r\n const wrapperPaddingY = parsePaddingY(inputPadding);\r\n const visibleTags =\r\n multiple && !isOpen && limitTags >= 0 ? valueArray.slice(0, limitTags) : valueArray;\r\n const remainingCount =\r\n multiple && !isOpen && limitTags >= 0 ? Math.max(0, valueArray.length - limitTags) : 0;\r\n\r\n useEffect(() => {\r\n if (multiple || isTyping) return;\r\n if (value != null) {\r\n setInputValue(getOptionLabel(value as T));\r\n } else {\r\n setInputValue('');\r\n }\r\n }, [multiple, value, getOptionLabel, isTyping]);\r\n\r\n const updateListboxPosition = useCallback(\r\n (useMeasuredHeight: boolean) => {\r\n const anchor = containerRef.current;\r\n if (!anchor) return;\r\n\r\n const rect = anchor.getBoundingClientRect();\r\n const inputRect = inputAnchorRef.current?.getBoundingClientRect();\r\n const anchorTop = inputRect?.top ?? rect.top;\r\n const anchorBottom = inputRect?.bottom ?? rect.bottom;\r\n\r\n const viewportHeight = Math.max(\r\n 0,\r\n window.innerHeight || document.documentElement.clientHeight\r\n );\r\n\r\n const headingCount =\r\n groupedFilteredOptions ?\r\n groupedFilteredOptions.reduce((count, group) => {\r\n return group.group ? count + 1 : count;\r\n }, 0)\r\n : 0;\r\n const estimatedListHeight =\r\n noDataFound ? ESTIMATED_EMPTY_STATE_HEIGHT\r\n : loading && filteredOptions.length === 0 ? ESTIMATED_EMPTY_STATE_HEIGHT\r\n : filteredOptions.length * ESTIMATED_OPTION_ROW_HEIGHT +\r\n headingCount * ESTIMATED_GROUP_HEADING_HEIGHT;\r\n // Estimate the actual dropdown height so we don't force \"up\" placement\r\n // just because LIST_MAX_HEIGHT is large.\r\n const neededHeight = Math.min(\r\n LIST_MAX_HEIGHT,\r\n Math.max(ESTIMATED_EMPTY_STATE_HEIGHT, estimatedListHeight)\r\n );\r\n\r\n // Use scrollHeight (natural content height) instead of bounding rect height.\r\n // bounding rect returns the already-clamped (visible) height when maxHeight kicks in,\r\n // which creates a feedback loop: each reposition shrinks maxHeight further while the\r\n // user scrolls inside the list. scrollHeight is stable regardless of the clamp.\r\n const measuredHeight =\r\n useMeasuredHeight && listboxRef.current ?\r\n Math.min(listboxRef.current.scrollHeight, LIST_MAX_HEIGHT)\r\n : undefined;\r\n // Use real height when available; otherwise estimate for clamp math — not LIST_MAX_HEIGHT,\r\n // or short lists get clamped as if 300px tall and sit far below the input.\r\n const heightForPosition =\r\n typeof measuredHeight === 'number' && measuredHeight > 0 ? measuredHeight : neededHeight;\r\n\r\n const gap = listboxGapPx;\r\n const edge = VIEWPORT_EDGE_MARGIN_PX;\r\n // List top when opening down: always below the input by `gap` (never overlap the field).\r\n const topDown = anchorBottom + gap;\r\n // List top when opening up: list bottom sits `gap` px above the input top.\r\n const topUp = anchorTop - gap - heightForPosition;\r\n\r\n // Open down only if the full list fits below with a viewport margin; otherwise prefer up.\r\n const fitsFullyBelow = topDown + heightForPosition <= viewportHeight - edge;\r\n const fitsFullyAbove = topUp >= 0;\r\n\r\n let placement: 'up' | 'down';\r\n let top: number;\r\n\r\n if (fitsFullyBelow) {\r\n placement = 'down';\r\n top = topDown;\r\n } else if (fitsFullyAbove) {\r\n placement = 'up';\r\n top = topUp;\r\n } else {\r\n const roomBelow = viewportHeight - topDown - edge;\r\n const roomAbove = anchorTop - gap - edge;\r\n if (roomAbove > roomBelow) {\r\n placement = 'up';\r\n top = Math.max(0, topUp);\r\n } else {\r\n placement = 'down';\r\n top = topDown;\r\n }\r\n }\r\n\r\n const availableDown = Math.max(0, viewportHeight - top - edge);\r\n const availableUp = Math.max(0, anchorTop - gap - top - edge);\r\n const available = placement === 'down' ? availableDown : availableUp;\r\n const maxHeight =\r\n available > 0 ?\r\n Math.min(LIST_MAX_HEIGHT, available)\r\n : Math.min(LIST_MAX_HEIGHT, ESTIMATED_EMPTY_STATE_HEIGHT);\r\n\r\n setListboxPosition({\r\n top,\r\n left: inputRect?.left ?? rect.left,\r\n width: inputRect?.width ?? rect.width,\r\n placement,\r\n maxHeight,\r\n });\r\n },\r\n [filteredOptions.length, groupedFilteredOptions, listboxGapPx, loading, noDataFound]\r\n );\r\n\r\n const scheduleListboxPositionUpdate = useCallback(() => {\r\n if (listboxPositionRafRef.current != null) {\r\n cancelAnimationFrame(listboxPositionRafRef.current);\r\n }\r\n listboxPositionRafRef.current = requestAnimationFrame(() => {\r\n listboxPositionRafRef.current = null;\r\n updateListboxPosition(true);\r\n });\r\n }, [updateListboxPosition]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) {\r\n setIsTyping(false);\r\n setListboxPosition(null);\r\n return;\r\n }\r\n\r\n let active = true;\r\n updateListboxPosition(false);\r\n\r\n // Re-measure after mount (helps for the \"up\" case and shorter-than-max lists).\r\n const measureTimeoutId = window.setTimeout(() => {\r\n if (!active) return;\r\n updateListboxPosition(true);\r\n }, 0);\r\n\r\n // Scroll selected option inside the listbox only (avoid window scroll / page height growth).\r\n const scrollTimeoutId = window.setTimeout(() => {\r\n if (!active) return;\r\n const list = listboxRef.current;\r\n if (!list) return;\r\n const selectedItem = list.querySelector('[aria-selected=\"true\"]');\r\n if (selectedItem) {\r\n scrollListboxItemIntoView(list, selectedItem as HTMLElement);\r\n }\r\n }, 50);\r\n\r\n return () => {\r\n active = false;\r\n window.clearTimeout(measureTimeoutId);\r\n window.clearTimeout(scrollTimeoutId);\r\n };\r\n }, [isOpen, updateListboxPosition]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n const handleResize = () => {\r\n scheduleListboxPositionUpdate();\r\n };\r\n\r\n const handleScroll = (event: Event) => {\r\n // Ignore the listbox's own internal scroll — it doesn't move the anchor input,\r\n // and re-measuring on every option-list scroll causes the dropdown to squeeze.\r\n const target = event.target as Node | null;\r\n if (target && listboxRef.current?.contains(target)) return;\r\n scheduleListboxPositionUpdate();\r\n };\r\n\r\n // `capture: true` ensures we react to scroll events from scrollable ancestors.\r\n window.addEventListener('resize', handleResize);\r\n window.addEventListener('scroll', handleScroll, true);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n window.removeEventListener('scroll', handleScroll, true);\r\n };\r\n }, [isOpen, scheduleListboxPositionUpdate]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (listboxPositionRafRef.current != null) {\r\n cancelAnimationFrame(listboxPositionRafRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (prevIsOpenForCallbackRef.current === isOpen) return;\r\n prevIsOpenForCallbackRef.current = isOpen;\r\n onOpenChange?.(isOpen);\r\n }, [isOpen, onOpenChange]);\r\n\r\n useEffect(() => {\r\n if (typeof open !== 'boolean') return;\r\n setIsOpen(open);\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (\r\n !containerRef.current?.contains(e.target as Node) &&\r\n !listboxRef.current?.contains(e.target as Node)\r\n ) {\r\n setIsOpen(false);\r\n }\r\n };\r\n const handleMouseUp = () => {\r\n mouseDownOnFieldRef.current = false;\r\n };\r\n document.addEventListener('mousedown', handleClickOutside);\r\n document.addEventListener('mouseup', handleMouseUp);\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n document.removeEventListener('mouseup', handleMouseUp);\r\n };\r\n }, []);\r\n\r\n const handleInputChange = useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement>) => {\r\n setInputValue(e.target.value);\r\n setIsTyping(true);\r\n setIsOpen(true);\r\n onInput?.(e);\r\n },\r\n [onInput]\r\n );\r\n\r\n const handleSelect = useCallback(\r\n (option: T) => {\r\n if (isOptionDisabled?.(option)) return;\r\n if (multiple) {\r\n const next =\r\n valueArray.some((v) => isEqual(v, option)) ?\r\n valueArray.filter((v) => !isEqual(v, option))\r\n : [...valueArray, option];\r\n (onChange as (v: T[]) => void)?.(next);\r\n } else {\r\n didSelectRef.current = true;\r\n setInputValue(getOptionLabel(option));\r\n setIsTyping(false);\r\n setIsOpen(false);\r\n (onChange as (v: T | null) => void)?.(option);\r\n setTimeout(() => {\r\n didSelectRef.current = false;\r\n }, 0);\r\n }\r\n },\r\n [multiple, valueArray, onChange, getOptionLabel, isOptionDisabled]\r\n );\r\n\r\n const handleClear = useCallback(\r\n (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setInputValue('');\r\n setIsOpen(false);\r\n if (multiple) {\r\n (onChange as (v: T[]) => void)?.([]);\r\n } else {\r\n (onChange as (v: T | null) => void)?.(null);\r\n }\r\n },\r\n [multiple, onChange]\r\n );\r\n\r\n const handleRemoveChip = useCallback(\r\n (e: React.MouseEvent, option: T) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (disabled) return;\r\n const next = valueArray.filter((v) => !isEqual(v, option));\r\n (onChange as (v: T[]) => void)?.(next);\r\n },\r\n [valueArray, onChange, disabled]\r\n );\r\n\r\n const handleFocus = useCallback(() => {\r\n setIsFocused(true);\r\n if (disabled) return;\r\n if (mouseDownOnFieldRef.current) return;\r\n setIsOpen(true);\r\n }, [disabled]);\r\n\r\n const handleFieldMouseDown = useCallback(() => {\r\n mouseDownOnFieldRef.current = true;\r\n }, []);\r\n\r\n const handleFieldClick = useCallback(\r\n (e: React.MouseEvent) => {\r\n mouseDownOnFieldRef.current = false;\r\n if (disabled) return;\r\n if ((e.target as HTMLElement).closest('button')) return;\r\n setIsOpen((prev) => !prev);\r\n },\r\n [disabled]\r\n );\r\n\r\n const handleBlur = useCallback(() => {\r\n setIsFocused(false);\r\n if (multiple) return;\r\n if (didSelectRef.current) return;\r\n const valueLabel = value != null ? getOptionLabel(value as T) : '';\r\n if (inputValue !== valueLabel) {\r\n (onChange as (v: T | null) => void)?.(null);\r\n setInputValue('');\r\n }\r\n setIsTyping(false);\r\n }, [multiple, value, inputValue, getOptionLabel, onChange]);\r\n\r\n const handleArrowClick = useCallback(\r\n (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!disabled) setIsOpen((prev) => !prev);\r\n },\r\n [disabled]\r\n );\r\n\r\n const preventDefault = useCallback((e: React.MouseEvent) => {\r\n e.preventDefault();\r\n }, []);\r\n\r\n const handleMultiWrapperMouseDown = useCallback(() => {\r\n mouseDownOnFieldRef.current = true;\r\n }, []);\r\n\r\n const handleMultiWrapperClick = useCallback(\r\n (e: React.MouseEvent<HTMLDivElement>) => {\r\n mouseDownOnFieldRef.current = false;\r\n if (disabled) return;\r\n if ((e.target as HTMLElement).closest('button')) return;\r\n setIsOpen((prev) => !prev);\r\n // Focus the input after a small delay to ensure it's rendered\r\n setTimeout(() => {\r\n multiInputRef.current?.focus();\r\n }, 0);\r\n },\r\n [disabled]\r\n );\r\n\r\n const inputBackground =\r\n color === 'white' ? selectorTokens.inputBackgroundWhite : selectorTokens.inputBackgroundWhite;\r\n const wrapperBackground =\r\n color === 'white' ? selectorTokens.wrapperBackgroundWhite : selectorTokens.wrapperBackground;\r\n\r\n const inputStyle: React.CSSProperties = useMemo(\r\n () => ({\r\n width: '100%',\r\n padding: inputPadding,\r\n paddingLeft: inputPaddingLeft,\r\n paddingRight: inputPaddingRight,\r\n border:\r\n error ? selectorTokens.inputBorderError\r\n : isFocused ? selectorTokens.inputBorderActive\r\n : '1px solid #c7ced6',\r\n borderRadius: inputBorderRadius,\r\n fontSize: inputFontSize,\r\n minHeight: inputHeight,\r\n maxHeight: inputHeight,\r\n boxSizing: 'border-box',\r\n backgroundColor: disabled ? selectorTokens.inputBackgroundDisabled : inputBackground,\r\n outline: 'none',\r\n boxShadow: 'none',\r\n color: selectorTokens.inputColor,\r\n opacity: disabled ? parseFloat(selectorTokens.inputDisabledOpacity) : 1,\r\n cursor: disabled ? 'not-allowed' : undefined,\r\n }),\r\n [\r\n inputPaddingRight,\r\n inputPaddingLeft,\r\n inputHeight,\r\n inputPadding,\r\n inputBorderRadius,\r\n inputFontSize,\r\n disabled,\r\n isFocused,\r\n error,\r\n selectorTokens,\r\n inputBackground,\r\n ]\r\n );\r\n\r\n const wrapperStyle: React.CSSProperties = useMemo(\r\n () => ({\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n gap: 8,\r\n minHeight: inputHeight,\r\n paddingTop: wrapperPaddingY,\r\n paddingBottom: wrapperPaddingY,\r\n paddingLeft: valueArray.length === 0 ? 16 : 8,\r\n paddingRight:\r\n disabled ? 20\r\n : showClear ? 56\r\n : 36,\r\n border:\r\n error ? selectorTokens.inputBorderError\r\n : isFocused ? selectorTokens.inputBorderActive\r\n : '1px solid #c7ced6',\r\n borderRadius: inputBorderRadius,\r\n backgroundColor: disabled ? selectorTokens.wrapperBackgroundDisabled : wrapperBackground,\r\n boxSizing: 'border-box',\r\n boxShadow: 'none',\r\n opacity: disabled ? parseFloat(selectorTokens.inputDisabledOpacity) : 1,\r\n }),\r\n [\r\n inputHeight,\r\n wrapperPaddingY,\r\n showClear,\r\n disabled,\r\n valueArray.length,\r\n selectorTokens,\r\n wrapperBackground,\r\n isFocused,\r\n error,\r\n inputBorderRadius,\r\n ]\r\n );\r\n\r\n const chipStyle: React.CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: 6,\r\n padding: '7px 12px 7px 8px',\r\n fontSize: selectorTokens.chipFontSize,\r\n backgroundColor: selectorTokens.chipBackground,\r\n color: selectorTokens.chipColor,\r\n borderRadius: selectorTokens.chipBorderRadius,\r\n };\r\n\r\n const handleClearButtonMouseEnter = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (!disabled) {\r\n e.currentTarget.style.backgroundColor = selectorTokens.buttonHoverBackground;\r\n e.currentTarget.style.color = selectorTokens.buttonHoverColor;\r\n }\r\n },\r\n [disabled, selectorTokens.buttonHoverBackground, selectorTokens.buttonHoverColor]\r\n );\r\n const handleClearButtonMouseLeave = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n e.currentTarget.style.color = selectorTokens.buttonColor;\r\n },\r\n [selectorTokens.buttonColor]\r\n );\r\n const handleArrowButtonMouseEnter = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (!disabled) e.currentTarget.style.color = selectorTokens.buttonColor;\r\n },\r\n [disabled, selectorTokens.buttonColor]\r\n );\r\n const handleArrowButtonMouseLeave = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.currentTarget.style.color = selectorTokens.buttonColor;\r\n },\r\n [selectorTokens.buttonColor]\r\n );\r\n\r\n const iconButtonStyle: React.CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 24,\r\n height: 24,\r\n padding: 0,\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n color: selectorTokens.buttonColor,\r\n borderRadius: '50%',\r\n };\r\n\r\n if (skeletonLoading) {\r\n return (\r\n <div\r\n style={{\r\n width: '100%',\r\n position: 'relative',\r\n fontFamily: 'sans-serif',\r\n }}\r\n >\r\n {label && (\r\n <label\r\n style={{\r\n display: 'block',\r\n marginBottom: parseInt(selectorTokens.labelMarginBottom, 10),\r\n fontSize: selectorTokens.labelFontSize,\r\n fontWeight: selectorTokens.labelFontWeight,\r\n color: selectorTokens.labelColor,\r\n }}\r\n >\r\n {required && (\r\n <span\r\n style={{\r\n color: selectorTokens.labelRequiredColor,\r\n marginRight: 4,\r\n }}\r\n >\r\n *\r\n </span>\r\n )}\r\n {label}\r\n </label>\r\n )}\r\n <Skeleton height={inputHeight} borderRadius={8} />\r\n </div>\r\n );\r\n }\r\n\r\n const resolvedHelperText = helperText ?? (typeof error === 'string' ? error : undefined);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n style={{ width: '100%', position: 'relative', fontFamily: 'sans-serif' }}\r\n >\r\n <style>\r\n {`.selector-input::placeholder {\r\n color: ${selectorTokens.helperColor};\r\n }\r\n .selector-listbox {\r\n scrollbar-width: thin;\r\n scrollbar-color: #C8D0D5 transparent;\r\n }\r\n .selector-listbox::-webkit-scrollbar {\r\n width: 8px;\r\n }\r\n .selector-listbox::-webkit-scrollbar-track {\r\n background: transparent;\r\n border-radius: 4px;\r\n }\r\n .selector-listbox::-webkit-scrollbar-thumb {\r\n background-color: #C8D0D5;\r\n border-radius: 4px;\r\n }\r\n .selector-listbox::-webkit-scrollbar-thumb:hover {\r\n background-color: #B0B8BD;\r\n }\r\n .selector-listbox::-webkit-scrollbar-button {\r\n display: none !important;\r\n width: 0 !important;\r\n height: 0 !important;\r\n }\r\n .selector-listbox::-webkit-scrollbar-button:start:decrement,\r\n .selector-listbox::-webkit-scrollbar-button:end:increment {\r\n display: none !important;\r\n }\r\n .selector-listbox::-webkit-scrollbar-corner {\r\n background: transparent;\r\n }\r\n .selector-listbox .custom-checkbox-label:empty {\r\n display: none;\r\n }\r\n .selector-listbox .custom-checkbox-wrapper {\r\n margin: 0;\r\n }\r\n .selector-listbox .custom-checkbox-label {\r\n margin-left: 0;\r\n }`}\r\n </style>\r\n {label && (\r\n <label\r\n onClick={(e) => {\r\n if (disabled) return;\r\n if (isOpen) {\r\n setIsOpen(false);\r\n } else {\r\n e.preventDefault();\r\n }\r\n }}\r\n style={{\r\n display: 'block',\r\n marginBottom: parseInt(selectorTokens.labelMarginBottom, 10),\r\n fontSize: selectorTokens.labelFontSize,\r\n fontWeight: selectorTokens.labelFontWeight,\r\n color: selectorTokens.labelColor,\r\n // opacity: disabled ? parseFloat(selectorTokens.inputDisabledOpacity) : 1,\r\n cursor: 'default',\r\n }}\r\n >\r\n {label}\r\n {required && (\r\n <span\r\n style={{\r\n color: selectorTokens.labelRequiredColor,\r\n marginRight: 4,\r\n }}\r\n >\r\n *\r\n </span>\r\n )}\r\n </label>\r\n )}\r\n <div\r\n ref={inputAnchorRef}\r\n style={{ position: 'relative' }}\r\n onMouseEnter={() => setIsHovering(true)}\r\n onMouseLeave={() => setIsHovering(false)}\r\n >\r\n {multiple ?\r\n <div\r\n ref={multiWrapperRef}\r\n role=\"combobox\"\r\n aria-expanded={isOpen}\r\n aria-haspopup=\"listbox\"\r\n style={{\r\n ...wrapperStyle,\r\n cursor: disabled ? 'not-allowed' : 'text',\r\n }}\r\n onMouseDown={handleMultiWrapperMouseDown}\r\n onClick={handleMultiWrapperClick}\r\n >\r\n {visibleTags.map((option) => {\r\n const optionLabel = getOptionLabel(option);\r\n const badgeSize =\r\n size === 'xs' || size === 'sm' ? 'sm'\r\n : size === 'lg' ? 'lg'\r\n : 'md';\r\n return (\r\n <Badge\r\n key={getOptionKey(option, valueArray.indexOf(option), getOptionLabel)}\r\n size={badgeSize}\r\n onRemove={(e) => handleRemoveChip(e, option)}\r\n disabled={disabled}\r\n removeLabel={`Remove ${optionLabel}`}\r\n style={badgeStyle}\r\n >\r\n {optionLabel}\r\n </Badge>\r\n );\r\n })}\r\n {remainingCount > 0 && (\r\n <span\r\n style={{\r\n ...chipStyle,\r\n backgroundColor: 'transparent',\r\n color: selectorTokens.chipColor,\r\n padding: '4px 0',\r\n fontSize: inputFontSize,\r\n fontWeight: 'normal',\r\n }}\r\n >\r\n +{remainingCount}\r\n </span>\r\n )}\r\n {(isOpen || valueArray.length === 0) && (\r\n <input\r\n ref={multiInputRef}\r\n id={id}\r\n required={required}\r\n type=\"text\"\r\n autoComplete={autoComplete}\r\n placeholder={valueArray.length === 0 ? placeholder : ''}\r\n value={inputValue}\r\n onChange={handleInputChange}\r\n onKeyDown={(event) => {\r\n onKeyDown?.(event);\r\n }}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n onInvalid={(e) => {\r\n // Prevent browser-native validation bubble so custom helper text can be shown.\r\n e.preventDefault();\r\n }}\r\n disabled={disabled}\r\n aria-invalid={!!error}\r\n className=\"selector-input\"\r\n style={{\r\n flex: 1,\r\n minWidth: 60,\r\n border: 'none',\r\n outline: 'none',\r\n fontSize: selectorTokens.chipFontSize,\r\n backgroundColor: 'transparent',\r\n padding: 0,\r\n color: selectorTokens.inputColor,\r\n }}\r\n />\r\n )}\r\n </div>\r\n : <input\r\n id={id}\r\n required={required}\r\n type=\"text\"\r\n autoComplete={autoComplete}\r\n placeholder={placeholder}\r\n value={inputValue}\r\n onChange={handleInputChange}\r\n onFocus={handleFocus}\r\n onMouseDown={handleFieldMouseDown}\r\n onClick={handleFieldClick}\r\n onBlur={handleBlur}\r\n onInvalid={(e) => {\r\n // Prevent browser-native validation bubble so custom helper text can be shown.\r\n e.preventDefault();\r\n }}\r\n disabled={disabled}\r\n aria-invalid={!!error}\r\n className=\"selector-input\"\r\n style={inputStyle}\r\n />\r\n }\r\n {!multiple && selectedSingleIso && (\r\n <img\r\n loading=\"lazy\"\r\n width=\"24px\"\r\n style={{\r\n position: 'absolute',\r\n left: 12,\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n pointerEvents: 'none',\r\n }}\r\n srcSet={`https://flagcdn.com/w40/${selectedSingleIso}.png 2x`}\r\n src={`https://flagcdn.com/w20/${selectedSingleIso}.png`}\r\n alt={`${inputValue || 'Selected'} flag`}\r\n />\r\n )}\r\n {(showClear || !disabled) && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n right: 8,\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n zIndex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 2,\r\n }}\r\n >\r\n {showClear && (\r\n <button\r\n type=\"button\"\r\n onClick={handleClear}\r\n onMouseDown={preventDefault}\r\n disabled={disabled}\r\n aria-label={multiple ? 'Clear all' : 'Clear'}\r\n style={iconButtonStyle}\r\n onMouseEnter={handleClearButtonMouseEnter}\r\n onMouseLeave={handleClearButtonMouseLeave}\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"currentColor\">\r\n <path d=\"M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41z\" />\r\n </svg>\r\n </button>\r\n )}\r\n {!disabled && (\r\n <button\r\n type=\"button\"\r\n onClick={handleArrowClick}\r\n onMouseDown={preventDefault}\r\n aria-label={isOpen ? 'Close dropdown' : 'Open dropdown'}\r\n style={{\r\n ...iconButtonStyle,\r\n color: selectorTokens.buttonColor,\r\n transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',\r\n transition: 'transform 0.2s',\r\n }}\r\n onMouseEnter={handleArrowButtonMouseEnter}\r\n onMouseLeave={handleArrowButtonMouseLeave}\r\n >\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M4 6L8 10L12 6\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n {(!!error || !!resolvedHelperText) && (\r\n <div\r\n style={{\r\n fontSize: selectorTokens.helperFontSize,\r\n marginTop: 4,\r\n color: error ? selectorTokens.helperErrorColor : selectorTokens.helperColor,\r\n }}\r\n role={error ? 'alert' : undefined}\r\n >\r\n {resolvedHelperText}\r\n </div>\r\n )}\r\n {isOpen &&\r\n listboxPosition &&\r\n createPortal(\r\n <ul\r\n ref={listboxRef}\r\n role=\"listbox\"\r\n aria-label={label ?? placeholder}\r\n aria-multiselectable={multiple}\r\n style={{\r\n ...getListboxStyle(selectorTokens),\r\n position: 'fixed',\r\n top: listboxPosition.top,\r\n left: listboxPosition.left,\r\n width: Math.max(listboxPosition.width, listboxMinWidth ?? 0),\r\n maxHeight: listboxPosition.maxHeight,\r\n right: 'unset',\r\n }}\r\n className=\"selector-listbox\"\r\n onScroll={onListboxScroll}\r\n >\r\n {noDataFound && (\r\n <li\r\n style={{\r\n padding: selectorTokens.optionPadding,\r\n textAlign: 'center',\r\n color: selectorTokens.optionColor,\r\n fontSize: selectorTokens.optionFontSize,\r\n }}\r\n >\r\n {noOptionsText}\r\n </li>\r\n )}\r\n {!noDataFound &&\r\n (groupedFilteredOptions ?\r\n (() => {\r\n let globalIndex = 0;\r\n return groupedFilteredOptions.map(({ group, options }, groupIdx) => {\r\n const children = options.map((option) => {\r\n const optionIndex = globalIndex++;\r\n const disabledOption = isOptionDisabled?.(option) ?? false;\r\n const optionLabel = getOptionLabel(option);\r\n const selected = isSelected(option);\r\n return (\r\n <OptionItem\r\n key={getOptionKey(option, optionIndex, getOptionLabel)}\r\n option={option}\r\n optionLabel={optionLabel}\r\n disabled={disabledOption}\r\n index={optionIndex}\r\n selected={selected}\r\n multiple={multiple}\r\n onSelect={handleSelect}\r\n renderOption={renderOption}\r\n selectorTokens={selectorTokens}\r\n showFlag={showFlag}\r\n />\r\n );\r\n });\r\n\r\n const params = {\r\n key: `selector-group-${groupIdx}-${group}`,\r\n group,\r\n children,\r\n };\r\n\r\n if (!group) {\r\n return <React.Fragment key={params.key}>{children}</React.Fragment>;\r\n }\r\n\r\n return (\r\n <li key={params.key} style={{ listStyle: 'none' }}>\r\n <div style={getGroupHeadingStyle(selectorTokens)}>{group}</div>\r\n {renderGroup ?\r\n renderGroup(params)\r\n : <ul role=\"group\" aria-label={group} style={defaultGroupListStyle}>\r\n {children}\r\n </ul>\r\n }\r\n </li>\r\n );\r\n });\r\n })()\r\n : filteredOptions.map((option, index) => {\r\n const disabledOption = isOptionDisabled?.(option) ?? false;\r\n const optionLabel = getOptionLabel(option);\r\n const selected = valueSet.has(option);\r\n return (\r\n <OptionItem\r\n key={getOptionKey(option, index, getOptionLabel)}\r\n option={option}\r\n optionLabel={optionLabel}\r\n disabled={disabledOption}\r\n index={index}\r\n selected={selected}\r\n multiple={multiple}\r\n onSelect={handleSelect}\r\n renderOption={renderOption}\r\n selectorTokens={selectorTokens}\r\n showFlag={showFlag}\r\n />\r\n );\r\n }))}\r\n {loading && !noDataFound && (\r\n <li\r\n style={{\r\n padding: selectorTokens.optionPadding,\r\n textAlign: 'center',\r\n color: selectorTokens.optionColor,\r\n fontSize: selectorTokens.optionFontSize,\r\n }}\r\n >\r\n {loadingText}\r\n </li>\r\n )}\r\n </ul>,\r\n document.body\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nconst Selector = memo(SelectorInner) as typeof SelectorInner;\r\nexport default Selector;\r\n","import React, { useRef, useCallback, useEffect, useContext } from \"react\";\r\nimport type { FileUploadProps } from \"./FileUpload.types\";\r\nimport { useTokens, ThemeContext } from \"../../ThemeProvider/ThemeContext\";\r\nimport { getFileUploadTokensFromResolved } from \"../../tokens\";\r\nimport { Button } from \"../Button/Button\";\r\n// import { Icon as FirebirdIcon } from \"firebird-icon-lib\";\r\nimport Skeleton from \"react-loading-skeleton\";\r\nimport \"react-loading-skeleton/dist/skeleton.css\";\r\n\r\nexport const FileUpload = ({\r\n size = \"md\",\r\n color = \"grey\",\r\n label = \"Upload File\",\r\n required = false,\r\n placeholder = \"No file chosen\",\r\n buttonText = \"Choose Files\",\r\n accept,\r\n multiple = false,\r\n disabled = false,\r\n fullWidth = true,\r\n value,\r\n defaultValue,\r\n onChange,\r\n id,\r\n name,\r\n error = false,\r\n helperText,\r\n inputRef: inputRefProp,\r\n skeletonLoading = false,\r\n}: FileUploadProps) => {\r\n const internalInputRef = useRef<HTMLInputElement>(null);\r\n const inputRef = inputRefProp ?? internalInputRef;\r\n\r\n const theme = useContext(ThemeContext);\r\n const resolvedTokens = useTokens();\r\n const tokens = getFileUploadTokensFromResolved(resolvedTokens, size);\r\n const buttonBackground =\r\n theme.brand === \"cpc\" && theme.mode === \"dark\"\r\n ? tokens.buttonBackground\r\n : \"#ffffff\";\r\n\r\n const [internalFiles, setInternalFiles] = React.useState<\r\n File | File[] | null\r\n >(defaultValue ?? null);\r\n\r\n const currentFiles = value !== undefined ? value : internalFiles;\r\n const displayText = React.useMemo(() => {\r\n if (!currentFiles) return placeholder;\r\n if (Array.isArray(currentFiles)) {\r\n if (currentFiles.length === 0) return placeholder;\r\n const count = currentFiles.length;\r\n return count === 1 ? currentFiles[0].name : `${count} files chosen`;\r\n }\r\n return currentFiles.name;\r\n }, [currentFiles, placeholder]);\r\n\r\n useEffect(() => {\r\n if (value !== undefined) {\r\n setInternalFiles(value);\r\n }\r\n }, [value]);\r\n\r\n const handleChange = useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = e.target.files;\r\n if (!files || files.length === 0) {\r\n const result = null;\r\n if (value === undefined) setInternalFiles(null);\r\n onChange?.(result);\r\n return;\r\n }\r\n const result = multiple ? Array.from(files) : files[0];\r\n if (value === undefined) setInternalFiles(result);\r\n onChange?.(result);\r\n e.target.value = \"\";\r\n },\r\n [multiple, onChange, value],\r\n );\r\n\r\n const handleButtonClick = useCallback(() => {\r\n if (disabled) return;\r\n inputRef.current?.click();\r\n }, [disabled, inputRef]);\r\n\r\n const inputId =\r\n id ??\r\n name ??\r\n (label ? String(label).replace(/\\s+/g, \"-\").toLowerCase() : undefined);\r\n\r\n const containerBackground =\r\n color === \"white\"\r\n ? tokens.containerBackgroundWhite\r\n : tokens.containerBackground;\r\n const containerStyle: React.CSSProperties = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: fullWidth ? \"100%\" : undefined,\r\n minHeight: tokens.containerHeight,\r\n padding: `${tokens.containerPaddingY}`,\r\n gap: tokens.containerGap,\r\n background: containerBackground || \"#FFFFFF\",\r\n border: error ? tokens.containerBorderError : tokens.containerBorder,\r\n borderRadius: tokens.containerBorderRadius,\r\n boxSizing: \"border-box\",\r\n opacity: disabled ? tokens.disabledOpacity : 1,\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n };\r\n\r\n const labelStyle: React.CSSProperties = {\r\n display: \"block\",\r\n marginBottom: tokens.labelMarginBottom,\r\n fontSize: tokens.labelFontSize,\r\n fontWeight: tokens.labelFontWeight,\r\n fontFamily: tokens.labelFontFamily,\r\n color: tokens.labelColor,\r\n };\r\n\r\n const placeholderStyle: React.CSSProperties = {\r\n flex: 1,\r\n minWidth: 0,\r\n fontSize: tokens.placeholderFontSize,\r\n fontFamily: tokens.placeholderFontFamily,\r\n color: tokens.placeholderColor,\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n whiteSpace: \"nowrap\",\r\n };\r\n\r\n const helperStyle: React.CSSProperties = {\r\n marginTop: 8,\r\n fontSize: tokens.placeholderFontSize,\r\n fontFamily: tokens.placeholderFontFamily,\r\n color: error ? tokens.labelRequiredColor : tokens.placeholderColor,\r\n display: \"flex\",\r\n // alignItems: \"center\",\r\n gap: 6,\r\n };\r\n\r\n const containerHeight = parseInt(tokens.containerHeight, 10) || 48;\r\n\r\n if (skeletonLoading) {\r\n return (\r\n <div style={{ width: fullWidth ? \"100%\" : undefined }}>\r\n {label != null && label !== \"\" && (\r\n <label style={labelStyle}>\r\n {required && (\r\n <span\r\n style={{ color: tokens.labelRequiredColor, marginRight: 4 }}\r\n >\r\n *\r\n </span>\r\n )}\r\n {label}\r\n </label>\r\n )}\r\n <Skeleton height={containerHeight} borderRadius={8} />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div style={{ width: fullWidth ? \"100%\" : undefined }}>\r\n {label != null && label !== \"\" && (\r\n <label htmlFor={inputId} style={labelStyle}>\r\n {required && (\r\n <span style={{ color: tokens.labelRequiredColor, marginRight: 4 }}>\r\n *\r\n </span>\r\n )}\r\n {label}\r\n </label>\r\n )}\r\n <div style={containerStyle} onClick={handleButtonClick}>\r\n <Button\r\n variant=\"grey\"\r\n size=\"sm\"\r\n disabled={disabled}\r\n style={{\r\n flexShrink: 0,\r\n backgroundColor: buttonBackground,\r\n border: tokens.buttonBorder?.startsWith(\"1px\")\r\n ? tokens.buttonBorder\r\n : `1px solid ${tokens.buttonBorder}`,\r\n color: tokens.buttonColor,\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n handleButtonClick();\r\n }}\r\n type=\"button\"\r\n >\r\n {buttonText}\r\n </Button>\r\n <span style={placeholderStyle}>{displayText}</span>\r\n </div>\r\n <input\r\n ref={inputRef as React.RefObject<HTMLInputElement>}\r\n id={inputId}\r\n name={name}\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n onChange={handleChange}\r\n disabled={disabled}\r\n style={{ display: \"none\" }}\r\n aria-hidden\r\n />\r\n {helperText != null && helperText !== \"\" && (\r\n <div style={helperStyle} role={error ? \"alert\" : undefined}>\r\n {/* <FirebirdIcon name=\"info_circle\" size={16} /> */}\r\n <span>{helperText}</span>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { useRef, useCallback, useState } from \"react\";\r\nimport type { UploadDropzoneProps } from \"./UploadDropzone.types\";\r\nimport { useTokens } from \"../../ThemeProvider/ThemeContext\";\r\nimport { getUploadDropzoneTokensFromResolved } from \"../../tokens\";\r\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\r\n\r\nexport const UploadDropzone = ({\r\n title = \"Visa\",\r\n instructionText = \"Drag & drop or click to upload\",\r\n hintText = \"JPG, PNG or PDF\",\r\n buttonText = \"Required\",\r\n accept,\r\n multiple = false,\r\n disabled = false,\r\n fullWidth = true,\r\n value,\r\n onChange,\r\n id,\r\n name,\r\n inputRef: inputRefProp,\r\n}: UploadDropzoneProps) => {\r\n const internalInputRef = useRef<HTMLInputElement>(null);\r\n const inputRef = inputRefProp ?? internalInputRef;\r\n\r\n const [isDragOver, setIsDragOver] = useState(false);\r\n\r\n const resolvedTokens = useTokens();\r\n const tokens = getUploadDropzoneTokensFromResolved(resolvedTokens);\r\n const currentFiles = value ?? null;\r\n const hasUploadedFile = Array.isArray(currentFiles)\r\n ? currentFiles.length > 0\r\n : Boolean(currentFiles);\r\n const uploadedBorder = tokens.zoneBorderActive.includes(\"dashed\")\r\n ? tokens.zoneBorderActive.replace(\"dashed\", \"solid\")\r\n : tokens.zoneBorderActive;\r\n\r\n const handleChange = useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = e.target.files;\r\n if (!files || files.length === 0) {\r\n onChange?.(null);\r\n return;\r\n }\r\n const result = multiple ? Array.from(files) : files[0];\r\n onChange?.(result);\r\n e.target.value = \"\";\r\n },\r\n [multiple, onChange],\r\n );\r\n\r\n const handleClick = useCallback(() => {\r\n if (disabled) return;\r\n inputRef.current?.click();\r\n }, [disabled, inputRef]);\r\n\r\n const handleDrop = useCallback(\r\n (e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsDragOver(false);\r\n if (disabled) return;\r\n const files = Array.from(e.dataTransfer.files || []);\r\n if (files.length === 0) return;\r\n const result = multiple ? files : files[0];\r\n onChange?.(result);\r\n },\r\n [disabled, multiple, onChange],\r\n );\r\n\r\n const handleDragOver = useCallback((e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsDragOver(true);\r\n }, []);\r\n\r\n const handleDragLeave = useCallback((e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsDragOver(false);\r\n }, []);\r\n\r\n const inputId = id ?? name ?? \"upload-dropzone\";\r\n\r\n const zoneStyle: React.CSSProperties = {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n position: \"relative\",\r\n width: fullWidth ? \"100%\" : undefined,\r\n minHeight: \"230px\",\r\n padding: `${tokens.zonePaddingY} ${tokens.zonePaddingX}`,\r\n gap: tokens.zoneGap,\r\n background:\r\n isDragOver || hasUploadedFile\r\n ? tokens.zoneBackgroundActive\r\n : tokens.zoneBackground,\r\n border:\r\n hasUploadedFile && !isDragOver\r\n ? uploadedBorder\r\n : isDragOver\r\n ? tokens.zoneBorderActive\r\n : tokens.zoneBorder,\r\n borderRadius: tokens.zoneBorderRadius,\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n opacity: disabled ? tokens.disabledOpacity : 1,\r\n boxSizing: \"border-box\",\r\n transition: \"all 0.2s ease\",\r\n };\r\n\r\n const iconStyle: React.CSSProperties = {\r\n width: tokens.iconSize,\r\n height: tokens.iconSize,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n color: tokens.iconColor,\r\n marginBottom: tokens.iconMarginBottom,\r\n };\r\n\r\n const titleStyle: React.CSSProperties = {\r\n fontSize: tokens.titleFontSize,\r\n fontWeight: tokens.titleFontWeight,\r\n fontFamily: tokens.titleFontFamily,\r\n lineHeight: tokens.titleLineHeight,\r\n color: tokens.titleColor,\r\n marginBottom: tokens.titleMarginBottom,\r\n textAlign: \"center\",\r\n };\r\n\r\n const instructionStyle: React.CSSProperties = {\r\n fontSize: tokens.instructionFontSize,\r\n fontWeight: tokens.instructionFontWeight,\r\n fontFamily: tokens.instructionFontFamily,\r\n lineHeight: tokens.instructionLineHeight,\r\n color: tokens.instructionColor,\r\n marginBottom: tokens.instructionMarginBottom,\r\n textAlign: \"center\",\r\n };\r\n\r\n const hintStyle: React.CSSProperties = {\r\n fontSize: tokens.hintFontSize,\r\n fontWeight: tokens.hintFontWeight,\r\n fontFamily: tokens.hintFontFamily,\r\n lineHeight: tokens.hintLineHeight,\r\n color: tokens.hintColor,\r\n marginBottom: tokens.hintMarginBottom,\r\n textAlign: \"center\",\r\n };\r\n\r\n const requiredBadgeStyle: React.CSSProperties = {\r\n fontSize: tokens.buttonFontSize,\r\n fontWeight: tokens.buttonFontWeight,\r\n fontFamily: tokens.buttonFontFamily,\r\n lineHeight: tokens.instructionLineHeight,\r\n color: tokens.buttonColor,\r\n backgroundColor: tokens.buttonBackground,\r\n border: tokens.buttonBorder,\r\n borderRadius: tokens.buttonBorderRadius,\r\n padding: `${tokens.buttonPaddingY} ${tokens.buttonPaddingX}`,\r\n marginTop: tokens.selectedFileMarginTop,\r\n };\r\n\r\n const doneBadgeStyle: React.CSSProperties = {\r\n position: \"absolute\",\r\n top: \"12px\",\r\n right: \"12px\",\r\n backgroundColor: tokens.buttonColor,\r\n color: tokens.buttonBackground,\r\n borderRadius: \"999px\",\r\n padding: \"6px 12px\",\r\n fontSize: tokens.buttonFontSize,\r\n fontWeight: tokens.buttonFontWeight,\r\n lineHeight: tokens.instructionLineHeight,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"4px\",\r\n };\r\n\r\n return (\r\n <div style={{ width: fullWidth ? \"100%\" : undefined }}>\r\n <div\r\n role=\"button\"\r\n tabIndex={disabled ? -1 : 0}\r\n onClick={handleClick}\r\n onDrop={handleDrop}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n handleClick();\r\n }\r\n }}\r\n style={zoneStyle}\r\n aria-label={instructionText}\r\n aria-disabled={disabled}\r\n >\r\n {hasUploadedFile && <div style={doneBadgeStyle}>✓ Done</div>}\r\n <div style={iconStyle}>\r\n <CloudUploadIcon sx={{ fontSize: tokens.iconSize, color: tokens.iconColor }} />\r\n </div>\r\n {title && <div style={titleStyle}>{title}</div>}\r\n <div style={instructionStyle}>{instructionText}</div>\r\n <div style={hintStyle}>{hintText}</div>\r\n <div style={requiredBadgeStyle}>{buttonText}</div>\r\n </div>\r\n <input\r\n ref={inputRef as React.RefObject<HTMLInputElement>}\r\n id={inputId}\r\n name={name}\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n onChange={handleChange}\r\n disabled={disabled}\r\n style={{ display: \"none\" }}\r\n aria-hidden\r\n />\r\n </div>\r\n );\r\n};\r\n","import type { CountryCodeOption } from \"./PhoneField.types\";\r\n\r\n/** Default country code options for PhoneField (API format with msisdnLength for input validation) */\r\nexport const DEFAULT_COUNTRY_OPTIONS: CountryCodeOption[] = [\r\n {\r\n id: 2,\r\n iso: \"AE\",\r\n name: \"UAE\",\r\n nicename: \"United Arab Emirates\",\r\n iso3: \"ARE\",\r\n numcode: 784,\r\n phonecode: 971,\r\n currency: \"AED\",\r\n msisdnLength: 9,\r\n },\r\n {\r\n id: 1,\r\n iso: \"AF\",\r\n name: \"AFGHANISTAN\",\r\n nicename: \"Afghanistan\",\r\n iso3: \"AFG\",\r\n numcode: 4,\r\n phonecode: 93,\r\n currency: \"AFN\",\r\n msisdnLength: 9,\r\n },\r\n {\r\n id: 3,\r\n iso: \"IN\",\r\n name: \"INDIA\",\r\n nicename: \"India\",\r\n iso3: \"IND\",\r\n numcode: 356,\r\n phonecode: 91,\r\n currency: \"INR\",\r\n msisdnLength: 10,\r\n },\r\n {\r\n id: 4,\r\n iso: \"US\",\r\n name: \"US\",\r\n nicename: \"United States\",\r\n iso3: \"USA\",\r\n numcode: 840,\r\n phonecode: 1,\r\n currency: \"USD\",\r\n msisdnLength: 10,\r\n },\r\n {\r\n id: 5,\r\n iso: \"GB\",\r\n name: \"UK\",\r\n nicename: \"United Kingdom\",\r\n iso3: \"GBR\",\r\n numcode: 826,\r\n phonecode: 44,\r\n currency: \"GBP\",\r\n msisdnLength: 10,\r\n },\r\n {\r\n id: 6,\r\n iso: \"SA\",\r\n name: \"SAUDI ARABIA\",\r\n nicename: \"Saudi Arabia\",\r\n iso3: \"SAU\",\r\n numcode: 682,\r\n phonecode: 966,\r\n currency: \"SAR\",\r\n msisdnLength: 9,\r\n },\r\n {\r\n id: 7,\r\n iso: \"BH\",\r\n name: \"BAHRAIN\",\r\n nicename: \"Bahrain\",\r\n iso3: \"BHR\",\r\n numcode: 48,\r\n phonecode: 973,\r\n currency: \"BHD\",\r\n msisdnLength: 8,\r\n },\r\n {\r\n id: 8,\r\n iso: \"QA\",\r\n name: \"QATAR\",\r\n nicename: \"Qatar\",\r\n iso3: \"QAT\",\r\n numcode: 634,\r\n phonecode: 974,\r\n currency: \"QAR\",\r\n msisdnLength: 8,\r\n },\r\n {\r\n id: 9,\r\n iso: \"OM\",\r\n name: \"OMAN\",\r\n nicename: \"Oman\",\r\n iso3: \"OMN\",\r\n numcode: 512,\r\n phonecode: 968,\r\n currency: \"OMR\",\r\n msisdnLength: 8,\r\n },\r\n {\r\n id: 10,\r\n iso: \"KW\",\r\n name: \"KUWAIT\",\r\n nicename: \"Kuwait\",\r\n iso3: \"KWT\",\r\n numcode: 414,\r\n phonecode: 965,\r\n currency: \"KWD\",\r\n msisdnLength: 8,\r\n },\r\n {\r\n id: 11,\r\n iso: \"EG\",\r\n name: \"EGYPT\",\r\n nicename: \"Egypt\",\r\n iso3: \"EGY\",\r\n numcode: 818,\r\n phonecode: 20,\r\n currency: \"EGP\",\r\n msisdnLength: 10,\r\n },\r\n {\r\n id: 12,\r\n iso: \"PK\",\r\n name: \"PAKISTAN\",\r\n nicename: \"Pakistan\",\r\n iso3: \"PAK\",\r\n numcode: 586,\r\n phonecode: 92,\r\n currency: \"PKR\",\r\n msisdnLength: 10,\r\n },\r\n {\r\n id: 13,\r\n iso: \"AU\",\r\n name: \"AUSTRALIA\",\r\n nicename: \"Australia\",\r\n iso3: \"AUS\",\r\n numcode: 36,\r\n phonecode: 61,\r\n currency: \"AUD\",\r\n msisdnLength: 9,\r\n },\r\n {\r\n id: 14,\r\n iso: \"DE\",\r\n name: \"GERMANY\",\r\n nicename: \"Germany\",\r\n iso3: \"DEU\",\r\n numcode: 276,\r\n phonecode: 49,\r\n currency: \"EUR\",\r\n msisdnLength: 11,\r\n },\r\n {\r\n id: 15,\r\n iso: \"FR\",\r\n name: \"FRANCE\",\r\n nicename: \"France\",\r\n iso3: \"FRA\",\r\n numcode: 250,\r\n phonecode: 33,\r\n currency: \"EUR\",\r\n msisdnLength: 9,\r\n },\r\n {\r\n id: 16,\r\n iso: \"JP\",\r\n name: \"JAPAN\",\r\n nicename: \"Japan\",\r\n iso3: \"JPN\",\r\n numcode: 392,\r\n phonecode: 81,\r\n currency: \"JPY\",\r\n msisdnLength: 10,\r\n },\r\n {\r\n id: 17,\r\n iso: \"CN\",\r\n name: \"CHINA\",\r\n nicename: \"China\",\r\n iso3: \"CHN\",\r\n numcode: 156,\r\n phonecode: 86,\r\n currency: \"CNY\",\r\n msisdnLength: 11,\r\n },\r\n {\r\n id: 18,\r\n iso: \"RU\",\r\n name: \"RUSSIA\",\r\n nicename: \"Russia\",\r\n iso3: \"RUS\",\r\n numcode: 643,\r\n phonecode: 7,\r\n currency: \"RUB\",\r\n msisdnLength: 10,\r\n },\r\n {\r\n id: 19,\r\n iso: \"ZA\",\r\n name: \"SOUTH AFRICA\",\r\n nicename: \"South Africa\",\r\n iso3: \"ZAF\",\r\n numcode: 710,\r\n phonecode: 27,\r\n currency: \"ZAR\",\r\n msisdnLength: 9,\r\n },\r\n {\r\n id: 20,\r\n iso: \"BR\",\r\n name: \"BRAZIL\",\r\n nicename: \"Brazil\",\r\n iso3: \"BRA\",\r\n numcode: 76,\r\n phonecode: 55,\r\n currency: \"BRL\",\r\n msisdnLength: 11,\r\n },\r\n {\r\n id: 21,\r\n iso: \"NG\",\r\n name: \"NIGERIA\",\r\n nicename: \"Nigeria\",\r\n iso3: \"NGA\",\r\n numcode: 566,\r\n phonecode: 234,\r\n currency: \"NGN\",\r\n msisdnLength: 10,\r\n },\r\n];\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport type { PhoneFieldProps, CountryCodeOption } from './PhoneField.types';\r\nimport Selector from '../Selector/Selector';\r\nimport { TextField } from '../TextField/TextField';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport { getPhoneFieldTokensFromResolved } from '../../tokens';\r\nimport { DEFAULT_COUNTRY_OPTIONS } from './countryCodes';\r\n\r\nfunction getDialCode(option: CountryCodeOption): number | string | null {\r\n const phonecode = option.phonecode;\r\n if (phonecode != null) return phonecode;\r\n const phoneCode = (option as CountryCodeOption & { phoneCode?: unknown }).phoneCode;\r\n if (phoneCode != null && phoneCode !== '') return phoneCode as number | string;\r\n return null;\r\n}\r\n\r\nfunction getCountryCodeDisplay(option: CountryCodeOption): string {\r\n const code = getDialCode(option);\r\n return code != null ? `+${code}` : '';\r\n}\r\n\r\nfunction getCountryOptionLabel(option: CountryCodeOption): string {\r\n if (typeof option === 'string') return option;\r\n const codeLabel = getCountryCodeDisplay(option);\r\n const countryLabel = option.nicename ?? option.name ?? (option as { label?: string }).label ?? '';\r\n return codeLabel || countryLabel;\r\n}\r\n\r\nexport const PhoneField = ({\r\n label = 'Phone',\r\n required = false,\r\n countryOptions = DEFAULT_COUNTRY_OPTIONS,\r\n countryValue,\r\n onCountryChange,\r\n value,\r\n onChange,\r\n placeholder = '05x-xxx-xxxx',\r\n disabled = false,\r\n countryDisabled = false,\r\n error = false,\r\n helperText,\r\n size = 'md',\r\n color = 'grey',\r\n id,\r\n name,\r\n fullWidth = true,\r\n clearable = false,\r\n}: PhoneFieldProps) => {\r\n const [internalCountry, setInternalCountry] = useState<CountryCodeOption | null>(\r\n countryValue !== undefined ? countryValue : null\r\n );\r\n const [internalPhone, setInternalPhone] = useState(value ?? '');\r\n const combinedFieldRef = useRef<HTMLDivElement>(null);\r\n const [listboxMinWidth, setListboxMinWidth] = useState(0);\r\n const resolvedTokens = useTokens();\r\n const tokens = getPhoneFieldTokensFromResolved(resolvedTokens);\r\n\r\n useEffect(() => {\r\n if (value !== undefined) {\r\n setInternalPhone(value);\r\n }\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (countryValue !== undefined) {\r\n setInternalCountry(countryValue);\r\n }\r\n }, [countryValue]);\r\n\r\n useEffect(() => {\r\n const updateListboxWidth = () => {\r\n const width = combinedFieldRef.current?.getBoundingClientRect().width ?? 0;\r\n setListboxMinWidth(width > 0 ? Math.ceil(width) : 0);\r\n };\r\n\r\n updateListboxWidth();\r\n\r\n if (typeof ResizeObserver !== 'undefined' && combinedFieldRef.current) {\r\n const observer = new ResizeObserver(() => {\r\n updateListboxWidth();\r\n });\r\n observer.observe(combinedFieldRef.current);\r\n return () => observer.disconnect();\r\n }\r\n\r\n window.addEventListener('resize', updateListboxWidth);\r\n return () => window.removeEventListener('resize', updateListboxWidth);\r\n }, []);\r\n\r\n const currentCountry = countryValue !== undefined ? countryValue : internalCountry;\r\n\r\n // Truncate phone when country changes and current value exceeds new msisdnLength\r\n useEffect(() => {\r\n if (!currentCountry || typeof currentCountry !== 'object') return;\r\n const maxLen = currentCountry.msisdnLength ?? 15;\r\n const current = value !== undefined ? value : internalPhone;\r\n const digitsOnly = String(current).replace(/\\D/g, '');\r\n if (digitsOnly.length > maxLen) {\r\n const truncated = digitsOnly.slice(0, maxLen);\r\n if (value === undefined) {\r\n setInternalPhone(truncated);\r\n }\r\n onChange?.({\r\n target: { value: truncated },\r\n } as React.ChangeEvent<HTMLInputElement>);\r\n }\r\n }, [currentCountry, value, internalPhone, onChange]);\r\n const currentPhone = value !== undefined ? value : internalPhone;\r\n const msisdnLength =\r\n currentCountry && typeof currentCountry === 'object' ? (currentCountry.msisdnLength ?? 15) : 15;\r\n\r\n const errorMessage = typeof error === 'string' ? error : undefined;\r\n const hasError = !!error;\r\n const displayHelperText = errorMessage ?? helperText;\r\n\r\n const handlePhoneChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const raw = e.target.value;\r\n const digitsOnly = raw.replace(/\\D/g, '');\r\n const truncated = digitsOnly.slice(0, msisdnLength);\r\n const newValue = truncated;\r\n if (value === undefined) setInternalPhone(newValue);\r\n e.target.value = newValue;\r\n onChange?.(e as React.ChangeEvent<HTMLInputElement>);\r\n };\r\n\r\n const labelStyle: React.CSSProperties = {\r\n display: 'block',\r\n marginBottom: parseInt(tokens.labelMarginBottom, 10),\r\n fontSize: tokens.labelFontSize,\r\n fontWeight: tokens.labelFontWeight,\r\n color: tokens.labelColor,\r\n fontFamily: tokens.fontFamily,\r\n opacity: disabled ? parseFloat(tokens.disabledOpacity) : 1,\r\n };\r\n\r\n const borderRadius =\r\n size === 'sm' ? tokens.borderRadiusSm\r\n : size === 'lg' ? tokens.borderRadiusLg\r\n : tokens.borderRadiusMd;\r\n const selectorWidth =\r\n size === 'sm' ? tokens.selectorWidthSm\r\n : size === 'lg' ? tokens.selectorWidthLg\r\n : tokens.selectorWidthMd;\r\n\r\n const containerStyle: React.CSSProperties = {\r\n display: 'flex',\r\n width: fullWidth ? '100%' : undefined,\r\n borderRadius,\r\n border: hasError ? tokens.outlineError : tokens.outlineDefault,\r\n boxSizing: 'border-box',\r\n };\r\n\r\n const selectorBackground =\r\n color === 'white' ? tokens.selectorBackgroundWhite : tokens.selectorBackgroundWhite;\r\n const selectorWrapperStyle: React.CSSProperties = {\r\n flex: '0 0 auto',\r\n width: parseInt(selectorWidth, 10),\r\n minWidth: parseInt(selectorWidth, 10),\r\n backgroundColor: selectorBackground,\r\n borderRight: tokens.selectorBorderRight,\r\n borderTopLeftRadius: borderRadius,\r\n borderBottomLeftRadius: borderRadius,\r\n };\r\n\r\n const textFieldWrapperStyle: React.CSSProperties = {\r\n flex: 1,\r\n minWidth: 0,\r\n borderTopRightRadius: borderRadius,\r\n borderBottomRightRadius: borderRadius,\r\n };\r\n\r\n const phoneInputId =\r\n id ??\r\n name ??\r\n (label ? `phone-${String(label).replace(/\\s+/g, '-').toLowerCase()}` : 'phone-field');\r\n\r\n return (\r\n <div className=\"phone-field-root\" style={{ width: fullWidth ? '100%' : undefined }}>\r\n <style>\r\n {`.phone-field-root .phone-field-selector input {\r\n border: 1px solid #c7ced6 !important;\r\n border-radius: ${borderRadius} 0 0 ${borderRadius} !important;\r\n box-shadow: none !important;\r\n background-color: ${selectorBackground} !important;\r\n }\r\n .phone-field-root .phone-field-textfield input {\r\n border: 1px solid #c7ced6 !important;\r\n border-radius: 0 ${borderRadius} ${borderRadius} 0 !important;\r\n box-shadow: none !important;\r\n }`}\r\n </style>\r\n {label != null && label !== '' && (\r\n <label htmlFor={phoneInputId} style={labelStyle}>\r\n {label}\r\n {required && <span style={{ color: tokens.labelRequiredColor, marginRight: 4 }}>*</span>}\r\n </label>\r\n )}\r\n <div ref={combinedFieldRef} style={containerStyle}>\r\n <div className=\"phone-field-selector\" style={selectorWrapperStyle}>\r\n <Selector<CountryCodeOption>\r\n options={countryOptions}\r\n value={currentCountry}\r\n onChange={(v) => {\r\n const nextCountry = (v as CountryCodeOption | null) ?? null;\r\n if (countryValue === undefined) {\r\n setInternalCountry(nextCountry);\r\n }\r\n onCountryChange?.(nextCountry);\r\n }}\r\n label=\"\"\r\n placeholder=\"Code\"\r\n required={false}\r\n disabled={disabled || countryDisabled}\r\n size={size}\r\n color={color}\r\n showFlag={true}\r\n autoComplete=\"new-password\"\r\n getOptionLabel={getCountryOptionLabel}\r\n renderOption={(opt) => {\r\n if (typeof opt === 'string') return opt;\r\n const code = getCountryCodeDisplay(opt);\r\n const displayName = opt.nicename ?? opt.name ?? '';\r\n return (\r\n <span>\r\n <span>{code}</span>\r\n {displayName && (\r\n <span style={{ marginLeft: 6, opacity: 0.7 }}>{displayName}</span>\r\n )}\r\n </span>\r\n );\r\n }}\r\n filterOptions={(options, state) => {\r\n const query = state.inputValue.toLowerCase();\r\n return options.filter((opt) => {\r\n const code = getCountryCodeDisplay(opt).toLowerCase();\r\n const name = (opt.name || '').toLowerCase();\r\n const nicename = (opt.nicename || '').toLowerCase();\r\n return code.includes(query) || name.includes(query) || nicename.includes(query);\r\n });\r\n }}\r\n clearable={clearable}\r\n listboxMinWidth={listboxMinWidth}\r\n id={`${phoneInputId}-country`}\r\n />\r\n </div>\r\n <div className=\"phone-field-textfield\" style={textFieldWrapperStyle}>\r\n <TextField\r\n id={phoneInputId}\r\n name={name}\r\n label=\"\"\r\n value={currentPhone}\r\n onChange={handlePhoneChange}\r\n placeholder={placeholder}\r\n disabled={disabled || !currentCountry || Object.keys(currentCountry).length === 0}\r\n error={hasError}\r\n size={size}\r\n color={color}\r\n fullWidth\r\n type=\"tel\"\r\n inputProps={{\r\n inputMode: 'numeric',\r\n pattern: '[0-9]*',\r\n maxLength: msisdnLength,\r\n }}\r\n />\r\n </div>\r\n </div>\r\n {displayHelperText != null && displayHelperText !== '' && (\r\n <span\r\n style={{\r\n display: 'block',\r\n marginTop: 4,\r\n fontSize: 12,\r\n color: hasError ? tokens.labelRequiredColor : tokens.labelColor,\r\n fontFamily: tokens.fontFamily,\r\n }}\r\n role={hasError ? 'alert' : undefined}\r\n >\r\n {displayHelperText}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import type { StatusBadgeProps } from './StatusBadge.types';\r\n\r\nconst SIZE_STYLES = {\r\n sm: { padding: '2px 8px', fontSize: '11px', borderRadius: '50px', dotSize: 5 },\r\n md: { padding: '4px 10px', fontSize: '12px', borderRadius: '50px', dotSize: 6 },\r\n lg: { padding: '6px 14px', fontSize: '14px', borderRadius: '50px', dotSize: 7 },\r\n};\r\n\r\nfunction hexToRgba(hex: string, alpha: number): string {\r\n const clean = hex.replace('#', '');\r\n const full =\r\n clean.length === 3 ?\r\n clean\r\n .split('')\r\n .map((c) => c + c)\r\n .join('')\r\n : clean;\r\n const r = parseInt(full.slice(0, 2), 16);\r\n const g = parseInt(full.slice(2, 4), 16);\r\n const b = parseInt(full.slice(4, 6), 16);\r\n if (isNaN(r) || isNaN(g) || isNaN(b)) return `rgba(0,0,0,${alpha})`;\r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n}\r\n\r\nexport const StatusBadge = ({\r\n children,\r\n color = '#9CA3AF',\r\n size = 'md',\r\n variant = 'outline',\r\n showDot = false,\r\n style,\r\n className,\r\n}: StatusBadgeProps) => {\r\n const sizeStyle = SIZE_STYLES[size];\r\n const backgroundColor =\r\n variant === 'filled' && color.startsWith('#') ? hexToRgba(color, 0.12) : 'transparent';\r\n\r\n return (\r\n <span\r\n className={className}\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: showDot ? 5 : 0,\r\n boxSizing: 'border-box',\r\n padding: sizeStyle.padding,\r\n fontSize: sizeStyle.fontSize,\r\n fontWeight: 500,\r\n lineHeight: 1.5,\r\n color,\r\n backgroundColor,\r\n border: `1px solid ${color}`,\r\n borderRadius: sizeStyle.borderRadius,\r\n whiteSpace: 'nowrap',\r\n ...style,\r\n }}\r\n >\r\n {showDot && (\r\n <span\r\n aria-hidden\r\n style={{\r\n display: 'inline-block',\r\n width: sizeStyle.dotSize,\r\n height: sizeStyle.dotSize,\r\n borderRadius: '50%',\r\n backgroundColor: color,\r\n flexShrink: 0,\r\n }}\r\n />\r\n )}\r\n {children}\r\n </span>\r\n );\r\n};\r\n","import React, { useEffect, useRef, useCallback, useState } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { CloseButton } from '../CloseButton/CloseButton';\r\nimport { Button } from '../Button/Button';\r\nimport type { FilterPopoverProps } from './FilterPopover.types';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport { getFilterPopoverTokensFromResolved } from '../../tokens';\r\n\r\nconst VIEWPORT_EDGE_MARGIN_PX = 16;\r\nconst POPOVER_GAP_PX = 8;\r\nconst FILTER_POPOVER_Z_INDEX = 1300;\r\n\r\ntype PopoverPosition = {\r\n top: number;\r\n left: number;\r\n width: number;\r\n maxHeight: number;\r\n};\r\n\r\nfunction parseCssSize(value: string | number | undefined, viewportSize: number): number {\r\n if (typeof value === 'number' && Number.isFinite(value)) return value;\r\n if (value == null) return 0;\r\n\r\n const normalized = String(value).trim();\r\n if (!normalized) return 0;\r\n\r\n if (normalized.endsWith('px')) {\r\n const parsed = parseFloat(normalized);\r\n return Number.isFinite(parsed) ? parsed : 0;\r\n }\r\n\r\n if (normalized.endsWith('vh')) {\r\n const parsed = parseFloat(normalized);\r\n return Number.isFinite(parsed) ? (parsed / 100) * viewportSize : 0;\r\n }\r\n\r\n if (/^\\d+$/.test(normalized)) {\r\n return parseInt(normalized, 10);\r\n }\r\n\r\n const calcMatch = normalized.match(/calc\\(\\s*100vh\\s*-\\s*(\\d+)px\\s*\\)/i);\r\n if (calcMatch) {\r\n const offset = parseInt(calcMatch[1], 10);\r\n return Number.isFinite(offset) ? Math.max(0, viewportSize - offset) : viewportSize;\r\n }\r\n\r\n const parsed = parseFloat(normalized);\r\n return Number.isFinite(parsed) ? parsed : 0;\r\n}\r\n\r\nfunction getPopoverMinWidth(\r\n minWidth: FilterPopoverProps['minWidth'],\r\n tokenMinWidth: string | number | undefined,\r\n viewportWidth: number\r\n): number {\r\n const resolved =\r\n minWidth ??\r\n (typeof tokenMinWidth === 'string' && /^\\d+$/.test(tokenMinWidth) ?\r\n `${tokenMinWidth}px`\r\n : tokenMinWidth);\r\n\r\n const parsed = parseCssSize(resolved, viewportWidth);\r\n return parsed > 0 ? parsed : 320;\r\n}\r\n\r\nexport function FilterPopover({\r\n open,\r\n onClose,\r\n anchorRef,\r\n children,\r\n onReset,\r\n onApply,\r\n applyLabel = 'Apply',\r\n resetLabel = 'Reset',\r\n minWidth,\r\n minHeight,\r\n title = 'Filter',\r\n}: FilterPopoverProps) {\r\n const popoverRef = useRef<HTMLDivElement>(null);\r\n const contentRef = useRef<HTMLDivElement>(null);\r\n const [popoverPosition, setPopoverPosition] = useState<PopoverPosition | null>(null);\r\n const resolvedTokens = useTokens();\r\n const tokens = getFilterPopoverTokensFromResolved(resolvedTokens);\r\n\r\n const resolvedMinHeight =\r\n minHeight ??\r\n (typeof tokens.minHeight === 'string' && /^\\d+$/.test(tokens.minHeight) ?\r\n `${tokens.minHeight}px`\r\n : tokens.minHeight);\r\n\r\n const updatePosition = useCallback(() => {\r\n const anchor = anchorRef.current;\r\n const popover = popoverRef.current;\r\n if (!anchor) return;\r\n\r\n const rect = anchor.getBoundingClientRect();\r\n const viewportWidth = Math.max(0, window.innerWidth || document.documentElement.clientWidth);\r\n const viewportHeight = Math.max(0, window.innerHeight || document.documentElement.clientHeight);\r\n const margin = VIEWPORT_EDGE_MARGIN_PX;\r\n const gap = POPOVER_GAP_PX;\r\n\r\n const minWidthPx = getPopoverMinWidth(minWidth, tokens.minWidth, viewportWidth);\r\n const maxAllowedWidth = Math.max(0, viewportWidth - margin * 2);\r\n const width = Math.min(Math.max(minWidthPx, rect.width), maxAllowedWidth);\r\n\r\n let left = rect.right - width;\r\n left = Math.max(margin, Math.min(left, viewportWidth - margin - width));\r\n\r\n const maxHeightTokenPx = parseCssSize(tokens.maxHeight, viewportHeight) || viewportHeight * 0.6;\r\n const measuredHeight = popover?.offsetHeight ?? 0;\r\n const spaceBelow = Math.max(0, viewportHeight - rect.bottom - gap - margin);\r\n const spaceAbove = Math.max(0, rect.top - gap - margin);\r\n\r\n let top = rect.bottom + gap;\r\n let maxHeight = Math.min(maxHeightTokenPx, spaceBelow);\r\n\r\n if (measuredHeight > 0 && measuredHeight > spaceBelow && spaceAbove > spaceBelow) {\r\n maxHeight = Math.min(maxHeightTokenPx, spaceAbove);\r\n top = Math.max(margin, rect.top - gap - Math.min(measuredHeight, maxHeight));\r\n }\r\n\r\n setPopoverPosition({ top, left, width, maxHeight });\r\n }, [anchorRef, minWidth, tokens.maxHeight, tokens.minWidth]);\r\n\r\n const handleClickOutside = useCallback(\r\n (e: MouseEvent) => {\r\n const target = e.target as Node;\r\n const element = target as Element;\r\n\r\n const isInsideAnchor = anchorRef.current?.contains(target);\r\n const isInsidePopover = popoverRef.current?.contains(target);\r\n\r\n const isInsideSelectorListbox =\r\n element?.closest?.('.selector-listbox') || element?.closest?.('.select-scroll-listbox');\r\n const isInsideSelectorOption = element?.closest?.('[role=\"option\"]');\r\n const isInsideSelectorContainer = element?.closest?.('[role=\"combobox\"]');\r\n\r\n const isInsideDatePicker =\r\n element?.closest?.('.react-datepicker-popper') ||\r\n element?.closest?.('.react-datepicker') ||\r\n element?.closest?.('#react-datepicker-portal');\r\n\r\n if (\r\n !isInsideAnchor &&\r\n !isInsidePopover &&\r\n !isInsideSelectorListbox &&\r\n !isInsideSelectorOption &&\r\n !isInsideSelectorContainer &&\r\n !isInsideDatePicker\r\n ) {\r\n onClose();\r\n }\r\n },\r\n [anchorRef, onClose]\r\n );\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n setPopoverPosition(null);\r\n return;\r\n }\r\n\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => document.removeEventListener('mousedown', handleClickOutside);\r\n }, [open, handleClickOutside]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n const runPositionUpdate = () => {\r\n updatePosition();\r\n requestAnimationFrame(updatePosition);\r\n };\r\n\r\n runPositionUpdate();\r\n\r\n window.addEventListener('resize', runPositionUpdate);\r\n window.addEventListener('scroll', runPositionUpdate, true);\r\n\r\n const resizeObserver = new ResizeObserver(runPositionUpdate);\r\n if (anchorRef.current) {\r\n resizeObserver.observe(anchorRef.current);\r\n }\r\n if (popoverRef.current) {\r\n resizeObserver.observe(popoverRef.current);\r\n }\r\n if (contentRef.current) {\r\n resizeObserver.observe(contentRef.current);\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('resize', runPositionUpdate);\r\n window.removeEventListener('scroll', runPositionUpdate, true);\r\n resizeObserver.disconnect();\r\n };\r\n }, [open, updatePosition, anchorRef, children]);\r\n\r\n if (!open || typeof document === 'undefined') return null;\r\n\r\n const panelMinHeight =\r\n typeof resolvedMinHeight === 'number' ? `${resolvedMinHeight}px` : resolvedMinHeight;\r\n\r\n const panelStyle: React.CSSProperties = {\r\n position: 'fixed',\r\n top: popoverPosition?.top ?? -9999,\r\n left: popoverPosition?.left ?? -9999,\r\n width: popoverPosition?.width,\r\n minWidth: popoverPosition?.width,\r\n maxWidth: popoverPosition?.width,\r\n minHeight: panelMinHeight,\r\n maxHeight: popoverPosition?.maxHeight ?? tokens.maxHeight,\r\n background: tokens.background,\r\n border: tokens.border,\r\n borderRadius: tokens.borderRadius,\r\n boxShadow: tokens.boxShadow,\r\n zIndex: FILTER_POPOVER_Z_INDEX,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n boxSizing: 'border-box',\r\n overflow: 'hidden',\r\n visibility: popoverPosition ? 'visible' : 'hidden',\r\n };\r\n\r\n return createPortal(\r\n <div ref={popoverRef} role=\"dialog\" aria-label={title} style={panelStyle}>\r\n <div\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n padding: tokens.headerPadding,\r\n background: tokens.headerBackground,\r\n marginBottom: tokens.headerMarginBottom,\r\n borderRadius: tokens.innerBorderRadius,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <span\r\n style={{\r\n margin: 0,\r\n fontSize: tokens.headerTitleFontSize,\r\n fontWeight: parseInt(tokens.headerTitleFontWeight, 10),\r\n color: tokens.headerTitleColor,\r\n lineHeight: '24px',\r\n fontFamily: 'inherit',\r\n }}\r\n >\r\n {title}\r\n </span>\r\n <CloseButton size=\"lg\" variant=\"filled\" aria-label=\"Close filter\" onClick={onClose} />\r\n </div>\r\n\r\n <div\r\n ref={contentRef}\r\n style={{\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: tokens.contentGap,\r\n padding: tokens.contentPadding,\r\n minHeight: 0,\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n }}\r\n >\r\n {children}\r\n </div>\r\n\r\n {(onReset || onApply) && (\r\n <div\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n gap: tokens.footerGap,\r\n padding: tokens.footerPadding,\r\n marginTop: tokens.footerMarginTop,\r\n flexShrink: 0,\r\n }}\r\n >\r\n {onReset && (\r\n <Button\r\n variant=\"grey\"\r\n size=\"sm\"\r\n onClick={() => {\r\n onReset();\r\n }}\r\n >\r\n {resetLabel}\r\n </Button>\r\n )}\r\n {onApply && (\r\n <Button\r\n variant=\"blue\"\r\n size=\"sm\"\r\n onClick={() => {\r\n onApply();\r\n onClose();\r\n }}\r\n >\r\n {applyLabel}\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n </div>,\r\n document.body\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getBreadcrumbTokensFromResolved } from \"../../tokens\";\r\nimport { useTokens } from \"../../ThemeProvider/ThemeContext\";\r\nimport type { BreadcrumbProps, BreadcrumbOption } from \"./Breadcrumb.types\";\r\n\r\nfunction toColor(value: string | undefined, fallback: string): string {\r\n if (!value || typeof value !== \"string\") return fallback;\r\n const s = value.trim();\r\n if (s.includes(\"{\")) return fallback;\r\n if (s.startsWith(\"#\") || s.startsWith(\"rgb\") || s.startsWith(\"hsl\")) return s;\r\n if (/^[0-9A-Fa-f]{6}$/.test(s)) return `#${s}`;\r\n return fallback;\r\n}\r\n\r\nexport const Breadcrumb = ({\r\n options,\r\n optionArray,\r\n value,\r\n onChange,\r\n separator = \" > \",\r\n style,\r\n ...rest\r\n}: BreadcrumbProps) => {\r\n const resolvedTokens = useTokens();\r\n const t = getBreadcrumbTokensFromResolved(resolvedTokens);\r\n\r\n const items: BreadcrumbOption[] = optionArray ?? options ?? [];\r\n\r\n const itemColor = toColor(t.itemColor, \"#1f1f1f\");\r\n const currentColor = toColor(t.currentColor, \"#1f1f1f\");\r\n const separatorColor = toColor(t.separatorColor, \"#1f1f1f\");\r\n\r\n if (items.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"Breadcrumb\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n flexWrap: \"wrap\",\r\n gap: t.gap,\r\n fontFamily: t.fontFamily,\r\n fontSize: t.fontSize,\r\n lineHeight: t.lineHeight,\r\n color: itemColor,\r\n ...style,\r\n }}\r\n {...rest}\r\n >\r\n {items.map((option, index) => {\r\n const isLast = index === items.length - 1;\r\n const isCurrent = option.value === value || isLast;\r\n const isClickable = !isCurrent && !!onChange;\r\n\r\n return (\r\n <React.Fragment key={option.value}>\r\n {index > 0 && (\r\n <span\r\n aria-hidden\r\n style={{\r\n color: separatorColor,\r\n fontWeight: t.fontWeight,\r\n fontFamily: t.fontFamily,\r\n fontSize: t.fontSize,\r\n lineHeight: t.lineHeight,\r\n userSelect: \"none\",\r\n }}\r\n >\r\n {separator}\r\n </span>\r\n )}\r\n {isClickable ? (\r\n <button\r\n type=\"button\"\r\n onClick={() => onChange?.(option.value)}\r\n style={{\r\n background: \"none\",\r\n border: \"none\",\r\n padding: 0,\r\n margin: 0,\r\n cursor: \"pointer\",\r\n color: itemColor,\r\n fontWeight: t.itemFontWeight,\r\n fontFamily: t.fontFamily,\r\n fontSize: t.fontSize,\r\n lineHeight: t.lineHeight,\r\n textDecoration: \"none\",\r\n }}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.textDecoration = \"underline\";\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.textDecoration = \"none\";\r\n }}\r\n >\r\n {option.label}\r\n </button>\r\n ) : (\r\n <span\r\n style={{\r\n color: currentColor,\r\n fontWeight: t.fontWeight,\r\n fontFamily: t.fontFamily,\r\n fontSize: t.fontSize,\r\n lineHeight: t.lineHeight,\r\n }}\r\n >\r\n {option.label}\r\n </span>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </nav>\r\n );\r\n};\r\n","import React, { useEffect, useRef } from \"react\";\r\nimport { getLoaderTokensFromResolved } from \"../../tokens\";\r\nimport { useTokens } from \"../../ThemeProvider/ThemeContext\";\r\nimport type { LoaderProps } from \"./Loader.types\";\r\n\r\nconst KEYFRAMES_ID = \"ds-loader-dots-keyframes\";\r\n\r\nfunction parsePx(value: string | number): number {\r\n if (typeof value === \"number\") return value;\r\n const num = parseInt(String(value).replace(/px$/i, \"\"), 10);\r\n return Number.isFinite(num) ? num : 0;\r\n}\r\n\r\nfunction ensureKeyframes(gap: number, activeSpread: number) {\r\n if (typeof document === \"undefined\") return;\r\n const existing = document.getElementById(KEYFRAMES_ID);\r\n if (existing) return;\r\n\r\n const g = gap;\r\n const s = activeSpread;\r\n\r\n const css = `\r\n@keyframes dsLoaderDots {\r\n 0% {\r\n box-shadow:\r\n ${g}px -${g}px 0 0px, ${g * 2}px -${g}px 0 0px, ${g * 3}px -${g}px 0 0px,\r\n ${g}px 0 0 ${s}px, ${g * 2}px 0 0 ${s}px, ${g * 3}px 0 0 ${s}px,\r\n ${g}px ${g}px 0 0px, ${g * 2}px ${g}px 0 0px, ${g * 3}px ${g}px 0 0px;\r\n }\r\n 12.5% {\r\n box-shadow:\r\n ${g}px -${g}px 0 0px, ${g * 2}px -${g}px 0 0px, ${g * 3}px -${g}px 0 ${s}px,\r\n ${g}px 0 0 ${s}px, ${g * 2}px 0 0 0px, ${g * 3}px 0 0 ${s}px,\r\n ${g}px ${g}px 0 0px, ${g * 2}px ${g}px 0 0px, ${g * 3}px ${g}px 0 0px;\r\n }\r\n 25% {\r\n box-shadow:\r\n ${g}px -${g}px 0 ${s}px, ${g * 2}px -${g}px 0 0px, ${g * 3}px -${g}px 0 ${s}px,\r\n ${g}px 0 0 0px, ${g * 2}px 0 0 0px, ${g * 3}px 0 0 0px,\r\n ${g}px ${g}px 0 0px, ${g * 2}px ${g}px 0 ${s}px, ${g * 3}px ${g}px 0 0px;\r\n }\r\n 50% {\r\n box-shadow:\r\n ${g}px -${g}px 0 ${s}px, ${g * 2}px -${g}px 0 ${s}px, ${g * 3}px -${g}px 0 0px,\r\n ${g}px 0 0 0px, ${g * 2}px 0 0 0px, ${g * 3}px 0 0 0px,\r\n ${g}px ${g}px 0 0px, ${g * 2}px ${g}px 0 0px, ${g * 3}px ${g}px 0 ${s}px;\r\n }\r\n 62.5% {\r\n box-shadow:\r\n ${g}px -${g}px 0 0px, ${g * 2}px -${g}px 0 0px, ${g * 3}px -${g}px 0 0px,\r\n ${g}px 0 0 ${s}px, ${g * 2}px 0 0 0px, ${g * 3}px 0 0 0px,\r\n ${g}px ${g}px 0 0px, ${g * 2}px ${g}px 0 ${s}px, ${g * 3}px ${g}px 0 ${s}px;\r\n }\r\n 75% {\r\n box-shadow:\r\n ${g}px -${g}px 0 0px, ${g * 2}px -${g}px 0 ${s}px, ${g * 3}px -${g}px 0 0px,\r\n ${g}px 0 0 0px, ${g * 2}px 0 0 0px, ${g * 3}px 0 0 ${s}px,\r\n ${g}px ${g}px 0 0px, ${g * 2}px ${g}px 0 0px, ${g * 3}px ${g}px 0 ${s}px;\r\n }\r\n 87.5% {\r\n box-shadow:\r\n ${g}px -${g}px 0 0px, ${g * 2}px -${g}px 0 ${s}px, ${g * 3}px -${g}px 0 0px,\r\n ${g}px 0 0 0px, ${g * 2}px 0 0 ${s}px, ${g * 3}px 0 0 0px,\r\n ${g}px ${g}px 0 ${s}px, ${g * 2}px ${g}px 0 0px, ${g * 3}px ${g}px 0 0px;\r\n }\r\n}`;\r\n\r\n const style = document.createElement(\"style\");\r\n style.id = KEYFRAMES_ID;\r\n style.textContent = css;\r\n document.head.appendChild(style);\r\n}\r\n\r\nexport const Loader = ({ open, zIndex = 9999 }: LoaderProps) => {\r\n const resolvedTokens = useTokens();\r\n const tokens = getLoaderTokensFromResolved(resolvedTokens);\r\n const injectedRef = useRef(false);\r\n\r\n const gap = parsePx(tokens.dotGap);\r\n const activeSpread = parsePx(tokens.dotActiveSpread);\r\n\r\n useEffect(() => {\r\n if (!injectedRef.current) {\r\n ensureKeyframes(gap, activeSpread);\r\n injectedRef.current = true;\r\n }\r\n }, [gap, activeSpread]);\r\n\r\n if (!open) return null;\r\n\r\n const backdropStyle: React.CSSProperties = {\r\n position: \"fixed\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: tokens.backdropBackground,\r\n opacity: Number.isFinite(parseFloat(tokens.backdropOpacity))\r\n ? parseFloat(tokens.backdropOpacity)\r\n : 0.5,\r\n zIndex,\r\n };\r\n\r\n const dotStyle: React.CSSProperties = {\r\n width: tokens.dotSize,\r\n aspectRatio: \"1\",\r\n borderRadius: \"50%\",\r\n color: tokens.dotColor,\r\n transform: `translateX(-${gap * 2}px)`,\r\n animation: \"dsLoaderDots 2s infinite linear\",\r\n boxShadow: [\r\n `${gap}px -${gap}px 0 0px`,\r\n `${gap * 2}px -${gap}px 0 0px`,\r\n `${gap * 3}px -${gap}px 0 0px`,\r\n `${gap}px 0 0 ${activeSpread}px`,\r\n `${gap * 2}px 0 0 ${activeSpread}px`,\r\n `${gap * 3}px 0 0 ${activeSpread}px`,\r\n `${gap}px ${gap}px 0 0px`,\r\n `${gap * 2}px ${gap}px 0 0px`,\r\n `${gap * 3}px ${gap}px 0 0px`,\r\n ].join(\", \"),\r\n };\r\n\r\n return (\r\n <div style={backdropStyle}>\r\n <div style={dotStyle} />\r\n </div>\r\n );\r\n};\r\n","import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\r\nimport { getDataTableTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport type { DataTableProps } from './DataTable.types';\r\nimport NoDataIm from '../../../assets/images/noData.webp';\r\n\r\nconst SKELETON_KEYFRAMES_ID = 'ds-datatable-skeleton-keyframes';\r\nconst MOBILE_MAX_WIDTH = 767;\r\n\r\nfunction useIsMobileScreen() {\r\n const [isMobile, setIsMobile] = useState(\r\n () => typeof window !== 'undefined' && window.innerWidth <= MOBILE_MAX_WIDTH\r\n );\r\n\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia(`(max-width: ${MOBILE_MAX_WIDTH}px)`);\r\n const update = () => setIsMobile(mediaQuery.matches);\r\n update();\r\n mediaQuery.addEventListener('change', update);\r\n return () => mediaQuery.removeEventListener('change', update);\r\n }, []);\r\n\r\n return isMobile;\r\n}\r\n\r\nconst COLUMN_DIVIDER_WIDTH = '1px';\r\nconst EXPANDABLE_TEXT_PREVIEW_LENGTH = 80;\r\n/** Keeps Read More columns from growing to the full string width under table-layout:auto. */\r\nconst EXPANDABLE_CELL_MAX_WIDTH = 280;\r\n/** Comfortable min width for month headers like \"Jun 2026\" when auto-fitting. */\r\nconst DEFAULT_MIN_SCROLL_COLUMN_WIDTH = 104;\r\n/** Soft cap so ultra-wide screens don't show an excessive number of months at once. */\r\nconst DEFAULT_MAX_SCROLL_COLUMNS = 6;\r\n\r\n/** Return-from-list row highlight (green, slightly darker for visibility). */\r\nconst HIGHLIGHT_ROW_BACKGROUND = '#C8E6C9';\r\nconst HIGHLIGHT_ROW_BACKGROUND_HOVER = '#A5D6A7';\r\nconst HIGHLIGHT_ROW_TRANSITION = 'background-color 2s ease';\r\n/** Hover uses a short transition so row feedback stays snappy; highlight fade-out uses HIGHLIGHT_ROW_TRANSITION from React state. */\r\nconst ROW_HOVER_TRANSITION = 'background-color 0.15s ease';\r\n\r\n/** Align headers/cells from explicit meta, falling back to API columnType. */\r\nfunction textAlignForColumnType(column: { meta?: { columnType?: string } } | null | undefined) {\r\n const raw = String(column?.meta?.columnType ?? '')\r\n .trim()\r\n .toLowerCase();\r\n const numericTypes = new Set([\r\n 'integer',\r\n 'long',\r\n 'int',\r\n 'double',\r\n 'float',\r\n 'number',\r\n 'bigint',\r\n 'decimal',\r\n ]);\r\n if (numericTypes.has(raw)) return 'right' as const;\r\n if (raw === 'string') return 'left' as const;\r\n return 'left' as const;\r\n}\r\n\r\nfunction resolveExplicitAlign(value: unknown): 'left' | 'right' | 'center' | undefined {\r\n const raw = String(value ?? '')\r\n .trim()\r\n .toLowerCase();\r\n if (raw === 'left' || raw === 'right' || raw === 'center') return raw;\r\n return undefined;\r\n}\r\n\r\nfunction headerAlignForColumn(column: { meta?: { headerAlign?: string } } | null | undefined) {\r\n return resolveExplicitAlign(column?.meta?.headerAlign) ?? ('center' as const);\r\n}\r\n\r\nfunction cellAlignForColumn(\r\n column: { meta?: { cellAlign?: string; columnType?: string } } | null | undefined\r\n) {\r\n return resolveExplicitAlign(column?.meta?.cellAlign) ?? textAlignForColumnType(column);\r\n}\r\n\r\nfunction stickyPositionForColumn(\r\n column: { meta?: { sticky?: string } } | null | undefined\r\n): 'left' | 'right' | undefined {\r\n const raw = String(column?.meta?.sticky ?? '')\r\n .trim()\r\n .toLowerCase();\r\n if (raw === 'left' || raw === 'right') return raw;\r\n return undefined;\r\n}\r\n\r\nfunction extraCellStyleFromColumn(cell: any): React.CSSProperties {\r\n const getCellStyle = cell?.column?.meta?.getCellStyle;\r\n if (typeof getCellStyle !== 'function') return {};\r\n const style = getCellStyle(cell);\r\n return style && typeof style === 'object' ? (style as React.CSSProperties) : {};\r\n}\r\n\r\nfunction columnMinWidthStyle(column: any): React.CSSProperties {\r\n const minWidth = column?.meta?.minWidth;\r\n if (minWidth == null || minWidth === '') return {};\r\n return { minWidth };\r\n}\r\n\r\nfunction columnHeaderExtraStyle(column: any): React.CSSProperties {\r\n if (!column?.meta?.nowrapHeader) return {};\r\n return { whiteSpace: 'nowrap' };\r\n}\r\n\r\n/**\r\n * Match highlighted row when API uses userId, clientId, clientMasterId, positionId, deviceId, or id\r\n * on row.original. positionId is checked before deviceId because GPS position rows carry both\r\n * (deviceId there is the device's IMEI, not a row identifier) and positionId is the one that's\r\n * actually unique per row.\r\n */\r\nfunction getRowClientIdForHighlight(original: unknown): string {\r\n if (!original || typeof original !== 'object') return '';\r\n const o = original as Record<string, unknown>;\r\n const v =\r\n o.selectionKey ??\r\n o.otherDeductionTransactionId ??\r\n o.loanId ??\r\n o.userId ??\r\n o.clientId ??\r\n o.clientMasterId ??\r\n o.positionId ??\r\n o.deviceId ??\r\n o.id;\r\n return v != null ? String(v) : '';\r\n}\r\n\r\nfunction ensureSkeletonKeyframes() {\r\n if (typeof document === 'undefined') return;\r\n if (document.getElementById(SKELETON_KEYFRAMES_ID)) return;\r\n\r\n const css = `\r\n@keyframes dsSkeletonShimmer {\r\n 0% { background-position: -200px 0; }\r\n 100% { background-position: calc(200px + 100%) 0; }\r\n}`;\r\n\r\n const style = document.createElement('style');\r\n style.id = SKELETON_KEYFRAMES_ID;\r\n style.textContent = css;\r\n document.head.appendChild(style);\r\n}\r\n\r\n/* Sort icon – uses the project's sorting_icon.svg asset */\r\n// import ArrowUpIcon from \"@/assets/images/sorting_icon.svg\";\r\n\r\nfunction isHtmlColumn(column: { meta?: { columnType?: string } } | null | undefined) {\r\n return String(column?.meta?.columnType ?? '').toLowerCase() === 'html';\r\n}\r\n\r\nfunction isExpandableTextValue(\r\n value: unknown,\r\n column?: { meta?: { columnType?: string; disableExpandableCell?: boolean } } | null\r\n) {\r\n if (isHtmlColumn(column) || column?.meta?.disableExpandableCell) return false;\r\n if (typeof value !== 'string') return false;\r\n if (/^\\d{4}-\\d{2}-\\d{2}T/.test(value)) return false;\r\n return value.length > EXPANDABLE_TEXT_PREVIEW_LENGTH;\r\n}\r\n\r\n/** Status / badge columns must stay on one line; squeeze → horizontal scroll instead of a broken badge. */\r\nfunction isStatusBadgeColumn(\r\n column:\r\n | {\r\n id?: string;\r\n Header?: unknown;\r\n accessor?: unknown;\r\n meta?: { columnType?: string; wrapText?: boolean };\r\n }\r\n | null\r\n | undefined\r\n) {\r\n if (isHtmlColumn(column)) return true;\r\n const key = String(column?.id ?? column?.accessor ?? '')\r\n .trim()\r\n .toLowerCase();\r\n const header = String(column?.Header ?? '')\r\n .trim()\r\n .toLowerCase();\r\n return key === 'status' || key === 'statusname' || key === 'status_name' || header === 'status';\r\n}\r\n\r\nconst ExpandableCell = ({\r\n value,\r\n renderedCell,\r\n column,\r\n}: {\r\n value: any;\r\n renderedCell: React.ReactNode;\r\n column?: { meta?: { columnType?: string; disableExpandableCell?: boolean } } | null;\r\n}) => {\r\n const [isExpanded, setIsExpanded] = React.useState(false);\r\n\r\n if (!isExpandableTextValue(value, column)) {\r\n return <>{renderedCell}</>;\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n display: 'block',\r\n boxSizing: 'border-box',\r\n width: '100%',\r\n maxWidth: EXPANDABLE_CELL_MAX_WIDTH,\r\n whiteSpace: 'normal',\r\n overflowWrap: 'anywhere',\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n {isExpanded ?\r\n renderedCell\r\n : <span>{`${value.slice(0, EXPANDABLE_TEXT_PREVIEW_LENGTH).trimEnd()}...`}</span>}\r\n <button\r\n type=\"button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setIsExpanded(!isExpanded);\r\n }}\r\n style={{\r\n color: '#2563eb',\r\n background: 'none',\r\n border: 'none',\r\n cursor: 'pointer',\r\n padding: 0,\r\n marginLeft: 2,\r\n fontSize: '0.85em',\r\n textDecoration: 'underline',\r\n fontWeight: 500,\r\n }}\r\n >\r\n {isExpanded ? 'Read Less' : 'Read More'}\r\n </button>\r\n </div>\r\n );\r\n};\r\n\r\nfunction shouldWrapTableCell(\r\n column:\r\n | {\r\n id?: string;\r\n Header?: unknown;\r\n accessor?: unknown;\r\n meta?: { wrapText?: boolean; columnType?: string };\r\n }\r\n | null\r\n | undefined,\r\n cellValue: unknown,\r\n preventHorizontalScroll: boolean\r\n) {\r\n // Status badges / HTML pills must never wrap mid-word; prefer horizontal scroll.\r\n if (isStatusBadgeColumn(column) && !column?.meta?.wrapText) return false;\r\n if (preventHorizontalScroll) return true;\r\n if (column?.meta?.wrapText) return true;\r\n return (\r\n typeof cellValue === 'string' &&\r\n cellValue.length > EXPANDABLE_TEXT_PREVIEW_LENGTH &&\r\n !/^\\d{4}-\\d{2}-\\d{2}T/.test(cellValue)\r\n );\r\n}\r\n\r\nexport function DataTable({\r\n getTableProps,\r\n getTableBodyProps,\r\n headerGroups,\r\n page,\r\n rows,\r\n prepareRow,\r\n loading = false,\r\n Status,\r\n length,\r\n emptyStateHeight = 300,\r\n stickyHeader = true,\r\n className,\r\n highlightRowClientId = null,\r\n getHighlightRowId,\r\n preventHorizontalScroll = false,\r\n frozenPaneMaxWidth = '42%',\r\n visibleScrollColumns,\r\n minScrollColumnWidth = DEFAULT_MIN_SCROLL_COLUMN_WIDTH,\r\n maxScrollColumns = DEFAULT_MAX_SCROLL_COLUMNS,\r\n}: DataTableProps) {\r\n const resolvedTokens = useTokens();\r\n const isMobileScreen = useIsMobileScreen();\r\n const tokens = getDataTableTokensFromResolved(resolvedTokens);\r\n const injectedRef = useRef(false);\r\n const frozenTableRef = useRef<HTMLTableElement>(null);\r\n const scrollTableRef = useRef<HTMLTableElement>(null);\r\n const frozenPaneRef = useRef<HTMLDivElement>(null);\r\n const scrollPaneRef = useRef<HTMLDivElement>(null);\r\n const [hoveredRowIndex, setHoveredRowIndex] = useState<number | null>(null);\r\n const tableBorderRadius = resolvedTokens.foundation?.radius?.lg ?? '8px';\r\n const bodyColumnDividerColor =\r\n resolvedTokens.semantic?.color?.secondary?.default ?? tokens.cellBorderBottom;\r\n\r\n // function SortIcon({ direction }: { direction: 'asc' | 'desc' | null; color?: string }) {\r\n // return (\r\n // <img\r\n // // src={ArrowUpIcon}\r\n // src={''}\r\n // alt={\r\n // direction === 'asc' ? 'Sort ascending'\r\n // : direction === 'desc' ?\r\n // 'Sort descending'\r\n // : 'Sortable'\r\n // }\r\n // style={{\r\n // marginLeft: 8,\r\n // width: tokens.sortIconWidth,\r\n // height: tokens.sortIconHeight,\r\n // verticalAlign: 'middle',\r\n // opacity: direction ? 1 : 0.4,\r\n // transform: direction === 'desc' ? 'rotate(180deg)' : 'none',\r\n // transition: 'transform 0.2s, opacity 0.2s',\r\n // }}\r\n // />\r\n // );\r\n // }\r\n\r\n useEffect(() => {\r\n if (!injectedRef.current) {\r\n ensureSkeletonKeyframes();\r\n injectedRef.current = true;\r\n }\r\n }, []);\r\n\r\n const skelCols = headerGroups?.length > 0 ? headerGroups[0].headers.length : 3;\r\n const skeletonRows = Status?.pageSize || length || 4;\r\n const renderRows = page || rows || [];\r\n const hasRows = renderRows.length > 0;\r\n const allHeaders = headerGroups?.[0]?.headers ?? [];\r\n const frozenHeaders = allHeaders.filter(\r\n (header: any) => stickyPositionForColumn(header) === 'left'\r\n );\r\n const scrollHeaders = allHeaders.filter(\r\n (header: any) => stickyPositionForColumn(header) !== 'left'\r\n );\r\n const hasFrozenSplit =\r\n !isMobileScreen &&\r\n !preventHorizontalScroll &&\r\n frozenHeaders.length > 0 &&\r\n scrollHeaders.length > 0 &&\r\n (loading || hasRows);\r\n const useEqualWidthScroll =\r\n visibleScrollColumns === 'auto' ||\r\n (typeof visibleScrollColumns === 'number' && visibleScrollColumns > 0);\r\n const resolvedMinScrollColumnWidth =\r\n typeof minScrollColumnWidth === 'number' && minScrollColumnWidth > 0 ?\r\n minScrollColumnWidth\r\n : DEFAULT_MIN_SCROLL_COLUMN_WIDTH;\r\n const resolvedMaxScrollColumns =\r\n typeof maxScrollColumns === 'number' && maxScrollColumns > 0 ?\r\n maxScrollColumns\r\n : DEFAULT_MAX_SCROLL_COLUMNS;\r\n\r\n const resolveColumnsInView = (paneWidth: number, columnCount: number) => {\r\n if (!useEqualWidthScroll || columnCount === 0 || paneWidth <= 0) return null;\r\n if (visibleScrollColumns === 'auto') {\r\n const fitted = Math.max(1, Math.floor(paneWidth / resolvedMinScrollColumnWidth));\r\n return Math.min(fitted, resolvedMaxScrollColumns, columnCount);\r\n }\r\n return Math.min(visibleScrollColumns as number, columnCount);\r\n };\r\n\r\n useLayoutEffect(() => {\r\n if (!hasFrozenSplit) return;\r\n const leftTable = frozenTableRef.current;\r\n const rightTable = scrollTableRef.current;\r\n const leftPane = frozenPaneRef.current;\r\n const rightPane = scrollPaneRef.current;\r\n if (!leftTable || !rightTable) return;\r\n\r\n let rafId = 0;\r\n let running = false;\r\n\r\n const applyEqualScrollColumnWidths = () => {\r\n if (!useEqualWidthScroll || !rightPane) return;\r\n const columnCount = scrollHeaders.length;\r\n if (columnCount === 0) return;\r\n\r\n const paneWidth = rightPane.clientWidth;\r\n if (paneWidth <= 0) return;\r\n\r\n const columnsInView = resolveColumnsInView(paneWidth, columnCount);\r\n if (!columnsInView) return;\r\n\r\n const colWidth = paneWidth / columnsInView;\r\n const totalWidth = colWidth * columnCount;\r\n\r\n rightTable.style.tableLayout = 'fixed';\r\n rightTable.style.width = `${totalWidth}px`;\r\n rightTable.style.minWidth = `${totalWidth}px`;\r\n\r\n rightTable.querySelectorAll('thead th').forEach((th) => {\r\n const el = th as HTMLElement;\r\n el.style.width = `${colWidth}px`;\r\n el.style.minWidth = `${colWidth}px`;\r\n el.style.maxWidth = `${colWidth}px`;\r\n el.style.boxSizing = 'border-box';\r\n el.style.overflow = 'hidden';\r\n });\r\n rightTable.querySelectorAll('tbody td').forEach((td) => {\r\n const el = td as HTMLElement;\r\n el.style.width = `${colWidth}px`;\r\n el.style.minWidth = `${colWidth}px`;\r\n el.style.maxWidth = `${colWidth}px`;\r\n el.style.boxSizing = 'border-box';\r\n el.style.overflow = 'hidden';\r\n });\r\n };\r\n\r\n const sync = () => {\r\n if (running) return;\r\n running = true;\r\n rafId = requestAnimationFrame(() => {\r\n try {\r\n applyEqualScrollColumnWidths();\r\n\r\n const leftRows = leftTable.querySelectorAll('tr');\r\n const rightRows = rightTable.querySelectorAll('tr');\r\n const count = Math.min(leftRows.length, rightRows.length);\r\n for (let i = 0; i < count; i += 1) {\r\n const leftRow = leftRows[i] as HTMLElement;\r\n const rightRow = rightRows[i] as HTMLElement;\r\n leftRow.style.height = 'auto';\r\n rightRow.style.height = 'auto';\r\n const height = Math.max(\r\n leftRow.getBoundingClientRect().height,\r\n rightRow.getBoundingClientRect().height\r\n );\r\n leftRow.style.height = `${height}px`;\r\n rightRow.style.height = `${height}px`;\r\n }\r\n if (leftPane && rightPane) {\r\n const scrollbarHeight = Math.max(0, rightPane.offsetHeight - rightPane.clientHeight);\r\n leftPane.style.paddingBottom = `${scrollbarHeight}px`;\r\n }\r\n } finally {\r\n running = false;\r\n }\r\n });\r\n };\r\n\r\n sync();\r\n window.addEventListener('resize', sync);\r\n\r\n let resizeObserver: ResizeObserver | null = null;\r\n if (typeof ResizeObserver !== 'undefined' && rightPane) {\r\n resizeObserver = new ResizeObserver(sync);\r\n resizeObserver.observe(rightPane);\r\n }\r\n\r\n return () => {\r\n running = false;\r\n cancelAnimationFrame(rafId);\r\n window.removeEventListener('resize', sync);\r\n resizeObserver?.disconnect();\r\n };\r\n }, [\r\n hasFrozenSplit,\r\n loading,\r\n renderRows.length,\r\n allHeaders.length,\r\n scrollHeaders.length,\r\n useEqualWidthScroll,\r\n visibleScrollColumns,\r\n resolvedMinScrollColumnWidth,\r\n resolvedMaxScrollColumns,\r\n highlightRowClientId,\r\n getHighlightRowId,\r\n ]);\r\n\r\n /* -------- Styles -------- */\r\n const tableStyle: React.CSSProperties = {\r\n width: '100%',\r\n minWidth: '100%',\r\n borderCollapse: 'collapse',\r\n tableLayout: preventHorizontalScroll ? 'fixed' : 'auto',\r\n };\r\n\r\n const containerStyle: React.CSSProperties = {\r\n width: '100%',\r\n overflowX: preventHorizontalScroll ? 'hidden' : 'auto',\r\n overflowY: 'auto',\r\n border: `1px solid ${tokens.tableBorder}`,\r\n borderRadius: tableBorderRadius,\r\n };\r\n\r\n const thStyle = (\r\n align: string = 'center',\r\n isLastColumn: boolean = false\r\n ): React.CSSProperties => ({\r\n padding: tokens.headerPadding,\r\n fontSize: tokens.headerFontSize,\r\n fontWeight: Number(tokens.headerFontWeight) || 600,\r\n color: tokens.headerColor,\r\n backgroundColor: tokens.headerBackground,\r\n borderBottom: `1px solid ${tokens.headerBorderBottom}`,\r\n borderRight: isLastColumn ? 'none' : `1px solid ${tokens.headerBorderRight}`,\r\n textAlign: align as any,\r\n whiteSpace: 'pre-line',\r\n overflowWrap: 'break-word',\r\n verticalAlign: 'middle',\r\n cursor: 'default',\r\n position: stickyHeader ? 'sticky' : 'relative',\r\n top: stickyHeader ? 0 : undefined,\r\n zIndex: stickyHeader ? 1 : undefined,\r\n });\r\n\r\n const tdStyle = (\r\n isLastRow: boolean = false,\r\n textAlign: 'left' | 'right' | 'center' = 'center',\r\n isLastColumn: boolean = false\r\n ): React.CSSProperties => ({\r\n padding: tokens.cellPadding,\r\n fontSize: tokens.cellFontSize,\r\n color: tokens.cellColor,\r\n borderBottom: isLastRow ? 'none' : `1px solid ${tokens.cellBorderBottom}`,\r\n borderRight: isLastColumn ? 'none' : `${COLUMN_DIVIDER_WIDTH} solid ${bodyColumnDividerColor}`,\r\n textAlign,\r\n textTransform: 'none',\r\n verticalAlign: 'middle',\r\n whiteSpace: 'nowrap',\r\n });\r\n\r\n const stickyStyle = (\r\n stickyPosition: 'left' | 'right' | undefined,\r\n isHeader: boolean\r\n ): React.CSSProperties => {\r\n if (!stickyPosition || isMobileScreen) return {};\r\n return {\r\n position: 'sticky',\r\n [stickyPosition]: 0,\r\n backgroundColor: isHeader ? tokens.headerBackground : 'inherit',\r\n zIndex: isHeader ? 3 : 2,\r\n boxShadow:\r\n stickyPosition === 'right' ?\r\n '-1px 0 0 rgba(229, 231, 235, 0.9)'\r\n : '1px 0 0 rgba(229, 231, 235, 0.9)',\r\n };\r\n };\r\n\r\n const skeletonBarStyle: React.CSSProperties = {\r\n height: tokens.skeletonHeight,\r\n borderRadius: tokens.skeletonRadius,\r\n background: `linear-gradient(90deg, ${tokens.skeletonBaseColor} 25%, transparent 50%, ${tokens.skeletonBaseColor} 75%)`,\r\n backgroundSize: '400px 100%',\r\n animation: 'dsSkeletonShimmer 1.5s ease-in-out infinite',\r\n };\r\n\r\n const splitContainerStyle: React.CSSProperties = {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'stretch',\r\n overflow: 'hidden',\r\n border: `1px solid ${tokens.tableBorder}`,\r\n borderRadius: tableBorderRadius,\r\n };\r\n\r\n const frozenPaneStyle: React.CSSProperties = {\r\n // Hug content so the right pane starts flush against the last frozen column.\r\n // Do not shrink or scroll horizontally — frozen columns stay fully visible.\r\n flex: '0 0 auto',\r\n width: 'max-content',\r\n maxWidth: frozenPaneMaxWidth,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n boxShadow: '8px 0 14px -8px rgba(15, 23, 42, 0.28)',\r\n zIndex: 2,\r\n backgroundColor: tokens.rowBackground,\r\n };\r\n\r\n const scrollPaneStyle: React.CSSProperties = {\r\n flex: '1 1 0%',\r\n minWidth: 0,\r\n overflowX: 'auto',\r\n overflowY: 'hidden',\r\n };\r\n\r\n const frozenTableStyle: React.CSSProperties = {\r\n borderCollapse: 'collapse',\r\n tableLayout: 'auto',\r\n width: 'max-content',\r\n };\r\n\r\n const scrollTableStyle: React.CSSProperties = {\r\n borderCollapse: 'collapse',\r\n tableLayout: useEqualWidthScroll ? 'fixed' : 'auto',\r\n width: useEqualWidthScroll ? undefined : 'max-content',\r\n minWidth: useEqualWidthScroll ? undefined : '100%',\r\n };\r\n\r\n const renderHeaderRow = (\r\n headers: any[],\r\n {\r\n headerLoading = false,\r\n disableSticky = false,\r\n keepLastDivider = false,\r\n }: { headerLoading?: boolean; disableSticky?: boolean; keepLastDivider?: boolean } = {}\r\n ) => (\r\n <tr>\r\n {headerLoading ?\r\n headers.map((col: any, i: number) => (\r\n <th\r\n key={`skel-h-${col?.id ?? i}`}\r\n style={{\r\n ...thStyle(\r\n headerAlignForColumn(col),\r\n keepLastDivider ? false : i === headers.length - 1\r\n ),\r\n ...columnMinWidthStyle(col),\r\n }}\r\n >\r\n <div style={skeletonBarStyle} />\r\n </th>\r\n ))\r\n : headers.map((col: any, colIdx: number) => {\r\n const isLast = keepLastDivider ? false : colIdx === headers.length - 1;\r\n const headerAlign = headerAlignForColumn(col);\r\n const stickyPosition = disableSticky ? undefined : stickyPositionForColumn(col);\r\n const headerProps = col.getHeaderProps(\r\n col.getSortByToggleProps ? col.getSortByToggleProps() : undefined\r\n );\r\n return (\r\n <th\r\n {...headerProps}\r\n style={{\r\n ...thStyle(headerAlign, isLast),\r\n ...stickyStyle(stickyPosition, true),\r\n ...columnMinWidthStyle(col),\r\n ...columnHeaderExtraStyle(col),\r\n ...(col.canSort ? { cursor: 'pointer', userSelect: 'none' } : {}),\r\n }}\r\n >\r\n {col.render('Header')}\r\n </th>\r\n );\r\n })\r\n }\r\n </tr>\r\n );\r\n\r\n const renderBodyCell = (\r\n cell: any,\r\n rowIdx: number,\r\n cellIdx: number,\r\n cellCount: number,\r\n {\r\n disableSticky = false,\r\n totalRows = renderRows.length,\r\n keepLastDivider = false,\r\n }: { disableSticky?: boolean; totalRows?: number; keepLastDivider?: boolean } = {}\r\n ) => {\r\n const align = cellAlignForColumn(cell.column);\r\n const stickyPosition = disableSticky ? undefined : stickyPositionForColumn(cell.column);\r\n const isStatusBadge = isStatusBadgeColumn(cell.column);\r\n const shouldWrap = shouldWrapTableCell(cell.column, cell.value, preventHorizontalScroll);\r\n const isExpandableText = isExpandableTextValue(cell.value, cell.column);\r\n const cellProps = cell.getCellProps();\r\n const cellClassName = [cellProps.className, isStatusBadge ? 'ds-datatable-cell--status' : '']\r\n .filter(Boolean)\r\n .join(' ');\r\n return (\r\n <td\r\n {...cellProps}\r\n className={cellClassName || undefined}\r\n style={{\r\n ...tdStyle(\r\n rowIdx === totalRows - 1,\r\n align,\r\n keepLastDivider ? false : cellIdx === cellCount - 1\r\n ),\r\n ...stickyStyle(stickyPosition, false),\r\n ...columnMinWidthStyle(cell.column),\r\n ...(shouldWrap && {\r\n whiteSpace: 'normal',\r\n wordBreak: 'break-word',\r\n overflowWrap: 'anywhere',\r\n }),\r\n ...(isExpandableText && {\r\n width: EXPANDABLE_CELL_MAX_WIDTH,\r\n maxWidth: EXPANDABLE_CELL_MAX_WIDTH,\r\n }),\r\n ...(isStatusBadge &&\r\n !shouldWrap && {\r\n whiteSpace: 'nowrap',\r\n wordBreak: 'normal',\r\n overflowWrap: 'normal',\r\n }),\r\n ...extraCellStyleFromColumn(cell),\r\n }}\r\n >\r\n <ExpandableCell\r\n value={cell.value}\r\n renderedCell={cell.render('Cell')}\r\n column={cell.column}\r\n />\r\n </td>\r\n );\r\n };\r\n\r\n const renderSkeletonRows = (headers: any[], { keepLastDivider = false } = {}) =>\r\n Array.from({ length: skeletonRows }).map((_, rowIdx) => {\r\n const stripeBg = rowIdx % 2 === 0 ? tokens.rowBackground : tokens.rowStripeBackground;\r\n return (\r\n <tr key={`skel-r-${rowIdx}`} style={{ backgroundColor: stripeBg }}>\r\n {headers.map((headerCol: any, colIdx: number) => (\r\n <td\r\n key={`skel-c-${rowIdx}-${headerCol?.id ?? colIdx}`}\r\n style={{\r\n ...tdStyle(\r\n rowIdx === skeletonRows - 1,\r\n cellAlignForColumn(headerCol),\r\n keepLastDivider ? false : colIdx === headers.length - 1\r\n ),\r\n ...columnMinWidthStyle(headerCol),\r\n }}\r\n >\r\n <div\r\n style={{\r\n ...skeletonBarStyle,\r\n width: '100%',\r\n }}\r\n />\r\n </td>\r\n ))}\r\n </tr>\r\n );\r\n });\r\n\r\n const renderDataRows = (\r\n headers: any[],\r\n {\r\n disableSticky = false,\r\n keyPrefix = 'row',\r\n syncHover = false,\r\n keepLastDivider = false,\r\n }: {\r\n disableSticky?: boolean;\r\n keyPrefix?: string;\r\n syncHover?: boolean;\r\n keepLastDivider?: boolean;\r\n } = {}\r\n ) => {\r\n const headerIds = new Set(headers.map((header: any) => header.id));\r\n return renderRows.map((row: any, rowIdx: number) => {\r\n if (prepareRow) prepareRow(row);\r\n const stripeBg = rowIdx % 2 === 0 ? tokens.rowBackground : tokens.rowStripeBackground;\r\n const isHighlightedRow =\r\n highlightRowClientId != null &&\r\n (getHighlightRowId ?\r\n String(getHighlightRowId(row?.original) ?? '')\r\n : getRowClientIdForHighlight(row?.original)) === String(highlightRowClientId);\r\n const baseBg = isHighlightedRow ? HIGHLIGHT_ROW_BACKGROUND : stripeBg;\r\n const hoverBg = isHighlightedRow ? HIGHLIGHT_ROW_BACKGROUND_HOVER : tokens.rowHoverBackground;\r\n const isHovered = syncHover && hoveredRowIndex === rowIdx;\r\n const rowProps = typeof row.getRowProps === 'function' ? row.getRowProps() : {};\r\n const restRowProps = { ...(rowProps ?? {}) };\r\n delete (restRowProps as { key?: unknown }).key;\r\n const cells = row.cells.filter((cell: any) => headerIds.has(cell.column.id));\r\n return (\r\n <tr\r\n {...restRowProps}\r\n key={`${keyPrefix}-${row.id ?? rowIdx}`}\r\n style={{\r\n ...(restRowProps.style as React.CSSProperties | undefined),\r\n backgroundColor: isHovered ? hoverBg : baseBg,\r\n transition: HIGHLIGHT_ROW_TRANSITION,\r\n }}\r\n onMouseEnter={(e) => {\r\n if (syncHover) {\r\n setHoveredRowIndex(rowIdx);\r\n return;\r\n }\r\n e.currentTarget.style.transition = ROW_HOVER_TRANSITION;\r\n e.currentTarget.style.backgroundColor = hoverBg;\r\n }}\r\n onMouseLeave={(e) => {\r\n if (syncHover) {\r\n setHoveredRowIndex(null);\r\n return;\r\n }\r\n e.currentTarget.style.transition = ROW_HOVER_TRANSITION;\r\n e.currentTarget.style.backgroundColor = baseBg;\r\n }}\r\n >\r\n {cells.map((cell: any, cellIdx: number) =>\r\n renderBodyCell(cell, rowIdx, cellIdx, cells.length, { disableSticky, keepLastDivider })\r\n )}\r\n </tr>\r\n );\r\n });\r\n };\r\n\r\n const renderEmptyRow = (colSpan: number) => (\r\n <tr>\r\n <td\r\n colSpan={colSpan || 1}\r\n style={{\r\n textAlign: 'center',\r\n color: tokens.emptyStateColor,\r\n fontSize: tokens.emptyStateFontSize,\r\n }}\r\n >\r\n <div style={{ width: '100%', height: emptyStateHeight }}>\r\n <img\r\n src={NoDataIm}\r\n alt=\"No data\"\r\n style={{\r\n width: emptyStateHeight,\r\n height: emptyStateHeight,\r\n objectFit: 'cover',\r\n placeSelf: 'center',\r\n }}\r\n />\r\n </div>\r\n </td>\r\n </tr>\r\n );\r\n\r\n /* -------- Render -------- */\r\n if (hasFrozenSplit) {\r\n return (\r\n <div className={className} style={splitContainerStyle}>\r\n <div ref={frozenPaneRef} style={frozenPaneStyle}>\r\n <table ref={frozenTableRef} style={frozenTableStyle}>\r\n {headerGroups && headerGroups.length > 0 && (\r\n <thead>\r\n {renderHeaderRow(frozenHeaders, {\r\n headerLoading: loading,\r\n disableSticky: true,\r\n keepLastDivider: true,\r\n })}\r\n </thead>\r\n )}\r\n <tbody>\r\n {loading ?\r\n renderSkeletonRows(frozenHeaders, { keepLastDivider: true })\r\n : renderDataRows(frozenHeaders, {\r\n disableSticky: true,\r\n keyPrefix: 'frozen',\r\n syncHover: true,\r\n keepLastDivider: true,\r\n })\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n <div ref={scrollPaneRef} style={scrollPaneStyle}>\r\n <table ref={scrollTableRef} style={scrollTableStyle}>\r\n {headerGroups && headerGroups.length > 0 && (\r\n <thead>\r\n {renderHeaderRow(scrollHeaders, {\r\n headerLoading: loading,\r\n disableSticky: false,\r\n })}\r\n </thead>\r\n )}\r\n <tbody>\r\n {loading ?\r\n renderSkeletonRows(scrollHeaders)\r\n : renderDataRows(scrollHeaders, {\r\n disableSticky: false,\r\n keyPrefix: 'scroll',\r\n syncHover: true,\r\n })\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className={className} style={containerStyle}>\r\n <table style={tableStyle} {...(getTableProps ? getTableProps() : {})}>\r\n {headerGroups && headerGroups.length > 0 && (loading || hasRows) && (\r\n <thead>\r\n {headerGroups.map((headerGroup: any) => (\r\n <tr {...headerGroup.getHeaderGroupProps()}>\r\n {loading ?\r\n Array.from({ length: skelCols }).map((_, i) => (\r\n <th\r\n key={`skel-h-${i}`}\r\n style={{\r\n ...thStyle(\r\n headerAlignForColumn(\r\n headerGroups?.[0]?.headers?.[i]?.column ??\r\n headerGroups?.[0]?.headers?.[i]\r\n ),\r\n i === skelCols - 1\r\n ),\r\n ...columnMinWidthStyle(\r\n headerGroups?.[0]?.headers?.[i]?.column ?? headerGroups?.[0]?.headers?.[i]\r\n ),\r\n }}\r\n >\r\n <div style={skeletonBarStyle} />\r\n </th>\r\n ))\r\n : headerGroup.headers.map((col: any, colIdx: number) => {\r\n const isLast = colIdx === headerGroup.headers.length - 1;\r\n const headerAlign = headerAlignForColumn(col);\r\n const stickyPosition = stickyPositionForColumn(col);\r\n return (\r\n <th\r\n {...col.getHeaderProps(\r\n col.getSortByToggleProps ? col.getSortByToggleProps() : undefined\r\n )}\r\n style={{\r\n ...thStyle(headerAlign, isLast),\r\n ...stickyStyle(stickyPosition, true),\r\n ...columnMinWidthStyle(col),\r\n ...columnHeaderExtraStyle(col),\r\n ...(col.canSort ? { cursor: 'pointer', userSelect: 'none' } : {}),\r\n }}\r\n >\r\n {col.render('Header')}\r\n </th>\r\n );\r\n })\r\n }\r\n </tr>\r\n ))}\r\n </thead>\r\n )}\r\n\r\n <tbody {...(getTableBodyProps ? getTableBodyProps() : {})}>\r\n {loading ?\r\n Array.from({ length: skeletonRows }).map((_, rowIdx) => {\r\n const stripeBg = rowIdx % 2 === 0 ? tokens.rowBackground : tokens.rowStripeBackground;\r\n return (\r\n <tr key={`skel-r-${rowIdx}`} style={{ backgroundColor: stripeBg }}>\r\n {Array.from({ length: skelCols }).map((_, colIdx) => {\r\n const headerCol =\r\n headerGroups?.[0]?.headers?.[colIdx]?.column ??\r\n headerGroups?.[0]?.headers?.[colIdx];\r\n const align = cellAlignForColumn(headerCol);\r\n return (\r\n <td\r\n key={`skel-c-${rowIdx}-${colIdx}`}\r\n style={{\r\n ...tdStyle(rowIdx === skeletonRows - 1, align, colIdx === skelCols - 1),\r\n ...columnMinWidthStyle(headerCol),\r\n }}\r\n >\r\n <div\r\n style={{\r\n ...skeletonBarStyle,\r\n width: '100%',\r\n }}\r\n />\r\n </td>\r\n );\r\n })}\r\n </tr>\r\n );\r\n })\r\n : renderRows.length > 0 ?\r\n renderDataRows(allHeaders.length ? allHeaders : (headerGroups?.[0]?.headers ?? []))\r\n : renderEmptyRow(skelCols || 1)}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useTokens } from \"../../ThemeProvider/ThemeContext\";\r\nimport { getStepperTokensFromResolved } from \"../../tokens\";\r\nimport type { StepperProps } from \"./Stepper.types\";\r\n\r\nexport const Stepper = ({\r\n steps,\r\n value,\r\n onChange,\r\n disabled = false,\r\n getStepDisabled,\r\n style,\r\n ...rest\r\n}: StepperProps) => {\r\n const resolvedTokens = useTokens();\r\n const t = getStepperTokensFromResolved(resolvedTokens);\r\n const activeIndex = steps.findIndex((step) => step.value === value);\r\n const isComponentDisabled = disabled === true;\r\n\r\n return (\r\n <div\r\n role=\"list\"\r\n aria-label=\"Stepper\"\r\n aria-disabled={disabled}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: t.gap,\r\n opacity: isComponentDisabled ? 0.5 : 1,\r\n ...style,\r\n }}\r\n {...rest}\r\n >\r\n {steps.map((step, index) => {\r\n const isCompleted = activeIndex > -1 && index < activeIndex;\r\n const isActive = activeIndex > -1 && index === activeIndex;\r\n // const isPending = !isCompleted && !isActive;\r\n const isStepDisabled =\r\n disabled || step.disabled === true || getStepDisabled?.(step, index) === true;\r\n const isClickable = !!onChange && !isStepDisabled;\r\n\r\n const indicatorBackground = isCompleted\r\n ? t.indicator.completedBackground\r\n : isActive\r\n ? t.indicator.activeBackground\r\n : t.indicator.pendingBackground;\r\n const indicatorBorder = isCompleted\r\n ? t.indicator.completedBorder\r\n : isActive\r\n ? t.indicator.activeBorder\r\n : t.indicator.pendingBorder;\r\n const indicatorColor = isCompleted\r\n ? t.indicator.completedColor\r\n : isActive\r\n ? t.indicator.activeColor\r\n : t.indicator.pendingColor;\r\n const labelColor = isCompleted\r\n ? t.label.completedColor\r\n : isActive\r\n ? t.label.activeColor\r\n : t.label.pendingColor;\r\n\r\n return (\r\n <React.Fragment key={step.value}>\r\n <button\r\n type=\"button\"\r\n role=\"listitem\"\r\n aria-current={isActive ? \"step\" : undefined}\r\n aria-label={step.label}\r\n disabled={!isClickable}\r\n onClick={() => {\r\n if (isClickable) onChange(step.value);\r\n }}\r\n style={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: t.stepGap,\r\n background: \"transparent\",\r\n border: \"none\",\r\n padding: 0,\r\n margin: 0,\r\n cursor: isStepDisabled ? \"not-allowed\" : isClickable ? \"pointer\" : \"default\",\r\n opacity: isStepDisabled && !isComponentDisabled ? 0.5 : 1,\r\n }}\r\n >\r\n <span\r\n aria-hidden\r\n style={{\r\n width: t.indicator.size,\r\n height: t.indicator.size,\r\n minWidth: t.indicator.size,\r\n borderRadius: \"50%\",\r\n border: `${t.indicator.borderWidth} solid ${indicatorBorder}`,\r\n backgroundColor: indicatorBackground,\r\n color: indicatorColor,\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n fontFamily: t.indicator.fontFamily,\r\n fontSize: t.indicator.fontSize,\r\n fontWeight: t.indicator.fontWeight,\r\n lineHeight: t.indicator.lineHeight,\r\n boxSizing: \"border-box\",\r\n }}\r\n >\r\n {isCompleted ? \"\\u2713\" : index + 1}\r\n </span>\r\n <span\r\n style={{\r\n color: labelColor,\r\n fontFamily: t.label.fontFamily,\r\n fontSize: t.label.fontSize,\r\n fontWeight: t.label.fontWeight,\r\n lineHeight: t.label.lineHeight,\r\n whiteSpace: \"nowrap\",\r\n }}\r\n >\r\n {step.label}\r\n </span>\r\n </button>\r\n {index < steps.length - 1 ? (\r\n <span\r\n aria-hidden\r\n style={{\r\n width: t.line.width,\r\n height: t.line.height,\r\n backgroundColor: isCompleted ? t.line.completedBackground : t.line.pendingBackground,\r\n display: \"inline-block\",\r\n borderRadius: t.line.height,\r\n }}\r\n />\r\n ) : null}\r\n </React.Fragment>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { useTokens } from \"../../ThemeProvider/ThemeContext\";\r\nimport { getAccordionTokensFromResolved } from \"../../tokens\";\r\nimport type { AccordionProps } from \"./Accordion.types\";\r\n\r\nexport const Accordion = ({\r\n title,\r\n subtitle,\r\n children,\r\n expanded,\r\n defaultExpanded = false,\r\n onToggle,\r\n disabled = false,\r\n showStatusIcon = true,\r\n showActionIcon = true,\r\n actionLabel = \"Edit section\",\r\n onActionClick,\r\n style,\r\n ...rest\r\n}: AccordionProps) => {\r\n const resolvedTokens = useTokens();\r\n const t = getAccordionTokensFromResolved(resolvedTokens);\r\n\r\n const isControlled = typeof expanded === \"boolean\";\r\n const [internalExpanded, setInternalExpanded] = React.useState(defaultExpanded);\r\n const [isHovered, setIsHovered] = React.useState(false);\r\n const [contentHeight, setContentHeight] = React.useState(\"0px\");\r\n const contentInnerRef = React.useRef<HTMLDivElement>(null);\r\n const isExpanded = isControlled ? expanded : internalExpanded;\r\n\r\n React.useEffect(() => {\r\n const nextHeight = contentInnerRef.current?.scrollHeight ?? 0;\r\n setContentHeight(`${nextHeight}px`);\r\n }, [isExpanded, children]);\r\n\r\n const toggleExpanded = () => {\r\n if (disabled) return;\r\n const next = !isExpanded;\r\n if (!isControlled) setInternalExpanded(next);\r\n onToggle?.(next);\r\n };\r\n\r\n const headerBackground = isExpanded\r\n ? t.header.expandedBackground\r\n : isHovered\r\n ? t.header.hoverBackground\r\n : t.header.defaultBackground;\r\n\r\n return (\r\n <div\r\n style={{\r\n width: t.container.width,\r\n border: `${t.container.borderWidth} solid ${t.container.borderColor}`,\r\n borderRadius: t.container.borderRadius,\r\n overflow: \"hidden\",\r\n backgroundColor: t.container.background,\r\n ...style,\r\n }}\r\n {...rest}\r\n >\r\n <div\r\n role=\"button\"\r\n tabIndex={disabled ? -1 : 0}\r\n aria-expanded={isExpanded}\r\n aria-disabled={disabled}\r\n onClick={toggleExpanded}\r\n onKeyDown={(event) => {\r\n if (disabled) return;\r\n if (event.key === \"Enter\" || event.key === \" \") {\r\n event.preventDefault();\r\n toggleExpanded();\r\n }\r\n }}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n style={{\r\n width: \"100%\",\r\n backgroundColor: headerBackground,\r\n border: \"none\",\r\n borderBottom:\r\n isExpanded && children\r\n ? `${t.container.borderWidth} solid ${t.container.borderColor}`\r\n : \"none\",\r\n padding: t.header.padding,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: t.header.gap,\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n textAlign: \"left\",\r\n }}\r\n >\r\n <span\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: t.header.contentGap,\r\n minWidth: 0,\r\n flex: 1,\r\n }}\r\n >\r\n {showStatusIcon ? (\r\n <span\r\n aria-hidden\r\n style={{\r\n width: t.statusIcon.size,\r\n height: t.statusIcon.size,\r\n minWidth: t.statusIcon.size,\r\n borderRadius: \"50%\",\r\n backgroundColor: t.statusIcon.background,\r\n color: t.statusIcon.color,\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n fontSize: t.statusIcon.fontSize,\r\n lineHeight: t.statusIcon.lineHeight,\r\n fontWeight: t.statusIcon.fontWeight,\r\n }}\r\n >\r\n {t.statusIcon.symbol}\r\n </span>\r\n ) : null}\r\n\r\n <span style={{ display: \"flex\", flexDirection: \"column\", minWidth: 0 }}>\r\n <span\r\n style={{\r\n color: t.title.color,\r\n fontFamily: t.title.fontFamily,\r\n fontSize: t.title.fontSize,\r\n fontWeight: t.title.fontWeight,\r\n lineHeight: t.title.lineHeight,\r\n }}\r\n >\r\n {title}\r\n </span>\r\n {subtitle ? (\r\n <span\r\n style={{\r\n color: t.subtitle.color,\r\n fontFamily: t.subtitle.fontFamily,\r\n fontSize: t.subtitle.fontSize,\r\n fontStyle: t.subtitle.fontStyle,\r\n fontWeight: t.subtitle.fontWeight,\r\n lineHeight: t.subtitle.lineHeight,\r\n }}\r\n >\r\n {subtitle}\r\n </span>\r\n ) : null}\r\n </span>\r\n </span>\r\n\r\n {showActionIcon ? (\r\n <button\r\n type=\"button\"\r\n aria-label={actionLabel}\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n onActionClick?.(event);\r\n }}\r\n style={{\r\n width: t.actionIcon.size,\r\n height: t.actionIcon.size,\r\n minWidth: t.actionIcon.size,\r\n border: \"none\",\r\n background: \"transparent\",\r\n color: t.actionIcon.color,\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n padding: \"0\",\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n }}\r\n >\r\n <svg\r\n width={t.actionIcon.size}\r\n height={t.actionIcon.size}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden\r\n >\r\n <path\r\n d=\"M14.06 4.94L19.06 9.94M5 19H10L20.06 8.94C20.651 8.34911 20.9831 7.54761 20.9831 6.712C20.9831 5.87639 20.651 5.07489 20.06 4.484C19.4691 3.89311 18.6676 3.56102 17.832 3.56102C16.9964 3.56102 16.1949 3.89311 15.604 4.484L5.544 14.544C5.189 14.899 5 15.38 5 15.882V19Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth={t.actionIcon.strokeWidth}\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n ) : null}\r\n </div>\r\n\r\n {children ? (\r\n <div\r\n aria-hidden={!isExpanded}\r\n style={{\r\n maxHeight: isExpanded ? contentHeight : \"0px\",\r\n opacity: isExpanded ? 1 : 0,\r\n overflow: \"hidden\",\r\n transition: \"max-height 280ms ease, opacity 220ms ease\",\r\n willChange: \"max-height, opacity\",\r\n }}\r\n >\r\n <div\r\n ref={contentInnerRef}\r\n style={{\r\n padding: t.content.padding,\r\n backgroundColor: t.content.background,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n};\r\n","import type { CSSProperties } from 'react';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport { getStatCardTokensFromResolved } from '../../tokens';\r\nimport type { StatCardProps } from './StatCard.types';\r\n\r\nfunction InfoIcon() {\r\n return (\r\n <svg\r\n width=\"12\"\r\n height=\"12\"\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden\r\n >\r\n <circle cx=\"6\" cy=\"6\" r=\"5.25\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\r\n <path d=\"M6 5.2V8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\r\n <circle cx=\"6\" cy=\"3.55\" r=\"0.75\" fill=\"currentColor\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction defaultAriaLabel(\r\n label: StatCardProps['label'],\r\n value: StatCardProps['value'],\r\n infoNote?: string\r\n) {\r\n if (typeof label === 'string' || typeof label === 'number') {\r\n if (typeof value === 'string' || typeof value === 'number') {\r\n return infoNote ? `${label}: ${value}. ${infoNote}` : `${label}: ${value}`;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nexport const StatCard = ({\r\n label,\r\n infoNote,\r\n value,\r\n accentColor,\r\n iconBackgroundColor,\r\n icon,\r\n ariaLabel,\r\n className,\r\n style,\r\n}: StatCardProps) => {\r\n const resolvedTokens = useTokens();\r\n const t = getStatCardTokensFromResolved(resolvedTokens);\r\n\r\n const mixPercent = `${t.iconWellAccentMixPercent}%`;\r\n const iconWellStyle = {\r\n ['--stat-accent' as string]: accentColor,\r\n ['--stat-well-base' as string]: t.surfaceBackground,\r\n width: t.iconWellSize,\r\n height: t.iconWellSize,\r\n borderRadius: t.iconWellBorderRadius,\r\n flexShrink: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginLeft: '-2px',\r\n background:\r\n iconBackgroundColor ??\r\n `color-mix(in srgb, var(--stat-accent) ${mixPercent}, var(--stat-well-base))`,\r\n } as CSSProperties;\r\n\r\n const computedAria = ariaLabel ?? defaultAriaLabel(label, value, infoNote);\r\n\r\n return (\r\n <div\r\n className={className}\r\n role=\"group\"\r\n aria-label={computedAria}\r\n style={{\r\n boxSizing: 'border-box',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n gap: t.gap,\r\n padding: t.padding,\r\n backgroundColor: t.surfaceBackground,\r\n border: t.border,\r\n borderRadius: t.borderRadius,\r\n ...style,\r\n }}\r\n >\r\n <div style={iconWellStyle}>\r\n <div\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: accentColor,\r\n lineHeight: 0,\r\n }}\r\n >\r\n {icon}\r\n </div>\r\n </div>\r\n <div\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flex: 1,\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n minWidth: 0,\r\n fontFamily: resolvedTokens.semantic?.typography?.body?.medium?.fontFamily,\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '4px',\r\n width: '100%',\r\n minWidth: 0,\r\n }}\r\n >\r\n <span\r\n style={{\r\n flex: 1,\r\n fontSize: t.labelFontSize,\r\n fontWeight: t.labelFontWeight,\r\n color: t.labelColor,\r\n lineHeight: 1.2,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n }}\r\n >\r\n {label}\r\n </span>\r\n {infoNote ?\r\n <span\r\n title={infoNote}\r\n aria-label={infoNote}\r\n tabIndex={0}\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: t.labelColor,\r\n opacity: 0.72,\r\n cursor: 'pointer',\r\n flexShrink: 0,\r\n lineHeight: 0,\r\n }}\r\n >\r\n <InfoIcon />\r\n </span>\r\n : null}\r\n </div>\r\n <span\r\n style={{\r\n fontSize: t.valueFontSize,\r\n fontWeight: t.valueFontWeight,\r\n color: t.valueColor,\r\n lineHeight: 1.2,\r\n }}\r\n >\r\n {value}\r\n </span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport Icon from '@mui/material/Icon';\r\nimport type { ReportCardProps } from './ReportCard.types';\r\nimport { getReportCardTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\n\r\nexport const ReportCard = ({\r\n title,\r\n icon,\r\n items,\r\n onItemClick,\r\n highlightedItemId,\r\n style,\r\n className,\r\n}: ReportCardProps) => {\r\n const resolvedTokens = useTokens();\r\n const t = getReportCardTokensFromResolved(resolvedTokens);\r\n const renderedIcon =\r\n typeof icon === 'string' ?\r\n <Icon\r\n style={{\r\n color: t.headerColor,\r\n fontSize: 16,\r\n display: 'block',\r\n }}\r\n >\r\n {icon}\r\n </Icon>\r\n : icon;\r\n\r\n return (\r\n <div\r\n className={className}\r\n style={{\r\n backgroundColor: t.bodyBackground,\r\n borderRadius: t.borderRadius,\r\n overflow: 'hidden',\r\n boxShadow: t.shadow,\r\n ...style,\r\n }}\r\n >\r\n {/* Header */}\r\n <div\r\n style={{\r\n backgroundColor: t.headerBackground,\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 10,\r\n padding: '14px 18px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: t.headerColor,\r\n background: `color-mix(in srgb, ${t.headerColor} 15%, transparent)`,\r\n padding: 4,\r\n borderRadius: 6,\r\n fontSize: 16,\r\n lineHeight: 1,\r\n }}\r\n >\r\n {renderedIcon}\r\n </span>\r\n <span\r\n style={{\r\n fontSize: 15,\r\n fontWeight: 600,\r\n color: t.headerColor,\r\n letterSpacing: 0.2,\r\n }}\r\n >\r\n {title}\r\n </span>\r\n </div>\r\n\r\n {/* Body */}\r\n <div style={{ display: 'flex', padding: '16px 18px' }}>\r\n {/* Left vertical divider */}\r\n <div\r\n style={{\r\n width: 2,\r\n backgroundColor: t.dividerColor,\r\n borderRadius: 2,\r\n flexShrink: 0,\r\n marginRight: 16,\r\n alignSelf: 'stretch',\r\n minHeight: '100%',\r\n }}\r\n />\r\n {/* Items */}\r\n <ul\r\n style={{\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: 12,\r\n }}\r\n >\r\n {items.map((item) => (\r\n <ReportCardItem\r\n key={item.id}\r\n label={item.label}\r\n bulletColor={t.bulletColor}\r\n itemColor={t.itemColor}\r\n itemHoverColor={t.itemHoverColor}\r\n highlighted={\r\n highlightedItemId != null && String(item.id) === String(highlightedItemId)\r\n }\r\n onClick={onItemClick ? () => onItemClick(item) : undefined}\r\n />\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nfunction ReportCardItem({\r\n label,\r\n bulletColor,\r\n itemColor,\r\n itemHoverColor,\r\n highlighted,\r\n onClick,\r\n}: {\r\n label: string;\r\n bulletColor: string;\r\n itemColor: string;\r\n itemHoverColor: string;\r\n highlighted?: boolean;\r\n onClick?: () => void;\r\n}) {\r\n const [hovered, setHovered] = React.useState(false);\r\n\r\n return (\r\n <li\r\n onClick={onClick}\r\n onMouseEnter={() => setHovered(true)}\r\n onMouseLeave={() => setHovered(false)}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 10,\r\n cursor: onClick ? 'pointer' : 'default',\r\n borderRadius: 6,\r\n padding: highlighted ? '2px 6px' : '2px 6px',\r\n margin: highlighted ? '0 -6px' : '0 -6px',\r\n backgroundColor: highlighted ? 'rgba(82, 118, 10, 0.18)' : 'transparent',\r\n transition: 'background-color 0.4s',\r\n }}\r\n >\r\n <span\r\n style={{\r\n width: 8,\r\n height: 8,\r\n borderRadius: '50%',\r\n backgroundColor: bulletColor,\r\n flexShrink: 0,\r\n display: 'inline-block',\r\n }}\r\n />\r\n <span\r\n style={{\r\n fontSize: 13.5,\r\n color:\r\n highlighted ? '#52760A'\r\n : hovered ? itemHoverColor\r\n : itemColor,\r\n lineHeight: 1.4,\r\n transition: 'color 0.15s',\r\n fontWeight: highlighted ? 600 : undefined,\r\n }}\r\n >\r\n {label}\r\n </span>\r\n </li>\r\n );\r\n}\r\n","import type { CSSProperties } from 'react';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport type { SummaryCardProps, SummaryCardGridProps } from './SummaryCard.types';\r\n\r\nfunction defaultAriaLabel(title: string, value: string | number, subtitle?: string) {\r\n const valueText = typeof value === 'number' ? String(value) : value;\r\n return subtitle ? `${title}: ${valueText}. ${subtitle}` : `${title}: ${valueText}`;\r\n}\r\n\r\nexport const SummaryCard = ({\r\n title,\r\n value,\r\n subtitle,\r\n accentColor = '#52760A',\r\n valueColor = '#111827',\r\n iconBackgroundColor,\r\n icon,\r\n ariaLabel,\r\n className,\r\n style,\r\n}: SummaryCardProps) => {\r\n const resolvedTokens = useTokens();\r\n const resolvedIconBg = iconBackgroundColor ?? `color-mix(in srgb, ${accentColor} 18%, #ffffff)`;\r\n const bodyFontFamily =\r\n resolvedTokens.semantic?.typography?.body?.medium?.fontFamily ??\r\n resolvedTokens.semantic?.typography?.label?.md?.fontFamily ??\r\n 'Inter, sans-serif';\r\n const titleColor = resolvedTokens.semantic?.color?.text?.muted ?? '#5b6471';\r\n const cardBorderColor = resolvedTokens.semantic?.color?.secondary?.default ?? '#d8e0eb';\r\n const cardRadius = resolvedTokens.foundation?.radius?.lg ?? '12px';\r\n const cardBackground = resolvedTokens.semantic?.color?.bg?.primary ?? '#ffffff';\r\n\r\n return (\r\n <article\r\n className={className}\r\n role=\"group\"\r\n aria-label={ariaLabel ?? defaultAriaLabel(title, value, subtitle)}\r\n style={{\r\n boxSizing: 'border-box',\r\n background: cardBackground,\r\n border: `1px solid ${cardBorderColor}`,\r\n borderRadius: cardRadius,\r\n minHeight: '88px',\r\n padding: '10px 12px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n width: '100%',\r\n ...style,\r\n }}\r\n >\r\n {icon ?\r\n <div\r\n style={{\r\n width: '44px',\r\n height: '44px',\r\n borderRadius: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n backgroundColor: resolvedIconBg,\r\n color: accentColor,\r\n }}\r\n >\r\n {icon}\r\n </div>\r\n : null}\r\n <div style={{ minWidth: 0, flex: 1, fontFamily: bodyFontFamily }}>\r\n <p\r\n style={{\r\n margin: 0,\r\n color: titleColor,\r\n fontSize: '13px',\r\n lineHeight: '16px',\r\n fontWeight: 600,\r\n width: 'auto',\r\n maxWidth: '100%',\r\n whiteSpace: 'normal',\r\n overflow: 'visible',\r\n textOverflow: 'unset',\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n {title}\r\n </p>\r\n <h3\r\n className=\"text-[18px] xl:text-[22px] leading-[1.3]\"\r\n style={{\r\n margin: '2px 0px 2px 0px',\r\n color: valueColor,\r\n fontWeight: 700,\r\n }}\r\n >\r\n {value}\r\n </h3>\r\n {subtitle ?\r\n <p\r\n style={{\r\n margin: 0,\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n fontWeight: 500,\r\n width: 'auto',\r\n maxWidth: '100%',\r\n whiteSpace: 'normal',\r\n overflow: 'visible',\r\n textOverflow: 'unset',\r\n wordBreak: 'break-word',\r\n color: accentColor,\r\n }}\r\n >\r\n {subtitle}\r\n </p>\r\n : null}\r\n </div>\r\n </article>\r\n );\r\n};\r\n\r\nexport const SummaryCardGrid = ({\r\n children,\r\n cardCount = 1,\r\n className,\r\n style,\r\n}: SummaryCardGridProps) => {\r\n const columns = Math.min(Math.max(cardCount, 1), 4);\r\n const gridStyle: CSSProperties = {\r\n display: 'grid',\r\n gap: '12px',\r\n width: '100%',\r\n gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,\r\n ...style,\r\n };\r\n\r\n return (\r\n <div className={className} style={gridStyle}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n","import {\r\n Children,\r\n cloneElement,\r\n isValidElement,\r\n type CSSProperties,\r\n type ReactElement,\r\n} from 'react';\r\nimport type { SectionIconProps, SectionIconSize, SectionIconVariant } from './SectionIcon.types';\r\n\r\nconst SIZE_TOKENS: Record<SectionIconSize, { box: number; icon: number; radius: number }> = {\r\n sm: { box: 24, icon: 14, radius: 6 },\r\n md: { box: 32, icon: 16, radius: 8 },\r\n lg: { box: 40, icon: 20, radius: 10 },\r\n xl: { box: 56, icon: 28, radius: 14 },\r\n};\r\n\r\nconst VARIANT_TOKENS: Record<SectionIconVariant, { background: string; color: string }> = {\r\n green: { background: '#E6F4E0', color: '#52760A' },\r\n blue: { background: '#E8EEFF', color: '#3B5BD9' },\r\n grey: { background: '#F1F2F5', color: '#4F5560' },\r\n red: { background: '#FCE6E6', color: '#C53030' },\r\n yellow: { background: '#FFF4D6', color: '#B27800' },\r\n};\r\n\r\n/**\r\n * SectionIcon\r\n *\r\n * A small decorative icon tile (rounded square) used in section headers\r\n * (e.g. \"View Receipt Report\" header on the fuel page). Renders any\r\n * `ReactNode` icon inside a coloured background, with the icon coloured\r\n * to match the chosen variant.\r\n */\r\nexport function SectionIcon({\r\n icon,\r\n variant = 'green',\r\n size = 'md',\r\n backgroundColor,\r\n color,\r\n borderRadius,\r\n ariaLabel,\r\n className,\r\n style,\r\n}: SectionIconProps) {\r\n const sizeTokens = SIZE_TOKENS[size];\r\n const variantTokens = VARIANT_TOKENS[variant];\r\n const resolvedBackground = backgroundColor ?? variantTokens.background;\r\n const resolvedColor = color ?? variantTokens.color;\r\n const resolvedRadius = borderRadius ?? sizeTokens.radius;\r\n\r\n const containerStyle: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: sizeTokens.box,\r\n height: sizeTokens.box,\r\n minWidth: sizeTokens.box,\r\n borderRadius: resolvedRadius,\r\n background: resolvedBackground,\r\n color: resolvedColor,\r\n ...style,\r\n };\r\n\r\n const renderIcon = () => {\r\n if (!isValidElement(icon)) return icon;\r\n const onlyChild = Children.only(icon) as ReactElement<{\r\n sx?: Record<string, unknown>;\r\n style?: CSSProperties;\r\n }>;\r\n const existingSx = (onlyChild.props.sx ?? {}) as Record<string, unknown>;\r\n return cloneElement(onlyChild, {\r\n sx: { fontSize: sizeTokens.icon, ...existingSx },\r\n style: { color: resolvedColor, ...(onlyChild.props.style ?? {}) },\r\n });\r\n };\r\n\r\n return (\r\n <span\r\n role={ariaLabel ? 'img' : undefined}\r\n aria-label={ariaLabel}\r\n aria-hidden={ariaLabel ? undefined : true}\r\n className={className}\r\n style={containerStyle}\r\n >\r\n {renderIcon()}\r\n </span>\r\n );\r\n}\r\n","import { useRef, type CSSProperties } from 'react';\r\n// import CloseIcon from '@mui/icons-material/Close';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\n// import { Button } from '../Button/Button';\r\nimport { TextField } from '../TextField/TextField';\r\n\r\nexport type CollapsibleSearchSize = 'sm' | 'md' | 'lg';\r\n\r\nexport interface CollapsibleSearchProps {\r\n /** Current search text (controlled). */\r\n value: string;\r\n /** Fires on every keystroke; parent decides whether to debounce. */\r\n onChange: (value: string) => void;\r\n /** Placeholder shown inside the input when open. */\r\n placeholder?: string;\r\n /** Width of the input when expanded. Defaults to 240. */\r\n width?: number;\r\n /** Size of the underlying TextField + Button. Defaults to \"sm\". */\r\n size?: CollapsibleSearchSize;\r\n /** Disable the control entirely. */\r\n disabled?: boolean;\r\n /** Optional className on the outer wrapper. */\r\n className?: string;\r\n /** Optional className on the toggle (search / close) icon button. */\r\n toggleClassName?: string;\r\n /** Optional inline style on the outer wrapper. */\r\n style?: CSSProperties;\r\n /**\r\n * Optional callback fired when the search panel toggles open or closed.\r\n * Useful if the parent wants to clear filters / refetch on close.\r\n */\r\n onToggle?: (open: boolean) => void;\r\n}\r\n\r\n/**\r\n * CollapsibleSearch\r\n *\r\n * Compact search affordance for crowded toolbars (e.g. the Summary Report and\r\n * Details Report tables on the fuel page). Renders as a single icon button\r\n * by default; on click the input slides in next to the icon (which becomes\r\n * a close button). Closing the panel clears the search value.\r\n */\r\nexport function CollapsibleSearch({\r\n value,\r\n onChange,\r\n placeholder = 'Search',\r\n // width = 240,\r\n size = 'sm',\r\n disabled,\r\n // className,\r\n // toggleClassName,\r\n // style,\r\n // onToggle,\r\n}: CollapsibleSearchProps) {\r\n // const [open, setOpen] = useState(false);\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n // useEffect(() => {\r\n // if (open) {\r\n // const id = window.requestAnimationFrame(() => inputRef.current?.focus());\r\n // return () => window.cancelAnimationFrame(id);\r\n // }\r\n // return undefined;\r\n // }, [open]);\r\n\r\n // const handleToggle = useCallback(() => {\r\n // setOpen((prev) => {\r\n // const next = !prev;\r\n // if (!next && value) onChange('');\r\n // onToggle?.(next);\r\n // return next;\r\n // });\r\n // }, [value, onChange, onToggle]);\r\n\r\n // const wrapperStyle: CSSProperties = {\r\n // display: 'inline-flex',\r\n // alignItems: 'center',\r\n // gap: 6,\r\n // ...style,\r\n // };\r\n\r\n // const inputWrapperStyle: CSSProperties = {\r\n // overflow: 'hidden',\r\n // transition: 'width 220ms ease, opacity 220ms ease',\r\n // width: open ? width : 0,\r\n // opacity: open ? 1 : 0,\r\n // pointerEvents: open ? 'auto' : 'none',\r\n // };\r\n\r\n return (\r\n // <div className={className} style={wrapperStyle}>\r\n // <div style={inputWrapperStyle}>\r\n <TextField\r\n inputRef={inputRef as React.Ref<HTMLInputElement>}\r\n value={value}\r\n onChange={(e) => onChange(e.target.value)}\r\n placeholder={placeholder}\r\n size={size}\r\n disabled={disabled}\r\n fullWidth\r\n startIcon={<SearchIcon sx={{ fontSize: 20 }} />}\r\n />\r\n // </div>\r\n // <Button\r\n // variant=\"grey\"\r\n // size={size}\r\n // iconOnly\r\n // className={toggleClassName}\r\n // aria-label={open ? 'Close search' : 'Open search'}\r\n // aria-expanded={open}\r\n // disabled={disabled}\r\n // onClick={handleToggle}\r\n // >\r\n // {open ?\r\n // <CloseIcon sx={{ fontSize: 18 }} />\r\n // : <SearchIcon sx={{ fontSize: 18 }} />}\r\n // </Button>\r\n // </div>\r\n );\r\n}\r\n","import { ResolvedTokens } from './index';\r\n\r\nexport interface ModalTokens {\r\n background: string;\r\n backdrop: {\r\n background: string;\r\n opacityVisible: string;\r\n opacityHidden: string;\r\n };\r\n radius: string;\r\n padding: string;\r\n title: {\r\n color: string;\r\n background?: string;\r\n typography: any;\r\n };\r\n size: {\r\n sm: { width: string };\r\n lg: { width: string };\r\n };\r\n}\r\n\r\nexport function getModalTokensFromResolved(resolved: ResolvedTokens): ModalTokens {\r\n return (\r\n (resolved.components?.modal as ModalTokens) || {\r\n background: '#fff',\r\n backdrop: {\r\n background: 'rgba(107, 114, 128, 0.75)',\r\n opacityVisible: '1',\r\n opacityHidden: '0',\r\n },\r\n radius: '16px',\r\n padding: '24px',\r\n title: {\r\n background: '#52760A',\r\n color: '#FFFFFF',\r\n typography: { fontSize: '16px', fontWeight: 600 },\r\n },\r\n size: { sm: { width: '550px' }, lg: { width: '1200px' } },\r\n }\r\n );\r\n}\r\n","let lockCount = 0;\r\nlet originalOverflow = '';\r\nlet originalPaddingRight = '';\r\n\r\n/**\r\n * Gets the width of the scrollbar in pixels.\r\n */\r\nfunction getScrollbarWidth() {\r\n if (typeof window === 'undefined') return 0;\r\n return window.innerWidth - document.documentElement.clientWidth;\r\n}\r\n\r\n/**\r\n * Locks the body scroll and adds padding to prevent layout shift.\r\n */\r\nexport function lockScroll() {\r\n if (typeof document === 'undefined') return;\r\n\r\n if (lockCount === 0) {\r\n const scrollbarWidth = getScrollbarWidth();\r\n originalOverflow = document.body.style.overflow;\r\n originalPaddingRight = document.body.style.paddingRight;\r\n\r\n document.body.style.overflow = 'hidden';\r\n if (scrollbarWidth > 0) {\r\n const currentPadding = parseFloat(getComputedStyle(document.body).paddingRight) || 0;\r\n document.body.style.paddingRight = `${currentPadding + scrollbarWidth}px`;\r\n }\r\n }\r\n lockCount++;\r\n}\r\n\r\n/**\r\n * Unlocks the body scroll if no more locks are active.\r\n */\r\nexport function unlockScroll() {\r\n if (typeof document === 'undefined') return;\r\n\r\n lockCount = Math.max(0, lockCount - 1);\r\n if (lockCount === 0) {\r\n document.body.style.overflow = originalOverflow;\r\n document.body.style.paddingRight = originalPaddingRight;\r\n }\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport { getModalTokensFromResolved } from '../../tokens/modal';\r\nimport { CloseButton } from '../CloseButton/CloseButton';\r\nimport { Button } from '../Button/Button';\r\nimport type { ModalProps } from './types';\r\nimport { lockScroll, unlockScroll } from '../../utils/scrollLock';\r\n\r\nconst DEFAULT_ALERT_ICON_COLOR = '#EF4444';\r\nconst DEFAULT_ALERT_ICON_BACKGROUND = '#FEE2E2';\r\nconst ALERT_TITLE_COLOR = '#111827';\r\nconst ALERT_DESC_COLOR = '#6B7280';\r\nconst LAPTOP_MAX_WIDTH = 1024;\r\n\r\nfunction useIsCompactScreen() {\r\n const [isCompact, setIsCompact] = useState(\r\n () => typeof window !== 'undefined' && window.innerWidth <= LAPTOP_MAX_WIDTH\r\n );\r\n\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia(`(max-width: ${LAPTOP_MAX_WIDTH}px)`);\r\n const update = () => setIsCompact(mediaQuery.matches);\r\n update();\r\n mediaQuery.addEventListener('change', update);\r\n return () => mediaQuery.removeEventListener('change', update);\r\n }, []);\r\n\r\n return isCompact;\r\n}\r\n\r\nfunction AlertRefreshIcon({ size = 28 }: { size?: number }) {\r\n return (\r\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden>\r\n <path\r\n d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n <path\r\n d=\"M21 3v5h-5\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n <path\r\n d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n <path\r\n d=\"M3 21v-5h5\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nexport const ModalComponent: React.FC<ModalProps> = ({\r\n title,\r\n size = 'sm',\r\n isOpen,\r\n onClose,\r\n children,\r\n className = '',\r\n headerId = 'modal-header-bg',\r\n style,\r\n modalWidth,\r\n modalsStatus,\r\n setModalsStatus,\r\n contentClass,\r\n title_background_color,\r\n text_color,\r\n borderRadius,\r\n variant = 'default',\r\n alertDescription = 'Are you sure you want to reset the form? All unsaved changes will be lost.',\r\n onAlertCancel,\r\n onAlertConfirm,\r\n alertCancelLabel = 'Cancel',\r\n alertConfirmLabel = 'Reset',\r\n alertConfirmLoading = false,\r\n alertIcon,\r\n alertIconColor = DEFAULT_ALERT_ICON_COLOR,\r\n alertIconBackgroundColor = DEFAULT_ALERT_ICON_BACKGROUND,\r\n alertConfirmVariant = 'blue',\r\n hideCloseButton = false,\r\n headerIcon,\r\n}) => {\r\n const resolvedTokens = useTokens();\r\n const tokens = getModalTokensFromResolved(resolvedTokens);\r\n\r\n const _isOpen = isOpen ?? modalsStatus ?? false;\r\n const _onClose = onClose ?? (() => setModalsStatus?.(false));\r\n\r\n const [renderState, setRenderState] = useState<'unmounted' | 'entering' | 'entered' | 'exiting'>(\r\n _isOpen ? 'entered' : 'unmounted'\r\n );\r\n const isCompactScreen = useIsCompactScreen();\r\n const closeButtonSize = isCompactScreen ? 'md' : 'lg';\r\n\r\n // Prevent background scrolling when open and handle animation state\r\n useEffect(() => {\r\n if (_isOpen) {\r\n lockScroll();\r\n setRenderState('entering');\r\n const timer = setTimeout(() => setRenderState('entered'), 10);\r\n return () => {\r\n clearTimeout(timer);\r\n unlockScroll();\r\n };\r\n } else {\r\n if (renderState !== 'unmounted') {\r\n setRenderState('exiting');\r\n const timer = setTimeout(() => setRenderState('unmounted'), 300);\r\n return () => clearTimeout(timer);\r\n }\r\n }\r\n }, [_isOpen]);\r\n\r\n if (renderState === 'unmounted') return null;\r\n\r\n const rawModalWidth = typeof modalWidth === 'object' ? modalWidth.width : modalWidth;\r\n const finalModalWidth =\r\n variant === 'alert' ?\r\n rawModalWidth || '420px'\r\n : rawModalWidth || tokens.size[size]?.width || '550px';\r\n\r\n const finalBackground = tokens.background;\r\n const finalRadius = borderRadius || tokens.radius;\r\n\r\n const variantTitleBackground =\r\n variant === 'error' ? '#F0645A'\r\n : variant === 'confirmation' ? '#52760a'\r\n : variant === 'alert' ? 'transparent'\r\n : tokens.title.background;\r\n const variantTitleColor =\r\n variant === 'confirmation' || variant === 'error' ? '#ffffff'\r\n : variant === 'alert' ? ALERT_TITLE_COLOR\r\n : tokens.title.color;\r\n\r\n const finalTitleBackground = title_background_color || variantTitleBackground || 'transparent';\r\n const finalTitleColor = text_color || variantTitleColor;\r\n\r\n let transformY = '0';\r\n if (renderState === 'entering') transformY = '-100vh';\r\n if (renderState === 'exiting') transformY = '-100vh';\r\n\r\n const bgOpacity =\r\n renderState === 'entering' || renderState === 'exiting' ?\r\n tokens.backdrop.opacityHidden\r\n : tokens.backdrop.opacityVisible;\r\n\r\n const handleAlertCancel = () => {\r\n (onAlertCancel ?? _onClose)();\r\n };\r\n\r\n const modalNode = (\r\n <>\r\n <div\r\n className=\"cpc-modal-backdrop\"\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n width: '100vw',\r\n height: '100vh',\r\n backgroundColor: tokens.backdrop.background,\r\n zIndex: 1200,\r\n opacity: Number(bgOpacity),\r\n transition: 'opacity 0.3s ease-in-out',\r\n }}\r\n />\r\n <div\r\n className={`cpc-modal-overlay ${className} ${contentClass || ''}`}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={headerId}\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n width: '100vw',\r\n height: '100vh',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n zIndex: 1210,\r\n ...style,\r\n }}\r\n >\r\n {/*\r\n Stop propagation so clicking inside the modal content\r\n doesn't trigger the overlay's onClose event\r\n */}\r\n <div\r\n className=\"cpc-modal-content\"\r\n onClick={(e) => e.stopPropagation()}\r\n style={{\r\n backgroundColor: finalBackground,\r\n borderRadius: finalRadius,\r\n width: '100%',\r\n maxWidth: finalModalWidth,\r\n maxHeight: '90vh',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\r\n margin: '1.75rem',\r\n transform: `translateY(${transformY})`,\r\n transition: 'transform 0.3s ease-in-out',\r\n }}\r\n >\r\n {variant === 'alert' ?\r\n <div style={{ position: 'relative', padding: '28px 32px 32px' }}>\r\n {!hideCloseButton && (\r\n <div style={{ position: 'absolute', top: 16, right: 16 }}>\r\n <CloseButton size={closeButtonSize} onClick={_onClose} aria-label=\"close\" />\r\n </div>\r\n )}\r\n <div\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n textAlign: 'center',\r\n gap: 16,\r\n paddingTop: 8,\r\n }}\r\n >\r\n <div\r\n aria-hidden\r\n style={{\r\n width: 56,\r\n height: 56,\r\n borderRadius: '50%',\r\n backgroundColor: alertIconBackgroundColor,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: alertIconColor,\r\n }}\r\n >\r\n {alertIcon ?? <AlertRefreshIcon size={28} />}\r\n </div>\r\n <h2\r\n id={headerId}\r\n className=\"cpc-modal-title m-0\"\r\n style={{\r\n fontSize: 20,\r\n fontWeight: 700,\r\n color: text_color || ALERT_TITLE_COLOR,\r\n margin: 0,\r\n lineHeight: 1.3,\r\n }}\r\n >\r\n {title}\r\n </h2>\r\n <p\r\n style={{\r\n margin: 0,\r\n fontSize: 15,\r\n fontWeight: 500,\r\n color: ALERT_DESC_COLOR,\r\n lineHeight: 1.5,\r\n maxWidth: 340,\r\n }}\r\n >\r\n {alertDescription}\r\n </p>\r\n <div\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n gap: 12,\r\n marginTop: 8,\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <Button\r\n variant=\"grey\"\r\n type=\"button\"\r\n disabled={alertConfirmLoading}\r\n onClick={handleAlertCancel}\r\n >\r\n {alertCancelLabel}\r\n </Button>\r\n <Button\r\n variant={alertConfirmVariant}\r\n type=\"button\"\r\n loading={alertConfirmLoading}\r\n onClick={() => onAlertConfirm?.()}\r\n >\r\n {alertConfirmLabel}\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n : <>\r\n {/* Header */}\r\n <div\r\n className=\"cpc-modal-header\"\r\n id={headerId}\r\n style={{\r\n backgroundColor: finalTitleBackground,\r\n color: finalTitleColor,\r\n padding: `${tokens.padding} ${tokens.padding} 16px ${tokens.padding}`,\r\n borderTopLeftRadius: finalRadius,\r\n borderTopRightRadius: finalRadius,\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n }}\r\n >\r\n <h5\r\n className=\"cpc-modal-title section_header m-0\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n fontSize: tokens.title.typography?.fontSize,\r\n fontWeight: tokens.title.typography?.fontWeight,\r\n lineHeight: tokens.title.typography?.lineHeight,\r\n color: finalTitleColor,\r\n margin: 0,\r\n }}\r\n >\r\n {(variant === 'error' || variant === 'confirmation' || headerIcon) && (\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '20px',\r\n height: '20px',\r\n borderRadius: '50%',\r\n fontSize: '12px',\r\n fontWeight: 700,\r\n lineHeight: 1,\r\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\r\n color: finalTitleColor,\r\n flexShrink: 0,\r\n }}\r\n >\r\n {headerIcon ?? (variant === 'confirmation' ? '✓' : '!')}\r\n </span>\r\n )}\r\n {title}\r\n </h5>\r\n {!hideCloseButton && (\r\n <CloseButton size={closeButtonSize} onClick={_onClose} aria-label=\"close\" />\r\n )}\r\n </div>\r\n <div\r\n className=\"content_dividers\"\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flex: '1 1 auto',\r\n minHeight: 0,\r\n overflow: 'hidden',\r\n }}\r\n >\r\n {/* Body */}\r\n <div\r\n className=\"\"\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flex: '1 1 auto',\r\n minHeight: 0,\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n }}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n </>\r\n );\r\n\r\n if (typeof document === 'undefined') return modalNode;\r\n return createPortal(modalNode, document.body);\r\n};\r\n\r\nexport default ModalComponent;\r\n","import type { ResolvedTokens } from './index';\r\n\r\nexport interface DrawerTokens {\r\n background: string;\r\n backdrop: {\r\n background: string;\r\n opacityVisible: string;\r\n opacityHidden: string;\r\n };\r\n radius: string;\r\n transitionDuration: string;\r\n size: {\r\n sm: { width: string };\r\n md: { width: string };\r\n lg: { width: string };\r\n };\r\n}\r\n\r\nexport function getDrawerTokensFromResolved(resolved: ResolvedTokens): DrawerTokens {\r\n return (\r\n (resolved.components?.drawer as DrawerTokens) || {\r\n background: '#fff',\r\n backdrop: {\r\n background: 'rgba(107, 114, 128, 0.75)',\r\n opacityVisible: '1',\r\n opacityHidden: '0',\r\n },\r\n radius: '16px',\r\n transitionDuration: '300ms',\r\n size: {\r\n sm: { width: '550px' },\r\n md: { width: '800px' },\r\n lg: { width: '1200px' },\r\n },\r\n }\r\n );\r\n}\r\n","import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport { getDrawerTokensFromResolved } from '../../tokens/drawer';\r\nimport type { DrawerProps, DrawerAnchor } from './Drawer.types';\r\nimport { lockScroll, unlockScroll } from '../../utils/scrollLock';\r\n\r\nconst ANCHOR_HORIZONTAL: DrawerAnchor[] = ['left', 'right'];\r\nconst ANCHOR_VERTICAL: DrawerAnchor[] = ['top', 'bottom'];\r\nconst MOBILE_MAX_WIDTH = 767;\r\n\r\nfunction useIsMobileScreen() {\r\n const [isMobile, setIsMobile] = useState(\r\n () => typeof window !== 'undefined' && window.innerWidth <= MOBILE_MAX_WIDTH\r\n );\r\n\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia(`(max-width: ${MOBILE_MAX_WIDTH}px)`);\r\n const update = () => setIsMobile(mediaQuery.matches);\r\n update();\r\n mediaQuery.addEventListener('change', update);\r\n return () => mediaQuery.removeEventListener('change', update);\r\n }, []);\r\n\r\n return isMobile;\r\n}\r\n\r\nconst BOX_SHADOW = '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)';\r\n\r\nfunction getTranslateValue(anchor: DrawerAnchor, isAnimating: boolean): string {\r\n if (!isAnimating) return '0';\r\n if (anchor === 'right' || anchor === 'bottom') return '100%';\r\n return '-100%';\r\n}\r\n\r\nfunction getResolvedWidth(\r\n width: string | number | undefined,\r\n sizeToken: { width: string } | undefined,\r\n fallback: string\r\n): string {\r\n if (width === undefined) return sizeToken?.width ?? fallback;\r\n return typeof width === 'number' ? `${width}px` : String(width);\r\n}\r\n\r\nconst DrawerComponent: React.FC<DrawerProps> = ({\r\n open,\r\n onClose,\r\n children,\r\n anchor = 'right',\r\n size = 'lg',\r\n width,\r\n className = '',\r\n disableBackdropClose = false,\r\n transitionDuration,\r\n}) => {\r\n const resolvedTokens = useTokens();\r\n const tokens = useMemo(() => getDrawerTokensFromResolved(resolvedTokens), [resolvedTokens]);\r\n const isMobileScreen = useIsMobileScreen();\r\n\r\n const [renderState, setRenderState] = useState<'unmounted' | 'entering' | 'entered' | 'exiting'>(\r\n open ? 'entered' : 'unmounted'\r\n );\r\n const needsUnmountRef = useRef(false);\r\n\r\n const durationMs = transitionDuration ?? 300;\r\n\r\n useEffect(() => {\r\n if (open) {\r\n lockScroll();\r\n setRenderState('entering');\r\n const t = setTimeout(() => setRenderState('entered'), 10);\r\n return () => {\r\n clearTimeout(t);\r\n unlockScroll();\r\n };\r\n }\r\n setRenderState((prev) => {\r\n if (prev === 'unmounted') return prev;\r\n needsUnmountRef.current = true;\r\n return 'exiting';\r\n });\r\n if (!needsUnmountRef.current) return;\r\n needsUnmountRef.current = false;\r\n const t = setTimeout(() => setRenderState('unmounted'), durationMs);\r\n return () => clearTimeout(t);\r\n }, [open, durationMs]);\r\n\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape' && open) onClose();\r\n };\r\n window.addEventListener('keydown', handleEscape);\r\n return () => window.removeEventListener('keydown', handleEscape);\r\n }, [open, onClose]);\r\n\r\n const handleStopPropagation = useCallback((e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n }, []);\r\n\r\n const isHorizontal = ANCHOR_HORIZONTAL.includes(anchor);\r\n const isAnimating = renderState === 'entering' || renderState === 'exiting';\r\n const translateValue = getTranslateValue(anchor, isAnimating);\r\n const resolvedWidth = getResolvedWidth(width, tokens.size[size], tokens.size.lg.width);\r\n const cornerRadius = isMobileScreen ? 0 : tokens.radius;\r\n\r\n const panelStyle = useMemo<React.CSSProperties>(\r\n () => ({\r\n position: 'fixed',\r\n top:\r\n ANCHOR_VERTICAL.includes(anchor) ?\r\n anchor === 'bottom' ?\r\n 'auto'\r\n : 0\r\n : 0,\r\n left:\r\n isHorizontal ?\r\n anchor === 'right' ?\r\n 'auto'\r\n : 0\r\n : 0,\r\n right:\r\n isHorizontal ?\r\n anchor === 'right' ?\r\n 0\r\n : 'auto'\r\n : 0,\r\n bottom:\r\n ANCHOR_VERTICAL.includes(anchor) ?\r\n anchor === 'bottom' ?\r\n 0\r\n : 'auto'\r\n : 0,\r\n maxWidth: isHorizontal ? resolvedWidth : '100%',\r\n width: '100%',\r\n height: isHorizontal ? '100%' : resolvedWidth,\r\n backgroundColor: tokens.background,\r\n boxShadow: BOX_SHADOW,\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n zIndex: 1030,\r\n transform: isHorizontal ? `translateX(${translateValue})` : `translateY(${translateValue})`,\r\n transition: `transform ${durationMs}ms ease-in-out`,\r\n borderTopLeftRadius: anchor === 'right' || anchor === 'bottom' ? cornerRadius : 0,\r\n borderBottomLeftRadius: anchor === 'right' ? cornerRadius : 0,\r\n borderTopRightRadius: anchor === 'left' || anchor === 'bottom' ? cornerRadius : 0,\r\n borderBottomRightRadius: anchor === 'left' ? cornerRadius : 0,\r\n }),\r\n [\r\n anchor,\r\n isHorizontal,\r\n resolvedWidth,\r\n tokens.background,\r\n cornerRadius,\r\n translateValue,\r\n durationMs,\r\n ]\r\n );\r\n\r\n const backdropStyle = useMemo<React.CSSProperties>(\r\n () => ({\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n width: '100vw',\r\n height: '100vh',\r\n backgroundColor: tokens.backdrop.background,\r\n zIndex: 1020,\r\n opacity: Number(isAnimating ? tokens.backdrop.opacityHidden : tokens.backdrop.opacityVisible),\r\n transition: 'opacity 0.3s ease-in-out',\r\n }),\r\n [isAnimating, tokens.backdrop]\r\n );\r\n\r\n if (renderState === 'unmounted') return null;\r\n\r\n return (\r\n <>\r\n <div\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n style={backdropStyle}\r\n onClick={disableBackdropClose ? undefined : onClose}\r\n />\r\n <div\r\n className={className}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n style={panelStyle}\r\n onClick={handleStopPropagation}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport const Drawer = memo(DrawerComponent);\r\n","import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\r\nimport type { PaginationProps as Props } from './Pagination.types';\r\nimport { getPaginationTokensFromResolved, getTokens } from '../../tokens';\r\nimport { ThemeContext } from '../../ThemeProvider/ThemeContext';\r\n\r\nconst MOBILE_MAX_WIDTH = 767;\r\n\r\nfunction useIsMobileScreen() {\r\n const [isMobile, setIsMobile] = useState(\r\n () => typeof window !== 'undefined' && window.innerWidth <= MOBILE_MAX_WIDTH\r\n );\r\n\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia(`(max-width: ${MOBILE_MAX_WIDTH}px)`);\r\n const update = () => setIsMobile(mediaQuery.matches);\r\n update();\r\n mediaQuery.addEventListener('change', update);\r\n return () => mediaQuery.removeEventListener('change', update);\r\n }, []);\r\n\r\n return isMobile;\r\n}\r\n\r\ntype RangeItem = number | 'ellipsis';\r\n\r\nfunction getCompactPaginationRange(page: number, count: number): RangeItem[] {\r\n if (count <= 3) {\r\n return Array.from({ length: count }, (_, i) => i + 1);\r\n }\r\n\r\n if (page <= 2) return [1, 2, 'ellipsis', count];\r\n if (page >= count - 1) return [1, 'ellipsis', count - 1, count];\r\n\r\n const out: RangeItem[] = [1, 'ellipsis', page];\r\n if (page + 1 < count) out.push(page + 1);\r\n if (page + 2 < count) out.push('ellipsis');\r\n out.push(count);\r\n return out;\r\n}\r\n\r\nfunction getPaginationRange(\r\n page: number,\r\n count: number,\r\n siblingCount: number,\r\n compact = false\r\n): RangeItem[] {\r\n if (count <= 0) return [];\r\n\r\n if (compact && count > 3) {\r\n return getCompactPaginationRange(page, count);\r\n }\r\n\r\n const totalVisible = 2 * siblingCount + 3; // current + 2*sibling + first + last\r\n if (count <= totalVisible) {\r\n return Array.from({ length: count }, (_, i) => i + 1);\r\n }\r\n const left = Math.max(1, page - siblingCount);\r\n const right = Math.min(count, page + siblingCount);\r\n const showLeftEllipsis = left > 2;\r\n const showRightEllipsis = right < count - 1;\r\n const out: RangeItem[] = [];\r\n out.push(1);\r\n if (showLeftEllipsis) out.push('ellipsis');\r\n for (let i = left; i <= right; i++) {\r\n if (i !== 1 && i !== count) out.push(i);\r\n }\r\n if (showRightEllipsis) out.push('ellipsis');\r\n if (count > 1) out.push(count);\r\n return out;\r\n}\r\n\r\nexport function Pagination({\r\n page,\r\n count,\r\n onPageChange,\r\n size = 'md',\r\n showFirstLast = true,\r\n siblingCount = 1,\r\n disabled = false,\r\n 'aria-label': ariaLabel = 'Pagination',\r\n}: Props) {\r\n const [hovered, setHovered] = useState<'first' | 'prev' | 'next' | 'last' | number | null>(null);\r\n const { brand, mode } = useContext(ThemeContext);\r\n const isMobileScreen = useIsMobileScreen();\r\n const tokens = useMemo(\r\n () =>\r\n getPaginationTokensFromResolved(\r\n getTokens({ brand, mode, screen: isMobileScreen ? 'mobile' : 'desktop' })\r\n ),\r\n [brand, mode, isMobileScreen]\r\n );\r\n const sizeToken =\r\n size === 'xs' ? tokens.sizeXs\r\n : size === 'sm' ? tokens.sizeSm\r\n : size === 'lg' ? tokens.sizeLg\r\n : tokens.sizeMd;\r\n const range = getPaginationRange(page, count, siblingCount, isMobileScreen);\r\n\r\n const handleFirst = useCallback(() => {\r\n if (!disabled && page > 1) onPageChange(1);\r\n }, [disabled, page, onPageChange]);\r\n\r\n const handlePrev = useCallback(() => {\r\n if (!disabled && page > 1) onPageChange(page - 1);\r\n }, [disabled, page, onPageChange]);\r\n\r\n const handleNext = useCallback(() => {\r\n if (!disabled && page < count) onPageChange(page + 1);\r\n }, [disabled, page, count, onPageChange]);\r\n\r\n const handleLast = useCallback(() => {\r\n if (!disabled && page < count) onPageChange(count);\r\n }, [disabled, page, count, onPageChange]);\r\n\r\n const canFirst = page > 1 && !disabled;\r\n const canPrev = page > 1 && !disabled;\r\n const canNext = page < count && !disabled;\r\n const canLast = page < count && !disabled;\r\n\r\n const fontSizeCss =\r\n typeof sizeToken?.fontSize === 'number' ?\r\n `${sizeToken.fontSize}px`\r\n : (sizeToken?.fontSize ?? '14px');\r\n\r\n const baseStyle: React.CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: isMobileScreen ? 0 : undefined,\r\n height: sizeToken?.height ?? '36px',\r\n minWidth: sizeToken?.minWidth ?? '36px',\r\n padding: sizeToken?.padding ?? '6px 12px',\r\n fontFamily: tokens.fontFamily,\r\n fontWeight: tokens.fontWeight,\r\n fontSize: fontSizeCss,\r\n borderRadius: sizeToken?.borderRadius ?? '50px',\r\n border: 'none',\r\n background: 'transparent',\r\n color: tokens.iconColor,\r\n cursor: disabled ? 'default' : 'pointer',\r\n opacity: disabled ? tokens.disabledOpacity : 1,\r\n transition: 'background 0.15s, color 0.15s',\r\n };\r\n\r\n const iconHover = hovered !== null && !disabled;\r\n const iconBg = iconHover ? tokens.hoverBackground : 'transparent';\r\n\r\n return (\r\n <nav\r\n role=\"navigation\"\r\n aria-label={ariaLabel}\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: isMobileScreen ? '2px' : tokens.gap,\r\n flexWrap: isMobileScreen ? 'nowrap' : 'wrap',\r\n maxWidth: isMobileScreen ? '100%' : undefined,\r\n overflowX: isMobileScreen ? 'auto' : undefined,\r\n }}\r\n >\r\n {showFirstLast && (\r\n <button\r\n type=\"button\"\r\n aria-label=\"Go to first page\"\r\n disabled={!canFirst}\r\n style={{\r\n ...baseStyle,\r\n background: hovered === 'first' ? iconBg : 'transparent',\r\n opacity: !canFirst ? tokens.disabledOpacity : baseStyle.opacity,\r\n }}\r\n onMouseEnter={() => setHovered('first')}\r\n onMouseLeave={() => setHovered(null)}\r\n onClick={handleFirst}\r\n >\r\n «\r\n </button>\r\n )}\r\n\r\n <button\r\n type=\"button\"\r\n aria-label=\"Go to previous page\"\r\n disabled={!canPrev}\r\n style={{\r\n ...baseStyle,\r\n background: hovered === 'prev' ? iconBg : 'transparent',\r\n opacity: !canPrev ? tokens.disabledOpacity : baseStyle.opacity,\r\n }}\r\n onMouseEnter={() => setHovered('prev')}\r\n onMouseLeave={() => setHovered(null)}\r\n onClick={handlePrev}\r\n >\r\n ‹\r\n </button>\r\n\r\n {range.map((item, idx) =>\r\n item === 'ellipsis' ?\r\n <span\r\n key={`ellipsis-${idx}`}\r\n style={{\r\n ...baseStyle,\r\n cursor: 'default',\r\n minWidth: isMobileScreen ? 'auto' : sizeToken?.minWidth,\r\n padding: isMobileScreen ? '4px' : baseStyle.padding,\r\n color: tokens.inactiveColor,\r\n }}\r\n aria-hidden\r\n >\r\n …\r\n </span>\r\n : <button\r\n key={item}\r\n type=\"button\"\r\n aria-label={item === page ? `Current page, page ${item}` : `Go to page ${item}`}\r\n aria-current={item === page ? 'page' : undefined}\r\n style={{\r\n ...baseStyle,\r\n background:\r\n item === page ? tokens.activeBackground\r\n : hovered === item ? tokens.hoverBackground\r\n : 'transparent',\r\n color: item === page ? tokens.activeColor : tokens.inactiveColor,\r\n }}\r\n onMouseEnter={() => setHovered(item)}\r\n onMouseLeave={() => setHovered(null)}\r\n onClick={() => !disabled && onPageChange(item)}\r\n >\r\n {item}\r\n </button>\r\n )}\r\n\r\n <button\r\n type=\"button\"\r\n aria-label=\"Go to next page\"\r\n disabled={!canNext}\r\n style={{\r\n ...baseStyle,\r\n background: hovered === 'next' ? iconBg : 'transparent',\r\n opacity: !canNext ? tokens.disabledOpacity : baseStyle.opacity,\r\n }}\r\n onMouseEnter={() => setHovered('next')}\r\n onMouseLeave={() => setHovered(null)}\r\n onClick={handleNext}\r\n >\r\n ›\r\n </button>\r\n\r\n {showFirstLast && (\r\n <button\r\n type=\"button\"\r\n aria-label=\"Go to last page\"\r\n disabled={!canLast}\r\n style={{\r\n ...baseStyle,\r\n background: hovered === 'last' ? iconBg : 'transparent',\r\n opacity: !canLast ? tokens.disabledOpacity : baseStyle.opacity,\r\n }}\r\n onMouseEnter={() => setHovered('last')}\r\n onMouseLeave={() => setHovered(null)}\r\n onClick={handleLast}\r\n >\r\n »\r\n </button>\r\n )}\r\n </nav>\r\n );\r\n}\r\n","import { ToggleButton } from '../ToggleButton/ToggleButton';\r\nimport { DateRangePicker } from '../DateRangePicker/DateRangePicker';\r\nimport type { PeriodSelectorProps } from './PeriodSelector.types';\r\n\r\nconst PERIOD_OPTIONS = [\r\n { label: '1M', value: '1m' },\r\n { label: '3M', value: '3m' },\r\n { label: '6M', value: '6m' },\r\n { label: '1Y', value: '1y' },\r\n { label: 'Custom', value: 'custom' },\r\n];\r\n\r\nexport const PeriodSelector = ({\r\n period,\r\n onPeriodChange,\r\n startDate,\r\n endDate,\r\n onStartDateChange,\r\n onEndDateChange,\r\n disabled = false,\r\n options = PERIOD_OPTIONS,\r\n}: PeriodSelectorProps) => {\r\n return (\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\r\n <ToggleButton\r\n options={options}\r\n value={period}\r\n onChange={onPeriodChange}\r\n disabled={disabled}\r\n size=\"sm\"\r\n />\r\n {period === 'custom' && (\r\n <DateRangePicker\r\n startDate={startDate || null}\r\n endDate={endDate || null}\r\n onChange={({ startDate: newStart, endDate: newEnd }) => {\r\n onStartDateChange?.(newStart);\r\n onEndDateChange?.(newEnd);\r\n }}\r\n startLabel=\"From\"\r\n endLabel=\"To\"\r\n disabled={disabled}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { useState, useRef, useEffect, useLayoutEffect, useCallback, useMemo } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { getSelectScrollTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport { Checkbox } from '../Checkbox/Checkbox';\r\nimport { lockScroll, unlockScroll } from '../../utils/scrollLock';\r\n\r\nconst LIST_MAX_HEIGHT = 300;\r\nconst NO_OPTIONS_TEXT = 'No options';\r\n\r\nexport type SelectScrollOption = string | { label?: string; [key: string]: unknown };\r\n\r\nexport interface SelectScrollProps<T = SelectScrollOption> {\r\n placeholder?: string;\r\n options?: T[];\r\n isDisabled?: boolean;\r\n onChange?: (value: T | null) => void;\r\n value?: T | null;\r\n required?: boolean;\r\n isOptionDisabled?: (option: T) => boolean;\r\n loading?: boolean;\r\n onScroll?: (e: React.UIEvent<HTMLUListElement>) => void;\r\n /** Called when list is scrolled near bottom (e.g. to load next page). Pass your API/loadMore function from parent. */\r\n onLoadMore?: () => void;\r\n /** API method to load more: (pageNum, append) => void. Use with loadMorePage, onLoadMorePageChange, loadMoreHasMore. */\r\n loadMoreMethod?: (pageNum: number, append: boolean) => void;\r\n /** Current page when using loadMoreMethod (parent state). */\r\n loadMorePage?: number;\r\n /** Callback when page changes (e.g. setPage from parent). */\r\n onLoadMorePageChange?: (nextPage: number) => void;\r\n /** Whether more data is available when using loadMoreMethod. */\r\n loadMoreHasMore?: boolean;\r\n label?: string;\r\n size?: 'sm' | 'md' | 'lg';\r\n getOptionLabel?: (option: T) => string;\r\n isInvalid?: boolean;\r\n error?: string;\r\n /** Shown below input when not in error state (when isInvalid is false). */\r\n helperText?: string;\r\n renderOption?: (option: T, state: { index: number }) => React.ReactNode;\r\n onInputChange?: (value: string) => void;\r\n customRenderOptionView?: (option: T) => React.ReactNode;\r\n onBlur?: (e: React.FocusEvent) => void;\r\n id?: string;\r\n noOptionsText?: string;\r\n loadingText?: string;\r\n style?: React.CSSProperties;\r\n /** Custom filter: (options, { inputValue, getOptionLabel }) => filtered options. When not provided, filters by input matching option label. */\r\n filterOptions?: (\r\n options: T[],\r\n state: { inputValue: string; getOptionLabel: (option: T) => string }\r\n ) => T[];\r\n /**\r\n * When true (default), options are treated as server-driven: no client-side label filtering.\r\n * Use `onApiSearch` for debounced backend search; pair with `onInputChange` if you need a ref to the latest typed value for scroll/load-more.\r\n */\r\n isApiSearch?: boolean;\r\n /** Debounce (ms) before calling `onApiSearch` after typing. Default 1000. Ignored when `isApiSearch` is false or `onApiSearch` is omitted. */\r\n apiSearchDebounceMs?: number;\r\n /** Called after debounce with the trimmed search string. Reset lists and fetch page 0 in the parent. */\r\n onApiSearch?: (searchTerm: string) => void;\r\n /** Background color variant */\r\n color?: 'grey' | 'white';\r\n /** Fires after mount is skipped; use for lazy load when `true` and cleanup when `false` (e.g. restore server list). */\r\n onOpenChange?: (open: boolean) => void;\r\n /** Shows clear (X) action and allows clearing when true. */\r\n clearable?: boolean;\r\n /** Custom equality for highlighting the selected option. Defaults to matching `value`/`id`, then label. */\r\n isOptionEqual?: (option: T, value: T) => boolean;\r\n}\r\n\r\nfunction getOptionLabelDefault(option: SelectScrollOption): string {\r\n if (typeof option === 'string') return option;\r\n return (option as { label?: string }).label ?? String(option);\r\n}\r\n\r\nfunction getOptionValueKey(option: SelectScrollOption): string | null {\r\n if (option == null) return null;\r\n if (typeof option !== 'object') return String(option);\r\n const record = option as { value?: unknown; id?: unknown };\r\n if (record.value != null && record.value !== '') return String(record.value);\r\n if (record.id != null && record.id !== '') return String(record.id);\r\n return null;\r\n}\r\n\r\nfunction areSelectOptionsEqual<T>(\r\n option: T,\r\n selected: T,\r\n getOptionLabel: (option: T) => string\r\n): boolean {\r\n if (option === selected) return true;\r\n if (typeof option !== 'object' || typeof selected !== 'object' || !option || !selected) {\r\n return getOptionLabel(option) === getOptionLabel(selected);\r\n }\r\n const optionKey = getOptionValueKey(option as SelectScrollOption);\r\n const selectedKey = getOptionValueKey(selected as SelectScrollOption);\r\n if (optionKey != null && selectedKey != null) return optionKey === selectedKey;\r\n return getOptionLabel(option) === getOptionLabel(selected);\r\n}\r\n\r\n// Memoized option row to avoid re-rendering all items when list updates\r\ninterface OptionItemProps<T = SelectScrollOption> {\r\n option: T;\r\n optionLabel: string;\r\n disabled: boolean;\r\n selected: boolean;\r\n index: number;\r\n onSelect: (option: T) => void;\r\n renderOption?: (option: T, state: { index: number }) => React.ReactNode;\r\n customRenderOptionView?: (option: T) => React.ReactNode;\r\n scrollTokens: ReturnType<typeof getSelectScrollTokensFromResolved>;\r\n}\r\n\r\nfunction OptionItemInner<T extends SelectScrollOption>(props: OptionItemProps<T>) {\r\n const {\r\n option,\r\n optionLabel,\r\n disabled,\r\n selected,\r\n index,\r\n onSelect,\r\n renderOption,\r\n customRenderOptionView,\r\n scrollTokens: tokens,\r\n } = props;\r\n\r\n const handleMouseDown = useCallback(\r\n (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n onSelect(option);\r\n },\r\n [option, onSelect]\r\n );\r\n const handleMouseEnter = useCallback(\r\n (e: React.MouseEvent<HTMLLIElement>) => {\r\n if (!disabled) e.currentTarget.style.backgroundColor = tokens.optionHoverBackground;\r\n },\r\n [disabled, tokens.optionHoverBackground]\r\n );\r\n\r\n const handleMouseLeave = useCallback((e: React.MouseEvent<HTMLLIElement>) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }, []);\r\n\r\n const itemStyle = useMemo(\r\n () => ({\r\n padding: tokens.optionPadding,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n opacity: disabled ? 0.6 : 1,\r\n backgroundColor: 'transparent',\r\n fontSize: tokens.optionFontSize,\r\n color: tokens.optionColor,\r\n listStyle: 'none' as const,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n }),\r\n [disabled, tokens.optionPadding, tokens.optionFontSize, tokens.optionColor]\r\n );\r\n\r\n return (\r\n <li\r\n role=\"option\"\r\n aria-disabled={disabled}\r\n aria-selected={selected}\r\n onMouseDown={handleMouseDown}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n style={itemStyle}\r\n >\r\n <span>\r\n {renderOption ?\r\n renderOption(option, { index })\r\n : customRenderOptionView ?\r\n customRenderOptionView(option)\r\n : optionLabel}\r\n </span>\r\n {selected && (\r\n <div style={{ marginLeft: 8, flexShrink: 0 }}>\r\n <Checkbox\r\n label=\"\"\r\n checked={selected}\r\n disabled={disabled}\r\n onChange={() => onSelect(option)}\r\n id={`select-scroll-checkbox-${index}`}\r\n />\r\n </div>\r\n )}\r\n </li>\r\n );\r\n}\r\n\r\nconst OptionItem = React.memo(OptionItemInner) as typeof OptionItemInner;\r\n\r\nfunction SelectScrollInner<T extends SelectScrollOption = SelectScrollOption>(\r\n props: SelectScrollProps<T>\r\n) {\r\n const {\r\n placeholder = 'Select...',\r\n options: optionsProp,\r\n isDisabled = false,\r\n onChange,\r\n value,\r\n required = false,\r\n isOptionDisabled,\r\n loading: loadingProp = false,\r\n onScroll: onScrollProp,\r\n onLoadMore: onLoadMoreProp,\r\n loadMoreMethod: loadMoreMethodProp,\r\n loadMorePage,\r\n onLoadMorePageChange,\r\n loadMoreHasMore = true,\r\n label,\r\n size = 'md',\r\n getOptionLabel = getOptionLabelDefault as (option: T) => string,\r\n isInvalid = false,\r\n error,\r\n helperText,\r\n renderOption,\r\n onInputChange,\r\n customRenderOptionView,\r\n onBlur,\r\n id,\r\n noOptionsText = NO_OPTIONS_TEXT,\r\n loadingText = 'Fetching more data...',\r\n style,\r\n filterOptions: filterOptionsProp,\r\n color = 'grey',\r\n onOpenChange,\r\n clearable = true,\r\n isApiSearch = true,\r\n apiSearchDebounceMs = 1000,\r\n onApiSearch,\r\n isOptionEqual,\r\n } = props;\r\n\r\n const onOpenChangeRef = useRef(onOpenChange);\r\n onOpenChangeRef.current = onOpenChange;\r\n const openChangeSkipMountRef = useRef(true);\r\n\r\n const [inputValue, setInputValue] = useState('');\r\n const [isTyping, setIsTyping] = useState(false);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [isHovering, setIsHovering] = useState(false);\r\n const [isFocused, setIsFocused] = useState(false);\r\n const [listboxPosition, setListboxPosition] = useState<{\r\n top: number;\r\n left: number;\r\n width: number;\r\n placement: 'up' | 'down';\r\n } | null>(null);\r\n const hasListboxPosition = Boolean(listboxPosition);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n // Used for dropdown positioning (must be the input area, not the whole component including label).\r\n const fieldAnchorRef = useRef<HTMLDivElement>(null);\r\n const listRef = useRef<HTMLUListElement | null>(null);\r\n const didSelectRef = useRef(false);\r\n const lastSelectedLabelRef = useRef<string>('');\r\n const mouseDownOnFieldRef = useRef(false);\r\n const listboxPositionRafRef = useRef<number | null>(null);\r\n const apiSearchInputRef = useRef('');\r\n const apiSearchTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n /** Tracks previous `value` so we only clear the input when a real selection was cleared, not on every re-render while searching (unstable `getOptionLabel` + `value === null`). */\r\n const prevControlledValueRef = useRef<T | null | undefined>(undefined);\r\n const getOptionLabelRef = useRef(getOptionLabel);\r\n getOptionLabelRef.current = getOptionLabel;\r\n\r\n const clearApiSearchTimer = useCallback(() => {\r\n if (apiSearchTimerRef.current) {\r\n clearTimeout(apiSearchTimerRef.current);\r\n apiSearchTimerRef.current = null;\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n return () => {\r\n clearApiSearchTimer();\r\n };\r\n }, [clearApiSearchTimer]);\r\n\r\n // Prevent background/page vertical scrolling while the dropdown list is open.\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n if (typeof document === 'undefined' || typeof window === 'undefined') return;\r\n\r\n lockScroll();\r\n\r\n return () => {\r\n unlockScroll();\r\n };\r\n }, [isOpen]);\r\n\r\n const options = useMemo(() => optionsProp ?? [], [optionsProp]);\r\n const loading = !!loadingProp;\r\n\r\n const useClientFilter = !isApiSearch;\r\n const searchString = useClientFilter && isTyping ? inputValue.toLowerCase() : '';\r\n\r\n const filterFn = useCallback(\r\n (option: T) => {\r\n const labelStr = getOptionLabel(option).toLowerCase();\r\n return labelStr.includes(searchString);\r\n },\r\n [searchString, getOptionLabel]\r\n );\r\n\r\n const filteredOptions = useMemo(() => {\r\n if (isApiSearch) {\r\n return filterOptionsProp ?\r\n filterOptionsProp(options, {\r\n inputValue: '',\r\n getOptionLabel,\r\n })\r\n : options;\r\n }\r\n return filterOptionsProp ?\r\n filterOptionsProp(options, {\r\n inputValue: searchString,\r\n getOptionLabel,\r\n })\r\n : options.filter(filterFn);\r\n }, [isApiSearch, filterOptionsProp, options, searchString, getOptionLabel, filterFn]);\r\n const noDataFound = useMemo(\r\n () => filteredOptions.length === 0 && !loading,\r\n [filteredOptions.length, loading]\r\n );\r\n\r\n const resolvedTokens = useTokens();\r\n const scrollTokens = getSelectScrollTokensFromResolved(resolvedTokens);\r\n const listboxGapPx = useMemo(() => {\r\n const raw = resolvedTokens?.foundation?.spacing?.['1'];\r\n const n =\r\n typeof raw === 'string' ? parseInt(raw.replace(/px$/i, ''), 10)\r\n : typeof raw === 'number' ? raw\r\n : NaN;\r\n return Number.isFinite(n) ? n : 0;\r\n }, [resolvedTokens]);\r\n\r\n const updateListboxPosition = useCallback(() => {\r\n const anchor = fieldAnchorRef.current;\r\n if (!anchor) return;\r\n\r\n const rect = anchor.getBoundingClientRect();\r\n const viewportHeight = Math.max(0, window.innerHeight || document.documentElement.clientHeight);\r\n\r\n const spaceBelow = viewportHeight - rect.bottom;\r\n const spaceAbove = rect.top;\r\n\r\n // Prefer the real list height whenever the list is mounted so placement matches\r\n // 1-row vs full lists (avoids choosing \"up\" using 300px then jumping when measured).\r\n const measuredHeight =\r\n listRef.current ?\r\n [\r\n listRef.current.clientHeight,\r\n listRef.current.offsetHeight,\r\n listRef.current.getBoundingClientRect().height,\r\n ].find((h) => typeof h === 'number' && h > 0)\r\n : undefined;\r\n const heightToUse =\r\n typeof measuredHeight === 'number' && measuredHeight > 0 ? measuredHeight : LIST_MAX_HEIGHT;\r\n\r\n const neededHeight = heightToUse;\r\n\r\n let placement: 'up' | 'down';\r\n if (spaceBelow >= neededHeight + listboxGapPx) {\r\n placement = 'down';\r\n } else if (spaceAbove >= neededHeight + listboxGapPx) {\r\n placement = 'up';\r\n } else {\r\n // If both sides are insufficient, pick whichever has more room.\r\n placement = spaceBelow >= spaceAbove ? 'down' : 'up';\r\n }\r\n\r\n let top: number;\r\n const maxTop = viewportHeight - heightToUse;\r\n if (placement === 'down') {\r\n const desiredTop = rect.bottom + listboxGapPx;\r\n top = Math.max(0, Math.min(desiredTop, maxTop));\r\n } else {\r\n const desiredTop = rect.top - listboxGapPx - heightToUse;\r\n top = Math.max(0, Math.min(desiredTop, maxTop));\r\n }\r\n\r\n setListboxPosition({\r\n top,\r\n left: rect.left,\r\n width: rect.width,\r\n placement,\r\n });\r\n }, [listboxGapPx]);\r\n\r\n const scheduleListboxPositionUpdate = useCallback(() => {\r\n if (listboxPositionRafRef.current != null) {\r\n cancelAnimationFrame(listboxPositionRafRef.current);\r\n }\r\n listboxPositionRafRef.current = requestAnimationFrame(() => {\r\n listboxPositionRafRef.current = null;\r\n updateListboxPosition();\r\n });\r\n }, [updateListboxPosition]);\r\n\r\n const setListRef = useCallback(\r\n (node: HTMLUListElement | null) => {\r\n listRef.current = node;\r\n if (node && isOpen) {\r\n // When the portal/list mounts, immediately re-position using the real list height.\r\n scheduleListboxPositionUpdate();\r\n }\r\n },\r\n [isOpen, scheduleListboxPositionUpdate]\r\n );\r\n\r\n const handleListScroll = useCallback(\r\n (e: React.UIEvent<HTMLUListElement>) => {\r\n const list = e.currentTarget;\r\n const nearBottom = list.scrollHeight - list.scrollTop <= list.clientHeight + 50;\r\n if (nearBottom) {\r\n if (\r\n loadMoreMethodProp &&\r\n loadMorePage != null &&\r\n onLoadMorePageChange &&\r\n loadMoreHasMore &&\r\n !loadingProp\r\n ) {\r\n const nextPage = loadMorePage + 1;\r\n loadMoreMethodProp(nextPage, true);\r\n onLoadMorePageChange(nextPage);\r\n } else {\r\n onLoadMoreProp?.();\r\n }\r\n }\r\n onScrollProp?.(e);\r\n },\r\n [\r\n onScrollProp,\r\n onLoadMoreProp,\r\n loadMoreMethodProp,\r\n loadMorePage,\r\n onLoadMorePageChange,\r\n loadMoreHasMore,\r\n loadingProp,\r\n ]\r\n );\r\n\r\n const handleInputChange = useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const v = e.target.value;\r\n setInputValue(v);\r\n setIsTyping(true);\r\n setIsOpen(true);\r\n onInputChange?.(v);\r\n\r\n if (clearable && v === '' && value != null) {\r\n lastSelectedLabelRef.current = '';\r\n prevControlledValueRef.current = null;\r\n onChange?.(null);\r\n }\r\n\r\n if (isApiSearch && onApiSearch) {\r\n apiSearchInputRef.current = v;\r\n clearApiSearchTimer();\r\n apiSearchTimerRef.current = setTimeout(() => {\r\n apiSearchTimerRef.current = null;\r\n const term = (apiSearchInputRef.current || '').trim();\r\n onApiSearch(term);\r\n }, apiSearchDebounceMs);\r\n }\r\n },\r\n [\r\n onInputChange,\r\n isApiSearch,\r\n onApiSearch,\r\n apiSearchDebounceMs,\r\n clearApiSearchTimer,\r\n clearable,\r\n value,\r\n onChange,\r\n ]\r\n );\r\n\r\n const handleSelect = useCallback(\r\n (option: T) => {\r\n if (isOptionDisabled?.(option)) return;\r\n const label = getOptionLabel(option);\r\n didSelectRef.current = true;\r\n lastSelectedLabelRef.current = label;\r\n if (isApiSearch && onApiSearch) {\r\n clearApiSearchTimer();\r\n }\r\n setInputValue(label);\r\n setIsTyping(false);\r\n setIsOpen(false);\r\n onChange?.(option);\r\n setTimeout(() => {\r\n didSelectRef.current = false;\r\n }, 0);\r\n },\r\n [onChange, getOptionLabel, isOptionDisabled, isApiSearch, onApiSearch, clearApiSearchTimer]\r\n );\r\n\r\n const handleFocus = useCallback(() => {\r\n setIsFocused(true);\r\n if (isDisabled) return;\r\n if (mouseDownOnFieldRef.current) return;\r\n setIsOpen(true);\r\n }, [isDisabled]);\r\n\r\n const handleFieldMouseDown = useCallback(() => {\r\n mouseDownOnFieldRef.current = true;\r\n }, []);\r\n\r\n const handleFieldClick = useCallback(\r\n (e: React.MouseEvent) => {\r\n mouseDownOnFieldRef.current = false;\r\n if (isDisabled) return;\r\n if ((e.target as HTMLElement).closest('button')) return;\r\n setIsOpen((prev) => !prev);\r\n },\r\n [isDisabled]\r\n );\r\n\r\n const handleBlurInternal = useCallback(\r\n (e: React.FocusEvent<HTMLInputElement>) => {\r\n setIsFocused(false);\r\n setIsTyping(false);\r\n // Don't clear when user just selected an option (blur can fire before parent updates value)\r\n if (didSelectRef.current) {\r\n didSelectRef.current = false;\r\n onBlur?.(e);\r\n return;\r\n }\r\n // Effective selection: use value from props, or last selected label (so click-outside doesn't clear)\r\n const valueLabel = value != null ? getOptionLabel(value) : lastSelectedLabelRef.current;\r\n const normalizedInput = inputValue.trim();\r\n if (normalizedInput === '') {\r\n if (!clearable) {\r\n // clearable=false means typed deletion/backspace should not remove selection.\r\n setInputValue(valueLabel);\r\n onBlur?.(e);\r\n return;\r\n }\r\n onChange?.(null);\r\n setInputValue('');\r\n lastSelectedLabelRef.current = '';\r\n } else if (inputValue !== valueLabel) {\r\n // User left partial/manual text: preserve the current selected option.\r\n setInputValue(valueLabel);\r\n }\r\n onBlur?.(e);\r\n },\r\n [value, inputValue, getOptionLabel, onChange, onBlur, clearable]\r\n );\r\n\r\n const handleClear = useCallback(\r\n (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n lastSelectedLabelRef.current = '';\r\n if (isApiSearch && onApiSearch) {\r\n clearApiSearchTimer();\r\n apiSearchInputRef.current = '';\r\n onApiSearch('');\r\n }\r\n setInputValue('');\r\n setIsTyping(false);\r\n setIsOpen(false);\r\n onChange?.(null);\r\n },\r\n [onChange, isApiSearch, onApiSearch, clearApiSearchTimer]\r\n );\r\n\r\n const handleArrowClick = useCallback(\r\n (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!isDisabled) setIsOpen((prev) => !prev);\r\n },\r\n [isDisabled]\r\n );\r\n\r\n const handleMouseEnterWrapper = useCallback(() => setIsHovering(true), []);\r\n const handleMouseLeaveWrapper = useCallback(() => setIsHovering(false), []);\r\n\r\n const preventDefault = useCallback((e: React.MouseEvent) => {\r\n e.preventDefault();\r\n }, []);\r\n const handleClearButtonMouseEnter = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (!isDisabled) {\r\n e.currentTarget.style.backgroundColor = scrollTokens.buttonHoverBackground;\r\n e.currentTarget.style.color = scrollTokens.buttonHoverColor;\r\n }\r\n },\r\n [isDisabled, scrollTokens.buttonHoverBackground, scrollTokens.buttonHoverColor]\r\n );\r\n const handleClearButtonMouseLeave = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n e.currentTarget.style.color = scrollTokens.buttonColor;\r\n },\r\n [scrollTokens.buttonColor]\r\n );\r\n const handleArrowButtonMouseEnter = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (!isDisabled) e.currentTarget.style.color = scrollTokens.buttonColor;\r\n },\r\n [isDisabled, scrollTokens.buttonColor]\r\n );\r\n const handleArrowButtonMouseLeave = useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.currentTarget.style.color = scrollTokens.buttonColor;\r\n },\r\n [scrollTokens.buttonColor]\r\n );\r\n\r\n useEffect(() => {\r\n if (isTyping) return;\r\n\r\n if (value != null) {\r\n if (prevControlledValueRef.current !== value) {\r\n const label = getOptionLabelRef.current(value);\r\n setInputValue(label);\r\n lastSelectedLabelRef.current = label;\r\n prevControlledValueRef.current = value;\r\n }\r\n return;\r\n }\r\n\r\n const hadSelection = prevControlledValueRef.current != null;\r\n prevControlledValueRef.current = null;\r\n\r\n if (hadSelection) {\r\n setInputValue('');\r\n lastSelectedLabelRef.current = '';\r\n return;\r\n }\r\n\r\n if (isApiSearch && onApiSearch) {\r\n return;\r\n }\r\n\r\n setInputValue('');\r\n lastSelectedLabelRef.current = '';\r\n }, [value, isApiSearch, onApiSearch, isTyping]);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (\r\n !containerRef.current?.contains(e.target as Node) &&\r\n !listRef.current?.contains(e.target as Node)\r\n ) {\r\n setIsOpen(false);\r\n }\r\n };\r\n const handleMouseUp = () => {\r\n mouseDownOnFieldRef.current = false;\r\n };\r\n document.addEventListener('mousedown', handleClickOutside);\r\n document.addEventListener('mouseup', handleMouseUp);\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n document.removeEventListener('mouseup', handleMouseUp);\r\n };\r\n }, []);\r\n\r\n useLayoutEffect(() => {\r\n if (!isOpen) {\r\n setIsTyping(false);\r\n setListboxPosition(null);\r\n return;\r\n }\r\n\r\n let active = true;\r\n updateListboxPosition();\r\n\r\n // Re-measure after mount (helps for the \"up\" case and shorter-than-max lists).\r\n // Use two rAFs to ensure the portal has rendered and layout has settled.\r\n const raf1 = window.requestAnimationFrame(() => {\r\n if (!active) return;\r\n window.requestAnimationFrame(() => {\r\n if (!active) return;\r\n updateListboxPosition();\r\n });\r\n });\r\n\r\n return () => {\r\n active = false;\r\n window.cancelAnimationFrame(raf1);\r\n };\r\n }, [isOpen, updateListboxPosition, filteredOptions.length, loading, noDataFound]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n if (value == null) return;\r\n const raf1 = window.requestAnimationFrame(() => {\r\n window.requestAnimationFrame(() => {\r\n if (!listRef.current) return;\r\n const selectedItem = listRef.current.querySelector('[aria-selected=\"true\"]');\r\n if (selectedItem) {\r\n (selectedItem as HTMLElement).scrollIntoView({\r\n block: 'nearest',\r\n behavior: 'auto',\r\n });\r\n }\r\n });\r\n });\r\n\r\n return () => {\r\n window.cancelAnimationFrame(raf1);\r\n };\r\n }, [isOpen, value]);\r\n\r\n /** Re-run when list height changes (async data, skeleton row, 1 vs many rows) without re-opening. */\r\n useLayoutEffect(() => {\r\n if (!isOpen || !hasListboxPosition) return;\r\n const el = listRef.current;\r\n if (!el || typeof ResizeObserver === 'undefined') return;\r\n const ro = new ResizeObserver(() => {\r\n scheduleListboxPositionUpdate();\r\n });\r\n ro.observe(el);\r\n return () => ro.disconnect();\r\n }, [\r\n isOpen,\r\n hasListboxPosition,\r\n scheduleListboxPositionUpdate,\r\n filteredOptions.length,\r\n loading,\r\n noDataFound,\r\n ]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) {\r\n if (isApiSearch && onApiSearch) {\r\n clearApiSearchTimer();\r\n if (apiSearchInputRef.current !== '') {\r\n apiSearchInputRef.current = '';\r\n onApiSearch('');\r\n }\r\n }\r\n }\r\n }, [isOpen, isApiSearch, onApiSearch, clearApiSearchTimer]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n const handleWindowChange = () => {\r\n scheduleListboxPositionUpdate();\r\n };\r\n\r\n window.addEventListener('resize', handleWindowChange);\r\n window.addEventListener('scroll', handleWindowChange, true);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleWindowChange);\r\n window.removeEventListener('scroll', handleWindowChange, true);\r\n };\r\n }, [isOpen, scheduleListboxPositionUpdate]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (listboxPositionRafRef.current != null) {\r\n cancelAnimationFrame(listboxPositionRafRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (openChangeSkipMountRef.current) {\r\n openChangeSkipMountRef.current = false;\r\n return;\r\n }\r\n onOpenChangeRef.current?.(isOpen);\r\n }, [isOpen]);\r\n\r\n const hasValue = value != null;\r\n const showClearButton =\r\n clearable && (isOpen || (isHovering && !isDisabled)) && (hasValue || inputValue !== '');\r\n // Reserve space for the right-side controls so the field doesn't \"shift\" when the clear (X) appears.\r\n const inputPaddingRight = 56;\r\n const inputHeight =\r\n size === 'sm' ? parseInt(scrollTokens.inputHeightSm, 10)\r\n : size === 'lg' ? parseInt(scrollTokens.inputHeightLg, 10)\r\n : parseInt(scrollTokens.inputHeightMd, 10);\r\n const inputPadding =\r\n size === 'sm' ? scrollTokens.inputPaddingSm\r\n : size === 'lg' ? scrollTokens.inputPaddingLg\r\n : scrollTokens.inputPaddingMd;\r\n const inputFontSize =\r\n size === 'sm' ? scrollTokens.inputFontSizeSm\r\n : size === 'lg' ? scrollTokens.inputFontSizeLg\r\n : scrollTokens.inputFontSizeMd;\r\n\r\n const containerStyle = useMemo(\r\n () => ({\r\n width: '100%',\r\n position: 'relative' as const,\r\n fontFamily: 'sans-serif',\r\n ...style,\r\n }),\r\n [style]\r\n );\r\n\r\n const inputStyle = useMemo(\r\n () => ({\r\n width: '100%',\r\n padding: inputPadding,\r\n paddingRight: inputPaddingRight,\r\n border:\r\n isInvalid ? scrollTokens.inputBorderError\r\n : isFocused ? scrollTokens.inputBorderActive\r\n : '1px solid #c7ced6',\r\n borderRadius: scrollTokens.inputBorderRadius,\r\n fontSize: inputFontSize,\r\n minHeight: inputHeight,\r\n boxSizing: 'border-box' as const,\r\n backgroundColor:\r\n color === 'white' ? scrollTokens.inputBackgroundWhite : scrollTokens.inputBackgroundWhite,\r\n outline: 'none',\r\n boxShadow: 'none',\r\n color: isDisabled ? scrollTokens.inputColor : scrollTokens.inputColor,\r\n }),\r\n [\r\n inputPaddingRight,\r\n inputPadding,\r\n inputFontSize,\r\n isInvalid,\r\n isFocused,\r\n inputHeight,\r\n isDisabled,\r\n scrollTokens,\r\n color,\r\n ]\r\n );\r\n\r\n const listboxStyle = useMemo(\r\n () => ({\r\n position: 'absolute' as const,\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n // background: scrollTokens.listboxBackground,\r\n background: '#ffffff',\r\n // border: scrollTokens.listboxBorder,\r\n border: '1px solid #c7ced6',\r\n borderRadius: scrollTokens.listboxBorderRadius,\r\n marginTop: 0,\r\n padding: 0,\r\n listStyle: 'none' as const,\r\n maxHeight: LIST_MAX_HEIGHT,\r\n overflowY: 'auto' as const,\r\n boxShadow: '0 4px 8px rgba(0,0,0,0.1)',\r\n zIndex: 1000002,\r\n }),\r\n [scrollTokens]\r\n );\r\n\r\n return (\r\n <div ref={containerRef} style={containerStyle}>\r\n <style>\r\n {`.select-scroll-input::placeholder {\r\n color: ${scrollTokens.placeholderColor};\r\n }\r\n .select-scroll-input:disabled::placeholder {\r\n color: #c7ced6;\r\n }\r\n .select-scroll-listbox {\r\n scrollbar-width: thin;\r\n scrollbar-color: #C8D0D5 transparent;\r\n }\r\n .select-scroll-listbox::-webkit-scrollbar {\r\n width: 8px;\r\n }\r\n .select-scroll-listbox::-webkit-scrollbar-track {\r\n background: transparent;\r\n border-radius: 4px;\r\n }\r\n .select-scroll-listbox::-webkit-scrollbar-thumb {\r\n background-color: #C8D0D5;\r\n border-radius: 4px;\r\n }\r\n .select-scroll-listbox::-webkit-scrollbar-thumb:hover {\r\n background-color: #B0B8BD;\r\n }\r\n .select-scroll-listbox::-webkit-scrollbar-button {\r\n display: none !important;\r\n width: 0 !important;\r\n height: 0 !important;\r\n }\r\n .select-scroll-listbox::-webkit-scrollbar-button:start:decrement,\r\n .select-scroll-listbox::-webkit-scrollbar-button:end:increment {\r\n display: none !important;\r\n }\r\n .select-scroll-listbox::-webkit-scrollbar-corner {\r\n background: transparent;\r\n }`}\r\n </style>\r\n {label && (\r\n <label\r\n onClick={(e) => {\r\n if (isDisabled) return;\r\n if (isOpen) {\r\n setIsOpen(false);\r\n } else {\r\n e.preventDefault();\r\n }\r\n }}\r\n style={{\r\n display: 'block',\r\n marginBottom: parseInt(scrollTokens.labelMarginBottom, 10),\r\n fontSize: scrollTokens.labelFontSize,\r\n fontWeight: scrollTokens.labelFontWeight,\r\n color: isDisabled ? scrollTokens.labelColor : scrollTokens.labelColor,\r\n cursor: 'default',\r\n }}\r\n >\r\n {label}\r\n {required && (\r\n <span style={{ color: scrollTokens.labelRequiredColor, marginRight: 4 }}>*</span>\r\n )}\r\n </label>\r\n )}\r\n <div\r\n style={{ position: 'relative' }}\r\n ref={fieldAnchorRef}\r\n onMouseEnter={handleMouseEnterWrapper}\r\n onMouseLeave={handleMouseLeaveWrapper}\r\n >\r\n <input\r\n id={id}\r\n type=\"text\"\r\n autoComplete=\"off\"\r\n placeholder={placeholder}\r\n value={inputValue}\r\n onChange={handleInputChange}\r\n onFocus={handleFocus}\r\n onMouseDown={handleFieldMouseDown}\r\n onClick={handleFieldClick}\r\n onBlur={handleBlurInternal}\r\n disabled={isDisabled}\r\n aria-invalid={isInvalid}\r\n aria-required={required}\r\n style={inputStyle}\r\n className=\"select-scroll-input\"\r\n />\r\n <div\r\n style={{\r\n position: 'absolute',\r\n right: 8,\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n zIndex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 2,\r\n }}\r\n >\r\n {showClearButton && (\r\n <button\r\n type=\"button\"\r\n onClick={handleClear}\r\n onMouseDown={preventDefault}\r\n disabled={isDisabled}\r\n aria-label=\"Clear selection\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 24,\r\n height: 24,\r\n padding: 0,\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: isDisabled ? 'not-allowed' : 'pointer',\r\n color: scrollTokens.buttonColor,\r\n borderRadius: '50%',\r\n }}\r\n onMouseEnter={handleClearButtonMouseEnter}\r\n onMouseLeave={handleClearButtonMouseLeave}\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"currentColor\">\r\n <path d=\"M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41z\" />\r\n </svg>\r\n </button>\r\n )}\r\n <button\r\n type=\"button\"\r\n onClick={handleArrowClick}\r\n onMouseDown={preventDefault}\r\n disabled={isDisabled}\r\n aria-label={isOpen ? 'Close dropdown' : 'Open dropdown'}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 24,\r\n height: 24,\r\n padding: 0,\r\n border: 'none',\r\n background: 'transparent',\r\n cursor: isDisabled ? 'not-allowed' : 'pointer',\r\n color: isDisabled ? scrollTokens.buttonColor : scrollTokens.buttonColor,\r\n transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',\r\n transition: 'transform 0.2s',\r\n }}\r\n onMouseEnter={handleArrowButtonMouseEnter}\r\n onMouseLeave={handleArrowButtonMouseLeave}\r\n >\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M4 6L8 10L12 6\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n {(isInvalid && error) || (!isInvalid && helperText) ?\r\n <div\r\n style={{\r\n fontSize: scrollTokens.helperFontSize,\r\n marginTop: 4,\r\n color:\r\n isInvalid ? scrollTokens.helperErrorColor\r\n : isDisabled ? scrollTokens.inputColor\r\n : scrollTokens.helperColor,\r\n }}\r\n role={isInvalid ? 'alert' : undefined}\r\n >\r\n {isInvalid && error ? error : helperText}\r\n </div>\r\n : null}\r\n {isOpen &&\r\n listboxPosition &&\r\n createPortal(\r\n <ul\r\n ref={setListRef}\r\n onScroll={handleListScroll}\r\n role=\"listbox\"\r\n aria-label={label ?? placeholder}\r\n style={{\r\n ...listboxStyle,\r\n position: 'fixed',\r\n top: listboxPosition.top,\r\n left: listboxPosition.left,\r\n width: listboxPosition.width,\r\n right: 'unset',\r\n }}\r\n className=\"select-scroll-listbox\"\r\n >\r\n {noDataFound && (\r\n <li\r\n style={{\r\n padding: scrollTokens.optionPadding,\r\n textAlign: 'center',\r\n color: scrollTokens.optionColor,\r\n fontSize: scrollTokens.optionFontSize,\r\n }}\r\n >\r\n {noOptionsText}\r\n </li>\r\n )}\r\n {!noDataFound &&\r\n filteredOptions.map((option, index) => {\r\n const disabled = isOptionDisabled?.(option) ?? false;\r\n const optionLabel = getOptionLabel(option);\r\n const isSelected =\r\n value !== undefined &&\r\n value !== null &&\r\n (isOptionEqual ?\r\n isOptionEqual(option, value)\r\n : areSelectOptionsEqual(option, value, getOptionLabel));\r\n const optionValueKey = getOptionValueKey(option as SelectScrollOption);\r\n const key = optionValueKey ?? `${optionLabel}-${index}`;\r\n return (\r\n <OptionItem\r\n key={key}\r\n option={option}\r\n optionLabel={optionLabel}\r\n disabled={disabled}\r\n selected={isSelected}\r\n index={index}\r\n onSelect={handleSelect}\r\n renderOption={renderOption}\r\n customRenderOptionView={customRenderOptionView}\r\n scrollTokens={scrollTokens}\r\n />\r\n );\r\n })}\r\n {loading && !noDataFound && (\r\n <li\r\n style={{\r\n padding: scrollTokens.optionPadding,\r\n textAlign: 'center',\r\n color: scrollTokens.optionColor,\r\n fontSize: scrollTokens.optionFontSize,\r\n }}\r\n >\r\n {loadingText}\r\n </li>\r\n )}\r\n </ul>,\r\n document.body\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nconst SelectScroll = React.memo(SelectScrollInner) as typeof SelectScrollInner;\r\nexport default SelectScroll;\r\n","import { ProgressProps } from \"./Progress.types\";\r\nimport { useTokens } from \"../../ThemeProvider/ThemeContext\";\r\nimport { getProgressTokensFromResolved } from \"../../tokens\";\r\n\r\nexport const Progress = ({\r\n color,\r\n className = \"\",\r\n variant = \"determinate\",\r\n value = 0,\r\n}: ProgressProps) => {\r\n const resolvedTokens = useTokens();\r\n const tokens = getProgressTokensFromResolved(resolvedTokens);\r\n\r\n const trackColor = tokens.trackBackground;\r\n const barColor = color ?? tokens.barBackground;\r\n const height = tokens.height;\r\n const borderRadius = tokens.borderRadius;\r\n\r\n const isIndeterminate = variant === \"indeterminate\";\r\n\r\n return (\r\n <div\r\n className={className}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <style>\r\n {`\r\n @keyframes progress-indeterminate-1 {\r\n 0% { left: -35%; width: 33%; }\r\n 60% { left: 100%; width: 45%; }\r\n 100% { left: 100%; width: 45%; }\r\n }\r\n @keyframes progress-indeterminate-2 {\r\n 0% { left: -100%; width: 90%; }\r\n 60% { left: 107%; width: 10%; }\r\n 100% { left: 107%; width: 10%; }\r\n }\r\n `}\r\n </style>\r\n <div\r\n style={{\r\n height: height,\r\n borderRadius: borderRadius,\r\n width: \"100%\",\r\n backgroundColor: trackColor,\r\n position: \"relative\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {!isIndeterminate ? (\r\n <div\r\n style={{\r\n height: \"100%\",\r\n borderRadius: borderRadius,\r\n backgroundColor: barColor,\r\n width: `${Math.min(Math.max(value, 0), 100)}%`,\r\n transition: \"width 0.4s ease\",\r\n }}\r\n />\r\n ) : (\r\n <>\r\n <div\r\n style={{\r\n height: \"100%\",\r\n borderRadius: borderRadius,\r\n backgroundColor: barColor,\r\n position: \"absolute\",\r\n animation:\r\n \"progress-indeterminate-1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite\",\r\n }}\r\n />\r\n <div\r\n style={{\r\n height: \"100%\",\r\n borderRadius: borderRadius,\r\n backgroundColor: barColor,\r\n position: \"absolute\",\r\n animation:\r\n \"progress-indeterminate-2 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite\",\r\n }}\r\n />\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import React, { useRef } from \"react\";\r\nimport { useTokens } from \"../../ThemeProvider/ThemeContext\";\r\nimport { TextField } from \"../TextField/TextField\";\r\nimport type {\r\n SegmentedInputFieldProps,\r\n SegmentedInputChangeContext,\r\n} from \"./SegmentedInputField.types\";\r\n\r\nexport const SegmentedInputField = ({\r\n values,\r\n onValuesChange,\r\n disabled = false,\r\n error = false,\r\n type = \"text\",\r\n size = \"lg\",\r\n className,\r\n containerClassName,\r\n inputClassName = \"otp-container-size\",\r\n inputMode,\r\n autoComplete,\r\n maxLength = 1,\r\n separator = null,\r\n showSeparator = false,\r\n getAriaLabel,\r\n sanitizeSegment = (v) => v,\r\n validateSegment = () => true,\r\n onSegmentKeyDown,\r\n onPasteValue,\r\n isSegmentComplete,\r\n}: SegmentedInputFieldProps) => {\r\n const inputRefs = useRef<\r\n Array<HTMLInputElement | HTMLTextAreaElement | null>\r\n >([]);\r\n const tokens = useTokens();\r\n\r\n const focusInput = (index: number) => {\r\n const target = inputRefs.current[index];\r\n if (target && typeof target.focus === \"function\") target.focus();\r\n };\r\n\r\n // Token-driven segment width so layout matches design system sizing\r\n // across responsive breakpoints and avoids relying on legacy CSS.\r\n const segmentWidth =\r\n tokens?.semantic?.size?.[size]?.otpWidth ??\r\n tokens?.semantic?.field?.otpWidth;\r\n\r\n const setValueAt = (index: number, rawValue: string) => {\r\n const current = [...values];\r\n const sanitized = sanitizeSegment(rawValue, index, current);\r\n const next = [...current];\r\n next[index] = sanitized;\r\n const context: SegmentedInputChangeContext = {\r\n previousValues: current,\r\n nextValues: next,\r\n };\r\n if (!validateSegment(sanitized, index, context)) return;\r\n onValuesChange(next);\r\n const complete =\r\n isSegmentComplete?.(sanitized, index, next) ??\r\n (Boolean(sanitized) &&\r\n (maxLength ? sanitized.length >= maxLength : true));\r\n if (complete && index < values.length - 1) focusInput(index + 1);\r\n };\r\n\r\n const handleKeyDown = (\r\n index: number,\r\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>,\r\n ) => {\r\n const current = [...values];\r\n const context: SegmentedInputChangeContext = {\r\n previousValues: current,\r\n nextValues: current,\r\n };\r\n onSegmentKeyDown?.(index, e, context);\r\n if (e.defaultPrevented) return;\r\n\r\n if (e.key === \"Backspace\") {\r\n e.preventDefault();\r\n const next = [...current];\r\n if (next[index]) {\r\n next[index] = \"\";\r\n } else if (index > 0) {\r\n next[index - 1] = \"\";\r\n focusInput(index - 1);\r\n }\r\n onValuesChange(next);\r\n return;\r\n }\r\n\r\n if (e.key === \"ArrowLeft\" && index > 0) {\r\n e.preventDefault();\r\n focusInput(index - 1);\r\n return;\r\n }\r\n\r\n if (e.key === \"ArrowRight\" && index < values.length - 1) {\r\n e.preventDefault();\r\n focusInput(index + 1);\r\n }\r\n };\r\n\r\n const handlePaste = (e: React.ClipboardEvent<HTMLDivElement>) => {\r\n if (!onPasteValue) return;\r\n e.preventDefault();\r\n const rawText = e.clipboardData?.getData(\"text\") ?? \"\";\r\n const next = onPasteValue(rawText, values.length);\r\n if (!Array.isArray(next) || next.length !== values.length) return;\r\n onValuesChange(next);\r\n let lastFilled = 0;\r\n for (let i = next.length - 1; i >= 0; i -= 1) {\r\n if (next[i]) {\r\n lastFilled = i;\r\n break;\r\n }\r\n }\r\n focusInput(lastFilled);\r\n };\r\n\r\n return (\r\n <div\r\n className={[containerClassName, className].filter(Boolean).join(\" \")}\r\n onPaste={handlePaste}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: tokens.foundation.spacing[\"2\"],\r\n }}\r\n >\r\n {values.map((value, index) => (\r\n <React.Fragment key={index}>\r\n <div\r\n className={inputClassName}\r\n style={\r\n segmentWidth\r\n ? {\r\n width: segmentWidth,\r\n minWidth: segmentWidth,\r\n flex: \"0 0 auto\",\r\n }\r\n : undefined\r\n }\r\n >\r\n <TextField\r\n value={value}\r\n onChange={(e) => setValueAt(index, e.target.value)}\r\n type={type}\r\n fullWidth\r\n size={size}\r\n label=\"\"\r\n disabled={disabled}\r\n error={error}\r\n inputRef={(el) => {\r\n inputRefs.current[index] = el;\r\n }}\r\n autoComplete={autoComplete}\r\n inputProps={{\r\n inputMode,\r\n maxLength,\r\n onKeyDown: (\r\n e: React.KeyboardEvent<\r\n HTMLInputElement | HTMLTextAreaElement\r\n >,\r\n ) => handleKeyDown(index, e),\r\n \"aria-label\": getAriaLabel?.(index),\r\n }}\r\n />\r\n </div>\r\n {showSeparator && index < values.length - 1 ? separator : null}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n );\r\n};\r\n","import { useMemo } from \"react\";\r\nimport type {\r\n IpWhitelistFieldProps,\r\n IpWhitelistRow,\r\n} from \"./IpWhitelistField.types\";\r\nimport { useTokens } from \"../../ThemeProvider/ThemeContext\";\r\nimport { getIpWhitelistFieldTokensFromResolved } from \"../../tokens\";\r\nimport { Button } from \"../Button/Button\";\r\nimport { SegmentedInputField } from \"../SegmentedInputField/SegmentedInputField\";\r\n// import { Icon as FirebirdIcon } from \"firebird-icon-lib\";\r\n\r\nconst EMPTY_ROW: IpWhitelistRow = {\r\n input1: \"\",\r\n input2: \"\",\r\n input3: \"\",\r\n input4: \"\",\r\n};\r\n\r\nexport const IpWhitelistField = ({\r\n label,\r\n required = false,\r\n disabled = false,\r\n error = false,\r\n allowWildcard = true,\r\n minRows = 1,\r\n maxRows,\r\n rows,\r\n onRowsChange,\r\n addRowAriaLabel = \"Add IP row\",\r\n removeRowAriaLabel = \"Remove IP row\",\r\n}: IpWhitelistFieldProps) => {\r\n const resolvedTokens = useTokens();\r\n const ipTokens = getIpWhitelistFieldTokensFromResolved(resolvedTokens);\r\n\r\n const isAnyRowIncomplete = useMemo(\r\n () =>\r\n rows.some(\r\n (r) =>\r\n r.input1 === \"\" ||\r\n r.input2 === \"\" ||\r\n r.input3 === \"\" ||\r\n r.input4 === \"\",\r\n ),\r\n [rows],\r\n );\r\n\r\n const updateRow = (index: number, patch: Partial<IpWhitelistRow>) => {\r\n const next = [...rows];\r\n next[index] = { ...next[index], ...patch };\r\n onRowsChange(next);\r\n };\r\n\r\n const removeRow = (index: number) => {\r\n onRowsChange(rows.filter((_, i) => i !== index));\r\n };\r\n\r\n const addRow = () => {\r\n onRowsChange([...rows, { ...EMPTY_ROW }]);\r\n };\r\n\r\n const canAddMore = maxRows ? rows.length < maxRows : true;\r\n\r\n const isAllowedOctetValue = (val: string) => {\r\n if (val === \"\") return true;\r\n if (allowWildcard && val === \"*\") return true;\r\n const n = Number(val);\r\n return Number.isInteger(n) && n >= 0 && n <= 255;\r\n };\r\n\r\n return (\r\n <div style={{ width: \"100%\" }}>\r\n <div style={{ marginTop: ipTokens.labelMarginTop }}>\r\n <label style={{ display: \"block\", color: ipTokens.labelColor }}>\r\n {label}\r\n {required && (\r\n <span\r\n style={{\r\n marginLeft: ipTokens.requiredGap,\r\n color: ipTokens.requiredColor,\r\n }}\r\n >\r\n *\r\n </span>\r\n )}\r\n </label>\r\n </div>\r\n\r\n {rows.map((item, index) => (\r\n <div key={index} style={{ marginTop: ipTokens.rowMarginTop }}>\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: ipTokens.groupGap,\r\n }}\r\n className=\"client_ip\"\r\n >\r\n <SegmentedInputField\r\n values={[item.input1, item.input2, item.input3, item.input4]}\r\n onValuesChange={(next) => {\r\n updateRow(index, {\r\n input1: next[0] ?? \"\",\r\n input2: next[1] ?? \"\",\r\n input3: next[2] ?? \"\",\r\n input4: next[3] ?? \"\",\r\n });\r\n }}\r\n disabled={disabled}\r\n error={error}\r\n size=\"lg\"\r\n showSeparator\r\n separator={<span className=\"spanMargin m-0\">.</span>}\r\n inputMode=\"numeric\"\r\n maxLength={3}\r\n autoComplete=\"off\"\r\n getAriaLabel={(segmentIndex) => `IP part ${segmentIndex + 1}`}\r\n sanitizeSegment={(raw) => {\r\n if (allowWildcard && raw === \"*\") return raw;\r\n return raw.replace(/[^0-9]/g, \"\").slice(0, 3);\r\n }}\r\n validateSegment={(nextValue) => isAllowedOctetValue(nextValue)}\r\n isSegmentComplete={(segmentValue) =>\r\n (allowWildcard && segmentValue === \"*\") ||\r\n segmentValue.length === 3\r\n }\r\n />\r\n\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: ipTokens.buttonsGap,\r\n }}\r\n >\r\n <Button\r\n size=\"lg\"\r\n variant=\"blue\"\r\n disabled={disabled || isAnyRowIncomplete || !canAddMore}\r\n onClick={addRow}\r\n iconOnly\r\n aria-label={addRowAriaLabel}\r\n >\r\n {/* <FirebirdIcon name=\"add_circle\" size={20} /> */}\r\n </Button>\r\n\r\n {rows.length > minRows && (\r\n <Button\r\n size=\"lg\"\r\n variant=\"red\"\r\n iconOnly\r\n disabled={disabled}\r\n onClick={() => removeRow(index)}\r\n aria-label={removeRowAriaLabel}\r\n >\r\n {/* <FirebirdIcon name=\"cancel_circle\" size={20} /> */}\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n};\r\n","import type { CSSProperties, ReactNode } from 'react';\r\n\r\nimport { getSubTabsTokensFromResolved } from '../../tokens';\r\nimport { useTokens } from '../../ThemeProvider/ThemeContext';\r\nimport type { SubTabsColor, SubTabsProps, SubTabsVariant } from './SubTabs.types';\r\n\r\nfunction toColor(value: string | undefined, fallback: string): string {\r\n if (!value || typeof value !== 'string') return fallback;\r\n const s = value.trim();\r\n if (s.includes('{')) return fallback;\r\n if (s.startsWith('#') || s.startsWith('rgb') || s.startsWith('hsl')) return s;\r\n if (/^[0-9A-Fa-f]{6}$/.test(s)) return `#${s}`;\r\n return fallback;\r\n}\r\n\r\nexport function normalizeSubTabValue(value: string | number | null | undefined): string {\r\n if (value === null || value === undefined) return '';\r\n return String(value);\r\n}\r\n\r\ninterface ColorPalette {\r\n accent: string;\r\n accentLight: string;\r\n activeText: string;\r\n inactiveText: string;\r\n activeIconBackground: string;\r\n inactiveIconBackground: string;\r\n}\r\n\r\nfunction getColorPalette(\r\n colors: Record<string, ColorPalette> | undefined,\r\n color: SubTabsColor\r\n): ColorPalette {\r\n const fallback: ColorPalette = {\r\n accent: '#00545e',\r\n accentLight: '#F3F5F6',\r\n activeText: '#00545e',\r\n inactiveText: '#6B7280',\r\n activeIconBackground: '#00545e',\r\n inactiveIconBackground: '#EEF1F2',\r\n };\r\n\r\n const greenFallback: ColorPalette = {\r\n accent: '#52760A',\r\n accentLight: '#F3F6EC',\r\n activeText: '#52760A',\r\n inactiveText: '#6B7280',\r\n activeIconBackground: '#52760A',\r\n inactiveIconBackground: '#FFFFFF',\r\n };\r\n\r\n const palette = colors?.[color];\r\n const base = color === 'green' ? greenFallback : fallback;\r\n\r\n return {\r\n accent: toColor(palette?.accent, base.accent),\r\n accentLight: toColor(palette?.accentLight, base.accentLight),\r\n activeText: toColor(palette?.activeText, base.activeText),\r\n inactiveText: toColor(palette?.inactiveText, base.inactiveText),\r\n activeIconBackground: toColor(palette?.activeIconBackground, base.activeIconBackground),\r\n inactiveIconBackground: toColor(palette?.inactiveIconBackground, base.inactiveIconBackground),\r\n };\r\n}\r\n\r\nfunction getTabButtonStyles({\r\n variant,\r\n isSelected,\r\n palette,\r\n sizeTokens,\r\n isButtonDisabled,\r\n}: {\r\n variant: SubTabsVariant;\r\n isSelected: boolean;\r\n palette: ColorPalette;\r\n sizeTokens: {\r\n height: string;\r\n padding: string;\r\n fontSize: string;\r\n borderRadius: string;\r\n fontWeight: string;\r\n activeFontWeight: string;\r\n };\r\n isButtonDisabled: boolean;\r\n}) {\r\n const base = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n height: sizeTokens.height,\r\n minHeight: sizeTokens.height,\r\n padding: sizeTokens.padding,\r\n fontSize: sizeTokens.fontSize,\r\n fontWeight: isSelected ? sizeTokens.activeFontWeight : sizeTokens.fontWeight,\r\n whiteSpace: 'nowrap' as const,\r\n cursor: isButtonDisabled ? 'not-allowed' : 'pointer',\r\n opacity: isButtonDisabled ? 0.5 : 1,\r\n transition: 'all 0.2s ease',\r\n border: '1px solid transparent',\r\n background: 'transparent',\r\n color: isSelected ? palette.activeText : palette.inactiveText,\r\n flexShrink: 0,\r\n };\r\n\r\n if (variant === 'pill') {\r\n return {\r\n ...base,\r\n borderRadius: sizeTokens.borderRadius,\r\n backgroundColor: isSelected ? palette.accent : '#FFFFFF',\r\n borderColor: isSelected ? palette.accent : 'rgba(82, 118, 10, 0.18)',\r\n color: isSelected ? '#FFFFFF' : palette.inactiveText,\r\n boxShadow: isSelected ? '0 2px 6px rgba(82, 118, 10, 0.28)' : '0 1px 2px rgba(0,0,0,0.06)',\r\n };\r\n }\r\n\r\n if (variant === 'underline') {\r\n return {\r\n ...base,\r\n borderRadius: '0',\r\n borderBottom: `2px solid ${isSelected ? palette.accent : 'transparent'}`,\r\n marginBottom: '-1px',\r\n backgroundColor: 'transparent',\r\n color: isSelected ? palette.activeText : palette.inactiveText,\r\n };\r\n }\r\n\r\n return {\r\n ...base,\r\n borderRadius: sizeTokens.borderRadius,\r\n backgroundColor: isSelected ? palette.accent : '#FFFFFF',\r\n borderColor: isSelected ? palette.accent : '#D4DDE1',\r\n color: isSelected ? '#FFFFFF' : palette.inactiveText,\r\n boxShadow: isSelected ? '0 1px 2px rgba(16, 24, 40, 0.06)' : 'none',\r\n };\r\n}\r\n\r\nfunction SubTabIcon({\r\n icon,\r\n isSelected,\r\n palette,\r\n iconSize,\r\n variant,\r\n}: {\r\n icon: ReactNode;\r\n isSelected: boolean;\r\n palette: ColorPalette;\r\n iconSize: string;\r\n variant: SubTabsVariant;\r\n}) {\r\n const isPill = variant === 'pill';\r\n const bgColor =\r\n isPill && isSelected ? 'rgba(255, 255, 255, 0.22)'\r\n : isSelected ? palette.activeIconBackground\r\n : palette.inactiveIconBackground;\r\n const iconColor = isSelected ? '#FFFFFF' : palette.accent;\r\n\r\n return (\r\n <span\r\n aria-hidden\r\n style={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: iconSize,\r\n height: iconSize,\r\n borderRadius: '6px',\r\n flexShrink: 0,\r\n backgroundColor: bgColor,\r\n color: iconColor,\r\n transition: 'all 0.2s ease',\r\n }}\r\n >\r\n {icon}\r\n </span>\r\n );\r\n}\r\n\r\nexport const SubTabs = ({\r\n options,\r\n value,\r\n onChange,\r\n variant = 'pill',\r\n color = 'primary',\r\n size = 'md',\r\n disabled = false,\r\n getOptionDisabled,\r\n ariaLabel = 'Sub tabs',\r\n style,\r\n ...rest\r\n}: SubTabsProps) => {\r\n const resolvedTokens = useTokens();\r\n const { tokens: t, sizes } = getSubTabsTokensFromResolved(resolvedTokens);\r\n const sizeTokens = sizes[size];\r\n const palette = getColorPalette(\r\n t.colors as unknown as Record<string, ColorPalette> | undefined,\r\n color\r\n );\r\n const selectedValue = normalizeSubTabValue(value);\r\n\r\n const trackStyle: CSSProperties =\r\n variant === 'pill' ?\r\n {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: t.gap,\r\n width: '100%',\r\n overflowX: 'auto',\r\n padding: t.trackPadding,\r\n borderRadius: t.trackBorderRadius,\r\n backgroundColor: palette.accentLight,\r\n border: `1px solid ${toColor(t.trackBorder, '#E5E7EB')}`,\r\n boxShadow: 'inset 0 1px 2px rgba(16, 24, 40, 0.04)',\r\n }\r\n : variant === 'underline' ?\r\n {\r\n display: 'inline-flex',\r\n alignItems: 'flex-end',\r\n gap: t.gap,\r\n maxWidth: '100%',\r\n overflowX: 'auto',\r\n borderBottom: `1px solid ${toColor(t.trackBorder, '#E5E7EB')}`,\r\n }\r\n : {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: t.gap,\r\n maxWidth: '100%',\r\n overflowX: 'auto',\r\n flexWrap: 'wrap',\r\n };\r\n\r\n return (\r\n <div\r\n role=\"tablist\"\r\n aria-label={ariaLabel}\r\n aria-disabled={disabled}\r\n style={{ ...trackStyle, ...style }}\r\n {...rest}\r\n >\r\n {options.map((option) => {\r\n const optionValue = normalizeSubTabValue(option.value);\r\n const isSelected = optionValue === selectedValue;\r\n const isOptionDisabled = option.disabled === true || getOptionDisabled?.(option) === true;\r\n const isButtonDisabled = disabled || isOptionDisabled;\r\n\r\n return (\r\n <button\r\n key={optionValue || option.label}\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={isSelected}\r\n aria-disabled={isOptionDisabled}\r\n disabled={isButtonDisabled}\r\n onClick={() => {\r\n if (!isButtonDisabled) onChange?.(option.value);\r\n }}\r\n style={getTabButtonStyles({\r\n variant,\r\n isSelected,\r\n palette,\r\n sizeTokens,\r\n isButtonDisabled,\r\n })}\r\n >\r\n {option.icon ?\r\n <SubTabIcon\r\n icon={option.icon}\r\n isSelected={isSelected}\r\n palette={palette}\r\n iconSize={sizeTokens.iconSize}\r\n variant={variant}\r\n />\r\n : null}\r\n <span>{option.label}</span>\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n","import React, {\r\n ReactNode,\r\n cloneElement,\r\n isValidElement,\r\n createContext,\r\n useContext,\r\n useState,\r\n useEffect,\r\n useRef,\r\n useCallback,\r\n} from 'react';\r\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\r\nimport HighlightOffIcon from '@mui/icons-material/HighlightOff';\r\nimport WarningAmberIcon from '@mui/icons-material/WarningAmber';\r\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport type {\r\n ToastVariant,\r\n ToastPosition,\r\n ToastItem,\r\n ToastProps,\r\n ToastContainerProps,\r\n ToastContextValue,\r\n} from './Toast.types';\r\n\r\n// ─── Variant config ──────────────────────────────────────────────────────────\r\n\r\ninterface VariantConfig {\r\n icon: ReactNode;\r\n iconBg: string;\r\n iconColor: string;\r\n accentColor: string;\r\n bgTint: string;\r\n}\r\n\r\nconst VARIANT_CONFIG: Record<ToastVariant, VariantConfig> = {\r\n success: {\r\n icon: <CheckCircleOutlineIcon />,\r\n iconBg: '#DCFCE7',\r\n iconColor: '#16A34A',\r\n accentColor: '#16A34A',\r\n bgTint: '#F0FDF4',\r\n },\r\n error: {\r\n icon: <HighlightOffIcon />,\r\n iconBg: '#FEE2E2',\r\n iconColor: '#DC2626',\r\n accentColor: '#DC2626',\r\n bgTint: '#FFF5F5',\r\n },\r\n warning: {\r\n icon: <WarningAmberIcon />,\r\n iconBg: '#FEF9C3',\r\n iconColor: '#CA8A04',\r\n accentColor: '#CA8A04',\r\n bgTint: '#FFFBEB',\r\n },\r\n info: {\r\n icon: <InfoOutlinedIcon />,\r\n iconBg: '#DBEAFE',\r\n iconColor: '#2563EB',\r\n accentColor: '#2563EB',\r\n bgTint: '#EFF6FF',\r\n },\r\n};\r\n\r\n// ─── Position styles ──────────────────────────────────────────────────────────\r\n\r\nconst POSITION_STYLES: Record<ToastPosition, React.CSSProperties> = {\r\n 'top-right': { top: 20, right: 20, alignItems: 'flex-end' },\r\n 'top-left': { top: 20, left: 20, alignItems: 'flex-start' },\r\n 'top-center': { top: 20, left: '50%', transform: 'translateX(-50%)', alignItems: 'center' },\r\n 'bottom-right': { bottom: 20, right: 20, alignItems: 'flex-end' },\r\n 'bottom-left': { bottom: 20, left: 20, alignItems: 'flex-start' },\r\n 'bottom-center': { bottom: 20, left: '50%', transform: 'translateX(-50%)', alignItems: 'center' },\r\n};\r\n\r\n// ─── Single Toast item ────────────────────────────────────────────────────────\r\n\r\nexport const Toast = ({ message, variant = 'info', duration = 4000, onClose }: ToastProps) => {\r\n const [visible, setVisible] = useState(true);\r\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n const dismiss = useCallback(() => {\r\n setVisible(false);\r\n onClose?.();\r\n }, [onClose]);\r\n\r\n useEffect(() => {\r\n if (duration > 0) {\r\n timerRef.current = setTimeout(dismiss, duration);\r\n }\r\n return () => {\r\n if (timerRef.current) clearTimeout(timerRef.current);\r\n };\r\n }, [duration, dismiss]);\r\n\r\n if (!visible) return null;\r\n\r\n const config = VARIANT_CONFIG[variant];\r\n\r\n const iconEl =\r\n isValidElement(config.icon) ?\r\n cloneElement(config.icon as React.ReactElement<{ style?: React.CSSProperties }>, {\r\n style: { fontSize: 20, color: config.iconColor, display: 'block' },\r\n })\r\n : config.icon;\r\n\r\n return (\r\n <div\r\n role=\"alert\"\r\n aria-live=\"assertive\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 12,\r\n background: config.bgTint,\r\n border: `1px solid ${config.accentColor}33`,\r\n borderLeft: `4px solid ${config.accentColor}`,\r\n borderRadius: 8,\r\n padding: '12px 14px',\r\n boxShadow: `0 6px 24px rgba(0, 0, 0, 0.12), 0 0 0 1px ${config.accentColor}1A`,\r\n minWidth: 280,\r\n maxWidth: 440,\r\n fontFamily: '\"Roboto\", sans-serif',\r\n pointerEvents: 'all',\r\n }}\r\n >\r\n {/* Icon circle */}\r\n <span\r\n style={{\r\n flexShrink: 0,\r\n width: 36,\r\n height: 36,\r\n borderRadius: '50%',\r\n background: config.iconBg,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n {iconEl}\r\n </span>\r\n\r\n {/* Message */}\r\n <span\r\n style={{\r\n flex: 1,\r\n fontSize: 14,\r\n fontWeight: 600,\r\n lineHeight: 1.5,\r\n color: '#0F172A',\r\n wordBreak: 'break-word',\r\n letterSpacing: '0.01em',\r\n }}\r\n >\r\n {message}\r\n </span>\r\n\r\n {/* Close button */}\r\n <button\r\n aria-label=\"Close notification\"\r\n onClick={dismiss}\r\n style={{\r\n flexShrink: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n background: 'none',\r\n border: 'none',\r\n cursor: 'pointer',\r\n padding: 2,\r\n borderRadius: 4,\r\n color: '#9CA3AF',\r\n lineHeight: 0,\r\n }}\r\n >\r\n <CloseIcon style={{ fontSize: 16, color: '#9CA3AF' }} />\r\n </button>\r\n </div>\r\n );\r\n};\r\n\r\n// ─── Toast Container ──────────────────────────────────────────────────────────\r\n\r\ninterface InternalToastItem extends ToastItem {\r\n key: string;\r\n}\r\n\r\nconst ToastContext = createContext<ToastContextValue | null>(null);\r\n\r\nconst noopToast: ToastContextValue = { showToast: () => {} };\r\n\r\nexport const useToastDS = (): ToastContextValue => {\r\n const ctx = useContext(ToastContext);\r\n return ctx ?? noopToast;\r\n};\r\n\r\nexport const ToastProvider = ({\r\n children,\r\n position = 'top-right',\r\n}: React.PropsWithChildren<ToastContainerProps>) => {\r\n const [toasts, setToasts] = useState<InternalToastItem[]>([]);\r\n\r\n const showToast = useCallback(\r\n (message: string, variant: ToastVariant = 'info', duration = 4000) => {\r\n const id = `toast-${Date.now()}-${Math.random().toString(36).slice(2)}`;\r\n setToasts((prev) => [...prev, { id, key: id, message, variant, duration }]);\r\n },\r\n []\r\n );\r\n\r\n const removeToast = useCallback((id: string) => {\r\n setToasts((prev) => prev.filter((t) => t.id !== id));\r\n }, []);\r\n\r\n const posStyle = POSITION_STYLES[position];\r\n\r\n return (\r\n <ToastContext.Provider value={{ showToast }}>\r\n {children}\r\n <div\r\n aria-label=\"Notifications\"\r\n style={{\r\n position: 'fixed',\r\n zIndex: 9999,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: 10,\r\n pointerEvents: 'none',\r\n ...posStyle,\r\n }}\r\n >\r\n {toasts.map((toast) => (\r\n <Toast\r\n key={toast.key}\r\n message={toast.message}\r\n variant={toast.variant}\r\n duration={toast.duration}\r\n onClose={() => removeToast(toast.id)}\r\n />\r\n ))}\r\n </div>\r\n </ToastContext.Provider>\r\n );\r\n};\r\n","import { forwardRef } from 'react';\r\nimport type { SVGProps } from 'react';\r\n\r\nexport interface ReportDollarIconProps extends SVGProps<SVGSVGElement> {\r\n /** Icon size in px. Defaults to 24. */\r\n size?: number | string;\r\n /** Fill colour of the document body. Inherits from `currentColor` by default. */\r\n color?: string;\r\n /** Colour of the `$` glyph and inner strokes. Defaults to white. */\r\n glyphColor?: string;\r\n /**\r\n * Optional MUI-style `sx` prop. Only `fontSize` is consumed so the icon\r\n * composes seamlessly with `SectionIcon`, which sets sizing via `sx`.\r\n */\r\n sx?: { fontSize?: number | string };\r\n}\r\n\r\n/**\r\n * ReportDollarIcon\r\n *\r\n * A filled \"document with dollar sign\" mark used for financial / expense\r\n * report section headers (e.g. Summary Report, Details Report on the fuel\r\n * page). Mirrors the visual weight of the MUI icon set so it composes well\r\n * with `SectionIcon`.\r\n */\r\nexport const ReportDollarIcon = forwardRef<SVGSVGElement, ReportDollarIconProps>(\r\n function ReportDollarIcon(\r\n { size, color = 'currentColor', glyphColor = '#FFFFFF', style, sx, ...rest },\r\n ref\r\n ) {\r\n const resolvedSize = size ?? sx?.fontSize ?? 24;\r\n return (\r\n <svg\r\n ref={ref}\r\n width={resolvedSize}\r\n height={resolvedSize}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden\r\n style={style}\r\n {...rest}\r\n >\r\n <path\r\n d=\"M6.5 2.25h7.25a1.5 1.5 0 0 1 1.06.44l4 4a1.5 1.5 0 0 1 .44 1.06v12.5A2.25 2.25 0 0 1 17 22.5H7A2.25 2.25 0 0 1 4.75 20.25V4.5A2.25 2.25 0 0 1 7 2.25Z\"\r\n fill={color}\r\n />\r\n <path\r\n d=\"M14.25 2.75v3.5a1.5 1.5 0 0 0 1.5 1.5h3.25\"\r\n stroke={glyphColor}\r\n strokeWidth=\"1.4\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n fill=\"none\"\r\n opacity=\"0.85\"\r\n />\r\n <text\r\n x=\"12\"\r\n y=\"16.6\"\r\n textAnchor=\"middle\"\r\n fontFamily=\"Roboto, Arial, sans-serif\"\r\n fontSize=\"9.5\"\r\n fontWeight=\"700\"\r\n fill={glyphColor}\r\n >\r\n $\r\n </text>\r\n </svg>\r\n );\r\n }\r\n);\r\n","import { getTokens } from \"../tokens\";\r\n\r\n/** Firebird brand theme (light mode). Resolved tokens only – no MUI. Use DesignSystemThemeProvider for context. */\r\nexport const firebirdTheme = getTokens({ brand: \"firebird\", mode: \"light\" });\r\n","import { getTokens } from \"../tokens\";\r\n\r\n/** CPC brand theme (light mode). Resolved tokens only – no MUI. Use DesignSystemThemeProvider for context. */\r\nexport const cpcTheme = getTokens({ brand: \"cpc\", mode: \"light\" });\r\n","import { getTokens } from \"../tokens\";\r\n\r\n/** Legacy theme export – resolved tokens (CPC light). No MUI. Use DesignSystemThemeProvider + useTokens() in app. */\r\nexport const theme = getTokens({ brand: \"cpc\", mode: \"light\" });\r\n"]}
|