@granularjs/ui 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/granular-ui.js +9462 -0
- package/dist/granular-ui.js.map +7 -0
- package/dist/granular-ui.min.js +308 -67
- package/dist/granular-ui.min.js.map +4 -4
- package/package.json +1 -1
- package/src/components/Autocomplete.js +179 -0
- package/src/components/DateInput.js +1 -3
- package/src/components/List.js +7 -7
- package/src/components/Pagination.js +2 -1
- package/src/components/ProgressRing.js +41 -7
- package/src/components/Radio.js +32 -3
- package/src/components/RadioGroup.js +24 -4
- package/src/components/RangePicker.js +66 -26
- package/src/components/Select.js +3 -1
- package/src/components/SelectSearch.js +2 -34
- package/src/components/Slider.js +15 -4
- package/src/components/Stepper.js +4 -3
- package/src/components/Switch.js +32 -4
- package/src/components/SwitchGroup.js +20 -4
- package/src/components/Table.js +38 -13
- package/src/components/Timeline.js +373 -17
- package/src/components/Toast.js +18 -6
- package/src/components/ToastStack.js +9 -15
- package/src/index.js +1 -0
- package/src/theme/icons.js +2 -1
- package/src/theme/styles.js +294 -53
- package/types/components/Autocomplete.d.ts +1 -0
- package/types/components/RadioGroup.d.ts +1 -0
- package/types/components/SwitchGroup.d.ts +1 -0
- package/types/index.d.ts +1 -0
- package/types/theme/icons.d.ts +1 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/theme/styles.js", "../src/theme/theme.js", "../src/utils.js", "../src/components/Button.js", "../src/components/Text.js", "../src/components/Title.js", "../src/components/Container.js", "../src/components/Stack.js", "../src/components/Group.js", "../src/components/Card.js", "../src/components/Badge.js", "../src/components/TextInput.js", "../src/components/Textarea.js", "../src/components/NumberField.js", "../src/components/NumberInput.js", "../src/components/Modal.js", "../src/theme/icons.js", "../src/components/Loading.js", "../src/components/Checkbox.js", "../src/components/Switch.js", "../src/components/SwitchGroup.js", "../src/components/Select.js", "../src/components/Icon.js", "../src/components/Tabs.js", "../src/components/Table.js", "../src/components/Accordion.js", "../src/components/Tooltip.js", "../src/components/Menu.js", "../src/components/Drawer.js", "../src/components/Notification.js", "../src/components/Divider.js", "../src/components/Paper.js", "../src/components/Alert.js", "../src/components/Avatar.js", "../src/components/Kbd.js", "../src/components/Code.js", "../src/components/Blockquote.js", "../src/components/SimpleGrid.js", "../src/components/List.js", "../src/components/Anchor.js", "../src/components/Image.js", "../src/components/Progress.js", "../src/components/Slider.js", "../src/components/Skeleton.js", "../src/components/Chip.js", "../src/components/SegmentedControl.js", "../src/components/Pagination.js", "../src/components/Radio.js", "../src/components/RadioGroup.js", "../src/components/Breadcrumbs.js", "../src/components/Center.js", "../src/components/Space.js", "../src/components/Collapse.js", "../src/components/ActionIcon.js", "../src/components/Popover.js", "../src/components/HoverCard.js", "../src/components/Affix.js", "../src/components/Fieldset.js", "../src/components/AppBar.js", "../src/components/Sidebar.js", "../src/components/Timeline.js", "../src/components/Stepper.js", "../src/components/Rating.js", "../src/components/Tag.js", "../src/components/Calendar.js", "../src/components/MultiSelect.js", "../src/components/ToastStack.js", "../src/components/Toast.js", "../src/components/DatePicker.js", "../src/components/Notifications.js", "../src/components/RangeSlider.js", "../src/components/DateInput.js", "../src/components/Popper.js", "../src/components/PasswordInput.js", "../src/components/SearchInput.js", "../src/components/CopyButton.js", "../src/components/ProgressRing.js", "../src/components/Autocomplete.js", "../src/components/ScrollArea.js", "../src/components/SelectSearch.js", "../src/components/RangePicker.js", "../src/components/Flex.js", "../src/components/NavLink.js", "../src/components/Indicator.js", "../src/components/Burger.js", "../src/components/LoadingOverlay.js", "../src/components/Grid.js", "../src/components/Col.js", "../src/components/PinInput.js", "../src/components/CheckboxGroup.js", "../src/components/AvatarGroup.js", "../src/components/BadgeGroup.js", "../src/components/GridTable.js", "../src/components/BottomBar.js", "../src/components/EventCalendar.js", "../src/hooks/useDisclosure.js", "../src/index.js"],
|
|
4
|
+
"sourcesContent": ["const STYLE_ID = 'granular-ui-styles';\n\nconst poppins400 = new URL('./fonts/Poppins-400.ttf', import.meta.url).href;\nconst poppins500 = new URL('./fonts/Poppins-500.ttf', import.meta.url).href;\nconst poppins600 = new URL('./fonts/Poppins-600.ttf', import.meta.url).href;\nconst poppins700 = new URL('./fonts/Poppins-700.ttf', import.meta.url).href;\n\nconst arimo400 = new URL('./fonts/Arimo-400.ttf', import.meta.url).href;\nconst arimo500 = new URL('./fonts/Arimo-500.ttf', import.meta.url).href;\nconst arimo600 = new URL('./fonts/Arimo-600.ttf', import.meta.url).href;\nconst arimo700 = new URL('./fonts/Arimo-700.ttf', import.meta.url).href;\n\nconst inter400 = new URL('./fonts/Inter-400.woff2', import.meta.url).href;\nconst inter500 = new URL('./fonts/Inter-500.woff2', import.meta.url).href;\nconst inter600 = new URL('./fonts/Inter-600.woff2', import.meta.url).href;\nconst inter700 = new URL('./fonts/Inter-700.woff2', import.meta.url).href;\n\nconst css = `\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url('${poppins400}') format('truetype');\n}\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url('${poppins500}') format('truetype');\n}\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url('${poppins600}') format('truetype');\n}\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url('${poppins700}') format('truetype');\n}\n\n@font-face {\n font-family: 'Arimo';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url('${arimo400}') format('truetype');\n}\n@font-face {\n font-family: 'Arimo';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url('${arimo500}') format('truetype');\n}\n@font-face {\n font-family: 'Arimo';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url('${arimo600}') format('truetype');\n}\n@font-face {\n font-family: 'Arimo';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url('${arimo700}') format('truetype');\n}\n\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url('${inter400}') format('woff2');\n}\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url('${inter500}') format('woff2');\n}\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url('${inter600}') format('woff2');\n}\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url('${inter700}') format('woff2');\n}\n\n:root {\n /* Color scales - base colors */\n --g-ui-white: #ffffff;\n --g-ui-black: #000000;\n \n --g-ui-gray-50: #f9fafb;\n --g-ui-gray-100: #f2f4f7;\n --g-ui-gray-200: #e4e7ec;\n --g-ui-gray-300: #cdd1d9;\n --g-ui-gray-350: #b2b7c3;\n --g-ui-gray-400: #98a2b3;\n --g-ui-gray-500: #667085;\n --g-ui-gray-600: #475467;\n --g-ui-gray-700: #344054;\n --g-ui-gray-800: #1d2939;\n --g-ui-gray-900: #101828;\n --g-ui-gray-950: #0c111d;\n \n --g-ui-red-50: #fef3f2;\n --g-ui-red-100: #fee4e2;\n --g-ui-red-200: #fecdca;\n --g-ui-red-300: #fda29b;\n --g-ui-red-400: #f97066;\n --g-ui-red-500: #f04438;\n --g-ui-red-600: #d92d20;\n --g-ui-red-700: #b42318;\n --g-ui-red-800: #912018;\n --g-ui-red-900: #7a271a;\n --g-ui-red-950: #55160c;\n \n --g-ui-orange-50: #fff6ed;\n --g-ui-orange-100: #ffead5;\n --g-ui-orange-200: #fddcab;\n --g-ui-orange-300: #feb273;\n --g-ui-orange-400: #fd853a;\n --g-ui-orange-500: #ef6820;\n --g-ui-orange-600: #e04f16;\n --g-ui-orange-700: #b93815;\n --g-ui-orange-800: #932f19;\n --g-ui-orange-900: #7a2e0e;\n --g-ui-orange-950: #511c10;\n \n --g-ui-green-50: #ecfdf3;\n --g-ui-green-100: #dcfae6;\n --g-ui-green-200: #abefc6;\n --g-ui-green-300: #75e0a7;\n --g-ui-green-400: #47cd89;\n --g-ui-green-500: #17b26a;\n --g-ui-green-600: #079455;\n --g-ui-green-700: #067647;\n --g-ui-green-800: #085d3a;\n --g-ui-green-900: #074d31;\n --g-ui-green-950: #053321;\n \n --g-ui-blue-50: #eff8ff;\n --g-ui-blue-100: #d1e9ff;\n --g-ui-blue-200: #b2ddff;\n --g-ui-blue-300: #84caff;\n --g-ui-blue-400: #53b1fd;\n --g-ui-blue-500: #2e90fa;\n --g-ui-blue-600: #1570ef;\n --g-ui-blue-700: #175cd3;\n --g-ui-blue-800: #1849a9;\n --g-ui-blue-900: #194185;\n --g-ui-blue-950: #102a56;\n \n --g-ui-yellow-50: #fefbe8;\n --g-ui-yellow-100: #fef7c3;\n --g-ui-yellow-200: #feee95;\n --g-ui-yellow-300: #fde272;\n --g-ui-yellow-400: #fac515;\n --g-ui-yellow-500: #eaaa08;\n --g-ui-yellow-600: #ca8504;\n --g-ui-yellow-700: #a15c07;\n --g-ui-yellow-800: #854a0e;\n --g-ui-yellow-900: #713b12;\n --g-ui-yellow-950: #422006;\n \n --g-ui-teal-50: #f0fdf9;\n --g-ui-teal-100: #ccfbef;\n --g-ui-teal-200: #99f6e0;\n --g-ui-teal-300: #5fe9d0;\n --g-ui-teal-400: #2ed3b7;\n --g-ui-teal-500: #15b79e;\n --g-ui-teal-600: #0e9384;\n --g-ui-teal-700: #107569;\n --g-ui-teal-800: #125d56;\n --g-ui-teal-900: #134e48;\n --g-ui-teal-950: #0a2926;\n \n --g-ui-purple-50: #f4f3ff;\n --g-ui-purple-100: #ebe9fe;\n --g-ui-purple-200: #d9d6fe;\n --g-ui-purple-300: #bdb4fe;\n --g-ui-purple-400: #9b8afb;\n --g-ui-purple-500: #7a5af8;\n --g-ui-purple-600: #6938ef;\n --g-ui-purple-700: #5925dc;\n --g-ui-purple-800: #4a1fb8;\n --g-ui-purple-900: #3e1c96;\n --g-ui-purple-950: #27115a;\n \n --g-ui-pink-50: #fdf2fa;\n --g-ui-pink-100: #fce7f6;\n --g-ui-pink-200: #fcceee;\n --g-ui-pink-300: #faa7e0;\n --g-ui-pink-400: #f670c7;\n --g-ui-pink-500: #ee46bc;\n --g-ui-pink-600: #dd2590;\n --g-ui-pink-700: #c11574;\n --g-ui-pink-800: #9e165f;\n --g-ui-pink-900: #851651;\n --g-ui-pink-950: #4e0d30;\n \n --g-ui-cyan-50: #ecfdff;\n --g-ui-cyan-100: #cff9fe;\n --g-ui-cyan-200: #a5f0fc;\n --g-ui-cyan-300: #67e3f9;\n --g-ui-cyan-400: #22ccee;\n --g-ui-cyan-500: #06aed4;\n --g-ui-cyan-600: #088ab2;\n --g-ui-cyan-700: #0e7090;\n --g-ui-cyan-800: #155b75;\n --g-ui-cyan-900: #164c63;\n --g-ui-cyan-950: #0d2d3a;\n \n /* Semantic colors - Dark theme (default) */\n --g-ui-bg: var(--g-ui-gray-950);\n --g-ui-bg-subtle: var(--g-ui-gray-900);\n --g-ui-bg-muted: var(--g-ui-gray-800);\n --g-ui-bg-emphasized: var(--g-ui-gray-700);\n --g-ui-bg-inverted: var(--g-ui-gray-50);\n --g-ui-bg-panel: var(--g-ui-gray-900);\n --g-ui-bg-error: var(--g-ui-red-950);\n --g-ui-bg-warning: var(--g-ui-orange-950);\n --g-ui-bg-success: var(--g-ui-green-950);\n --g-ui-bg-info: var(--g-ui-blue-950);\n \n --g-ui-fg: var(--g-ui-gray-50);\n --g-ui-fg-muted: var(--g-ui-gray-400);\n --g-ui-fg-subtle: var(--g-ui-gray-500);\n --g-ui-fg-inverted: var(--g-ui-gray-950);\n --g-ui-fg-error: var(--g-ui-red-400);\n --g-ui-fg-warning: var(--g-ui-orange-300);\n --g-ui-fg-success: var(--g-ui-green-400);\n --g-ui-fg-info: var(--g-ui-blue-400);\n \n --g-ui-border: var(--g-ui-gray-700);\n --g-ui-border-subtle: var(--g-ui-gray-900);\n --g-ui-border-muted: var(--g-ui-gray-800);\n --g-ui-border-emphasized: var(--g-ui-gray-600);\n --g-ui-border-inverted: var(--g-ui-gray-200);\n --g-ui-border-error: var(--g-ui-red-400);\n --g-ui-border-warning: var(--g-ui-orange-400);\n --g-ui-border-success: var(--g-ui-green-400);\n --g-ui-border-info: var(--g-ui-blue-400);\n \n /* Gray semantic */\n --g-ui-gray-contrast: var(--g-ui-gray-950);\n --g-ui-gray-fg: var(--g-ui-gray-200);\n --g-ui-gray-subtle: var(--g-ui-gray-800);\n --g-ui-gray-muted: var(--g-ui-gray-700);\n --g-ui-gray-emphasized: var(--g-ui-gray-600);\n --g-ui-gray-solid: var(--g-ui-gray-50);\n --g-ui-gray-focus-ring: var(--g-ui-gray-400);\n --g-ui-gray-border: var(--g-ui-gray-700);\n \n /* Red semantic */\n --g-ui-red-contrast: white;\n --g-ui-red-fg: var(--g-ui-red-300);\n --g-ui-red-subtle: var(--g-ui-red-900);\n --g-ui-red-muted: var(--g-ui-red-800);\n --g-ui-red-emphasized: var(--g-ui-red-700);\n --g-ui-red-solid: var(--g-ui-red-600);\n --g-ui-red-focus-ring: var(--g-ui-red-500);\n --g-ui-red-border: var(--g-ui-red-400);\n \n /* Orange semantic */\n --g-ui-orange-contrast: black;\n --g-ui-orange-fg: var(--g-ui-orange-300);\n --g-ui-orange-subtle: var(--g-ui-orange-900);\n --g-ui-orange-muted: var(--g-ui-orange-800);\n --g-ui-orange-emphasized: var(--g-ui-orange-700);\n --g-ui-orange-solid: var(--g-ui-orange-500);\n --g-ui-orange-focus-ring: var(--g-ui-orange-500);\n --g-ui-orange-border: var(--g-ui-orange-400);\n \n /* Green semantic */\n --g-ui-green-contrast: white;\n --g-ui-green-fg: var(--g-ui-green-300);\n --g-ui-green-subtle: var(--g-ui-green-900);\n --g-ui-green-muted: var(--g-ui-green-800);\n --g-ui-green-emphasized: var(--g-ui-green-700);\n --g-ui-green-solid: var(--g-ui-green-600);\n --g-ui-green-focus-ring: var(--g-ui-green-500);\n --g-ui-green-border: var(--g-ui-green-400);\n \n /* Blue semantic */\n --g-ui-blue-contrast: white;\n --g-ui-blue-fg: var(--g-ui-blue-300);\n --g-ui-blue-subtle: var(--g-ui-blue-900);\n --g-ui-blue-muted: var(--g-ui-blue-800);\n --g-ui-blue-emphasized: var(--g-ui-blue-700);\n --g-ui-blue-solid: var(--g-ui-blue-600);\n --g-ui-blue-focus-ring: var(--g-ui-blue-500);\n --g-ui-blue-border: var(--g-ui-blue-400);\n \n /* Yellow semantic */\n --g-ui-yellow-contrast: black;\n --g-ui-yellow-fg: var(--g-ui-yellow-300);\n --g-ui-yellow-subtle: var(--g-ui-yellow-900);\n --g-ui-yellow-muted: var(--g-ui-yellow-800);\n --g-ui-yellow-emphasized: var(--g-ui-yellow-700);\n --g-ui-yellow-solid: var(--g-ui-yellow-300);\n --g-ui-yellow-focus-ring: var(--g-ui-yellow-500);\n --g-ui-yellow-border: var(--g-ui-yellow-500);\n \n /* Teal semantic */\n --g-ui-teal-contrast: white;\n --g-ui-teal-fg: var(--g-ui-teal-300);\n --g-ui-teal-subtle: var(--g-ui-teal-900);\n --g-ui-teal-muted: var(--g-ui-teal-800);\n --g-ui-teal-emphasized: var(--g-ui-teal-700);\n --g-ui-teal-solid: var(--g-ui-teal-600);\n --g-ui-teal-focus-ring: var(--g-ui-teal-500);\n --g-ui-teal-border: var(--g-ui-teal-400);\n \n /* Purple semantic */\n --g-ui-purple-contrast: white;\n --g-ui-purple-fg: var(--g-ui-purple-300);\n --g-ui-purple-subtle: var(--g-ui-purple-900);\n --g-ui-purple-muted: var(--g-ui-purple-800);\n --g-ui-purple-emphasized: var(--g-ui-purple-700);\n --g-ui-purple-solid: var(--g-ui-purple-600);\n --g-ui-purple-focus-ring: var(--g-ui-purple-500);\n --g-ui-purple-border: var(--g-ui-purple-400);\n \n /* Pink semantic */\n --g-ui-pink-contrast: white;\n --g-ui-pink-fg: var(--g-ui-pink-300);\n --g-ui-pink-subtle: var(--g-ui-pink-900);\n --g-ui-pink-muted: var(--g-ui-pink-800);\n --g-ui-pink-emphasized: var(--g-ui-pink-700);\n --g-ui-pink-solid: var(--g-ui-pink-600);\n --g-ui-pink-focus-ring: var(--g-ui-pink-500);\n --g-ui-pink-border: var(--g-ui-pink-400);\n \n /* Cyan semantic */\n --g-ui-cyan-contrast: white;\n --g-ui-cyan-fg: var(--g-ui-cyan-300);\n --g-ui-cyan-subtle: var(--g-ui-cyan-900);\n --g-ui-cyan-muted: var(--g-ui-cyan-800);\n --g-ui-cyan-emphasized: var(--g-ui-cyan-700);\n --g-ui-cyan-solid: var(--g-ui-cyan-600);\n --g-ui-cyan-focus-ring: var(--g-ui-cyan-500);\n --g-ui-cyan-border: var(--g-ui-cyan-400);\n \n /* Primary (indigo #6366f1 - Linear inspired) */\n --g-ui-primary: #6366f1;\n --g-ui-primary-hover: #818cf8;\n --g-ui-primary-active: #4f46e5;\n --g-ui-primary-subtle: rgba(99, 102, 241, 0.1);\n --g-ui-primary-muted: rgba(99, 102, 241, 0.2);\n --g-ui-primary-emphasized: rgba(99, 102, 241, 0.3);\n --g-ui-primary-fg: var(--g-ui-white);\n \n /* Aliases for common usage */\n --g-ui-success: var(--g-ui-green-500);\n --g-ui-success-hover: var(--g-ui-green-600);\n --g-ui-success-active: var(--g-ui-green-700);\n --g-ui-success-subtle: var(--g-ui-green-100);\n --g-ui-success-muted: var(--g-ui-green-200);\n --g-ui-success-fg: var(--g-ui-white);\n --g-ui-danger: var(--g-ui-red-500);\n --g-ui-danger-hover: var(--g-ui-red-600);\n --g-ui-danger-active: var(--g-ui-red-700);\n --g-ui-danger-subtle: var(--g-ui-red-100);\n --g-ui-danger-muted: var(--g-ui-red-200);\n --g-ui-danger-fg: var(--g-ui-white);\n --g-ui-warning: var(--g-ui-yellow-500);\n --g-ui-warning-hover: var(--g-ui-yellow-600);\n --g-ui-warning-active: var(--g-ui-yellow-700);\n --g-ui-warning-subtle: var(--g-ui-yellow-100);\n --g-ui-warning-muted: var(--g-ui-yellow-200);\n --g-ui-warning-fg: var(--g-ui-gray-900);\n --g-ui-info: var(--g-ui-cyan-500);\n --g-ui-info-hover: var(--g-ui-cyan-600);\n --g-ui-info-active: var(--g-ui-cyan-700);\n --g-ui-info-subtle: var(--g-ui-cyan-100);\n --g-ui-info-muted: var(--g-ui-cyan-200);\n --g-ui-info-fg: var(--g-ui-white);\n \n /* Shadows - Dark theme (dual-layer, Linear/Vercel inspired) */\n --g-ui-shadow-xs: 0px 1px 2px rgba(0, 0, 0, 0.48);\n --g-ui-shadow-sm: 0px 1px 3px rgba(0, 0, 0, 0.48), 0px 1px 2px rgba(0, 0, 0, 0.32);\n --g-ui-shadow-md: 0px 4px 8px -2px rgba(0, 0, 0, 0.48), 0px 2px 4px -2px rgba(0, 0, 0, 0.32);\n --g-ui-shadow-lg: 0px 12px 16px -4px rgba(0, 0, 0, 0.48), 0px 4px 6px -2px rgba(0, 0, 0, 0.24);\n --g-ui-shadow-xl: 0px 20px 24px -4px rgba(0, 0, 0, 0.48), 0px 8px 8px -4px rgba(0, 0, 0, 0.24);\n --g-ui-shadow-2xl: 0px 24px 48px -12px rgba(0, 0, 0, 0.64);\n \n /* Legacy (compatibility) */\n --g-ui-text: var(--g-ui-fg);\n --g-ui-muted: var(--g-ui-fg-muted);\n --g-ui-surface: var(--g-ui-bg-panel);\n --g-ui-primary-strong: var(--g-ui-primary-active);\n --g-ui-shadow: var(--g-ui-shadow-md);\n \n /* Overlays (themeable) */\n --g-ui-overlay-light: rgba(0,0,0,0.4);\n --g-ui-overlay-normal: rgba(0,0,0,0.6);\n --g-ui-overlay-dark: rgba(0,0,0,0.8);\n\n /* Misc */\n --g-ui-radius: 4px;\n --g-ui-font: 'Inter', 'Arimo', 'Poppins', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n --g-ui-space-2: 2px;\n --g-ui-space-3: 3px;\n --g-ui-space-4: 4px;\n --g-ui-space-5: 5px;\n --g-ui-space-6: 6px;\n --g-ui-space-7: 7px;\n --g-ui-space-8: 8px;\n --g-ui-space-9: 9px;\n --g-ui-space-10: 10px;\n --g-ui-space-12: 12px;\n --g-ui-space-13: 13px;\n --g-ui-space-14: 14px;\n --g-ui-space-15: 15px;\n --g-ui-space-16: 16px;\n --g-ui-space-18: 18px;\n --g-ui-space-20: 20px;\n --g-ui-space-22: 22px;\n --g-ui-space-24: 24px;\n --g-ui-space-26: 26px;\n --g-ui-space-28: 28px;\n --g-ui-space-30: 30px;\n --g-ui-space-32: 32px;\n --g-ui-space-36: 36px;\n --g-ui-space-38: 38px;\n --g-ui-space-40: 40px;\n --g-ui-container-padding: var(--g-ui-space-16);\n}\n\n.g-ui-theme-dark {\n --g-ui-bg: var(--g-ui-gray-950);\n --g-ui-bg-subtle: var(--g-ui-gray-800);\n --g-ui-bg-muted: var(--g-ui-gray-700);\n --g-ui-bg-emphasized: var(--g-ui-gray-600);\n --g-ui-bg-inverted: var(--g-ui-gray-50);\n --g-ui-bg-panel: var(--g-ui-gray-900);\n \n --g-ui-fg: var(--g-ui-gray-50);\n --g-ui-fg-muted: var(--g-ui-gray-400);\n --g-ui-fg-subtle: var(--g-ui-gray-500);\n --g-ui-fg-inverted: var(--g-ui-gray-950);\n \n --g-ui-border: var(--g-ui-gray-700);\n --g-ui-border-subtle: var(--g-ui-gray-900);\n --g-ui-border-muted: var(--g-ui-gray-800);\n --g-ui-border-emphasized: var(--g-ui-gray-600);\n \n /* Gray semantic */\n --g-ui-gray-contrast: var(--g-ui-gray-950);\n --g-ui-gray-subtle: var(--g-ui-gray-800);\n --g-ui-gray-muted: var(--g-ui-gray-700);\n --g-ui-gray-emphasized: var(--g-ui-gray-600);\n --g-ui-gray-solid: var(--g-ui-gray-50);\n --g-ui-gray-border: var(--g-ui-gray-700);\n \n /* Primary (dark mode) */\n --g-ui-primary-hover: #818cf8;\n --g-ui-primary-active: #4f46e5;\n \n --g-ui-shadow-xs: 0px 1px 2px rgba(0, 0, 0, 0.48);\n --g-ui-shadow-sm: 0px 1px 3px rgba(0, 0, 0, 0.48), 0px 1px 2px rgba(0, 0, 0, 0.32);\n --g-ui-shadow-md: 0px 4px 8px -2px rgba(0, 0, 0, 0.48), 0px 2px 4px -2px rgba(0, 0, 0, 0.32);\n --g-ui-shadow-lg: 0px 12px 16px -4px rgba(0, 0, 0, 0.48), 0px 4px 6px -2px rgba(0, 0, 0, 0.24);\n --g-ui-shadow-xl: 0px 20px 24px -4px rgba(0, 0, 0, 0.48), 0px 8px 8px -4px rgba(0, 0, 0, 0.24);\n --g-ui-shadow-2xl: 0px 24px 48px -12px rgba(0, 0, 0, 0.64);\n}\n\n.g-ui-theme-light {\n /* Semantic colors - Light theme */\n --g-ui-bg: var(--g-ui-white);\n --g-ui-bg-subtle: var(--g-ui-gray-50);\n --g-ui-bg-muted: var(--g-ui-gray-100);\n --g-ui-bg-emphasized: var(--g-ui-gray-200);\n --g-ui-bg-inverted: var(--g-ui-gray-950);\n --g-ui-bg-panel: var(--g-ui-white);\n --g-ui-bg-error: var(--g-ui-red-50);\n --g-ui-bg-warning: var(--g-ui-orange-50);\n --g-ui-bg-success: var(--g-ui-green-50);\n --g-ui-bg-info: var(--g-ui-blue-50);\n \n --g-ui-fg: var(--g-ui-gray-900);\n --g-ui-fg-muted: var(--g-ui-gray-600);\n --g-ui-fg-subtle: var(--g-ui-gray-400);\n --g-ui-fg-inverted: var(--g-ui-gray-50);\n --g-ui-fg-error: var(--g-ui-red-600);\n --g-ui-fg-warning: var(--g-ui-orange-600);\n --g-ui-fg-success: var(--g-ui-green-600);\n --g-ui-fg-info: var(--g-ui-blue-600);\n \n /* Legacy override for light theme */\n --g-ui-text: var(--g-ui-fg);\n --g-ui-muted: var(--g-ui-fg-muted);\n \n --g-ui-border: var(--g-ui-gray-350);\n --g-ui-border-subtle: var(--g-ui-gray-100);\n --g-ui-border-muted: var(--g-ui-gray-200);\n --g-ui-border-emphasized: var(--g-ui-gray-300);\n --g-ui-border-inverted: var(--g-ui-gray-800);\n --g-ui-border-error: var(--g-ui-red-300);\n --g-ui-border-warning: var(--g-ui-orange-300);\n --g-ui-border-success: var(--g-ui-green-300);\n --g-ui-border-info: var(--g-ui-blue-300);\n \n /* Gray semantic */\n --g-ui-gray-contrast: var(--g-ui-gray-50);\n --g-ui-gray-fg: var(--g-ui-gray-700);\n --g-ui-gray-subtle: var(--g-ui-gray-50);\n --g-ui-gray-muted: var(--g-ui-gray-100);\n --g-ui-gray-emphasized: var(--g-ui-gray-200);\n --g-ui-gray-solid: var(--g-ui-gray-900);\n --g-ui-gray-focus-ring: var(--g-ui-gray-400);\n --g-ui-gray-border: var(--g-ui-gray-200);\n \n /* Red semantic */\n --g-ui-red-contrast: white;\n --g-ui-red-fg: var(--g-ui-red-600);\n --g-ui-red-subtle: var(--g-ui-red-50);\n --g-ui-red-muted: var(--g-ui-red-100);\n --g-ui-red-emphasized: var(--g-ui-red-200);\n --g-ui-red-solid: var(--g-ui-red-600);\n --g-ui-red-focus-ring: var(--g-ui-red-500);\n --g-ui-red-border: var(--g-ui-red-300);\n \n /* Orange semantic */\n --g-ui-orange-contrast: white;\n --g-ui-orange-fg: var(--g-ui-orange-600);\n --g-ui-orange-subtle: var(--g-ui-orange-50);\n --g-ui-orange-muted: var(--g-ui-orange-100);\n --g-ui-orange-emphasized: var(--g-ui-orange-200);\n --g-ui-orange-solid: var(--g-ui-orange-600);\n --g-ui-orange-focus-ring: var(--g-ui-orange-500);\n --g-ui-orange-border: var(--g-ui-orange-300);\n \n /* Green semantic */\n --g-ui-green-contrast: white;\n --g-ui-green-fg: var(--g-ui-green-600);\n --g-ui-green-subtle: var(--g-ui-green-50);\n --g-ui-green-muted: var(--g-ui-green-100);\n --g-ui-green-emphasized: var(--g-ui-green-200);\n --g-ui-green-solid: var(--g-ui-green-600);\n --g-ui-green-focus-ring: var(--g-ui-green-500);\n --g-ui-green-border: var(--g-ui-green-300);\n \n /* Blue semantic */\n --g-ui-blue-contrast: white;\n --g-ui-blue-fg: var(--g-ui-blue-600);\n --g-ui-blue-subtle: var(--g-ui-blue-50);\n --g-ui-blue-muted: var(--g-ui-blue-100);\n --g-ui-blue-emphasized: var(--g-ui-blue-200);\n --g-ui-blue-solid: var(--g-ui-blue-600);\n --g-ui-blue-focus-ring: var(--g-ui-blue-500);\n --g-ui-blue-border: var(--g-ui-blue-300);\n \n /* Yellow semantic */\n --g-ui-yellow-contrast: black;\n --g-ui-yellow-fg: var(--g-ui-yellow-700);\n --g-ui-yellow-subtle: var(--g-ui-yellow-50);\n --g-ui-yellow-muted: var(--g-ui-yellow-100);\n --g-ui-yellow-emphasized: var(--g-ui-yellow-200);\n --g-ui-yellow-solid: var(--g-ui-yellow-400);\n --g-ui-yellow-focus-ring: var(--g-ui-yellow-500);\n --g-ui-yellow-border: var(--g-ui-yellow-300);\n \n /* Teal semantic */\n --g-ui-teal-contrast: white;\n --g-ui-teal-fg: var(--g-ui-teal-600);\n --g-ui-teal-subtle: var(--g-ui-teal-50);\n --g-ui-teal-muted: var(--g-ui-teal-100);\n --g-ui-teal-emphasized: var(--g-ui-teal-200);\n --g-ui-teal-solid: var(--g-ui-teal-600);\n --g-ui-teal-focus-ring: var(--g-ui-teal-500);\n --g-ui-teal-border: var(--g-ui-teal-300);\n \n /* Purple semantic */\n --g-ui-purple-contrast: white;\n --g-ui-purple-fg: var(--g-ui-purple-600);\n --g-ui-purple-subtle: var(--g-ui-purple-50);\n --g-ui-purple-muted: var(--g-ui-purple-100);\n --g-ui-purple-emphasized: var(--g-ui-purple-200);\n --g-ui-purple-solid: var(--g-ui-purple-600);\n --g-ui-purple-focus-ring: var(--g-ui-purple-500);\n --g-ui-purple-border: var(--g-ui-purple-300);\n \n /* Pink semantic */\n --g-ui-pink-contrast: white;\n --g-ui-pink-fg: var(--g-ui-pink-600);\n --g-ui-pink-subtle: var(--g-ui-pink-50);\n --g-ui-pink-muted: var(--g-ui-pink-100);\n --g-ui-pink-emphasized: var(--g-ui-pink-200);\n --g-ui-pink-solid: var(--g-ui-pink-600);\n --g-ui-pink-focus-ring: var(--g-ui-pink-500);\n --g-ui-pink-border: var(--g-ui-pink-300);\n \n /* Cyan semantic */\n --g-ui-cyan-contrast: white;\n --g-ui-cyan-fg: var(--g-ui-cyan-600);\n --g-ui-cyan-subtle: var(--g-ui-cyan-50);\n --g-ui-cyan-muted: var(--g-ui-cyan-100);\n --g-ui-cyan-emphasized: var(--g-ui-cyan-200);\n --g-ui-cyan-solid: var(--g-ui-cyan-600);\n --g-ui-cyan-focus-ring: var(--g-ui-cyan-500);\n --g-ui-cyan-border: var(--g-ui-cyan-300);\n \n /* Primary overrides for light theme */\n --g-ui-primary-hover: #4f46e5;\n --g-ui-primary-active: #4338ca;\n --g-ui-primary-subtle: rgba(99, 102, 241, 0.06);\n --g-ui-primary-muted: rgba(99, 102, 241, 0.12);\n --g-ui-primary-emphasized: rgba(99, 102, 241, 0.2);\n \n /* Shadows - Light theme (dual-layer, Untitled UI inspired) */\n --g-ui-shadow-xs: 0px 1px 2px rgba(16, 24, 40, 0.05);\n --g-ui-shadow-sm: 0px 1px 3px rgba(16, 24, 40, 0.1), 0px 1px 2px rgba(16, 24, 40, 0.06);\n --g-ui-shadow-md: 0px 4px 8px -2px rgba(16, 24, 40, 0.1), 0px 2px 4px -2px rgba(16, 24, 40, 0.06);\n --g-ui-shadow-lg: 0px 12px 16px -4px rgba(16, 24, 40, 0.08), 0px 4px 6px -2px rgba(16, 24, 40, 0.03);\n --g-ui-shadow-xl: 0px 20px 24px -4px rgba(16, 24, 40, 0.08), 0px 8px 8px -4px rgba(16, 24, 40, 0.03);\n --g-ui-shadow-2xl: 0px 24px 48px -12px rgba(16, 24, 40, 0.18);\n}\n\n* {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nbody {\n margin: 0;\n padding: 0;\n background: var(--g-ui-bg);\n color: var(--g-ui-text);\n font-family: var(--g-ui-font);\n font-size: 14px;\n}\n\n.g-ui-reset {\n font-family: var(--g-ui-font);\n color: var(--g-ui-text);\n}\n\n.g-ui-text {\n font-family: var(--g-ui-font);\n font-weight: 400;\n color: var(--g-ui-text);\n}\n.g-ui-text-size-xs { font-size: 12px; line-height: 1.4; }\n.g-ui-text-size-sm { font-size: 14px; line-height: 1.45; }\n.g-ui-text-size-md { font-size: 16px; line-height: 1.5; }\n.g-ui-text-size-lg { font-size: 18px; line-height: 1.55; }\n.g-ui-text-size-xl { font-size: 20px; line-height: 1.6; }\n.g-ui-text-weight-400 { font-weight: 400; }\n.g-ui-text-weight-500 { font-weight: 500; }\n.g-ui-text-weight-600 { font-weight: 600; }\n.g-ui-text-weight-700 { font-weight: 700; }\n.g-ui-text-dimmed { color: var(--g-ui-muted); }\n.g-ui-text-muted { color: var(--g-ui-muted); }\n.g-ui-text-primary { color: var(--g-ui-primary); }\n.g-ui-text-success { color: var(--g-ui-success); }\n.g-ui-text-danger { color: var(--g-ui-danger); }\n.g-ui-text-align-left { text-align: left; }\n.g-ui-text-align-center { text-align: center; }\n.g-ui-text-align-right { text-align: right; }\n.g-ui-text-decoration-underline { text-decoration: underline; }\n.g-ui-text-decoration-line-through { text-decoration: line-through; }\n.g-ui-text-decoration-overline { text-decoration: overline; }\n.g-ui-text-decoration-none { text-decoration: none; }\n\n.g-ui-title {\n font-family: var(--g-ui-font);\n color: var(--g-ui-text);\n margin: 0;\n font-weight: 700;\n}\n.g-ui-title-order-1 { font-size: 38px; }\n.g-ui-title-order-2 { font-size: 32px; }\n.g-ui-title-order-3 { font-size: 28px; }\n.g-ui-title-order-4 { font-size: 22px; }\n.g-ui-title-order-5 { font-size: 18px; }\n.g-ui-title-order-6 { font-size: 16px; }\n\n.g-ui-stack {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-stack-gap, 0);\n}\n.g-ui-gap-none { gap: 0; }\n.g-ui-gap-xs { gap: var(--g-ui-space-4); }\n.g-ui-gap-sm { gap: var(--g-ui-space-8); }\n.g-ui-gap-md { gap: var(--g-ui-space-12); }\n.g-ui-gap-lg { gap: var(--g-ui-space-16); }\n.g-ui-gap-xl { gap: var(--g-ui-space-20); }\n.g-ui-align-start { align-items: flex-start; }\n.g-ui-align-center { align-items: center; }\n.g-ui-align-end { align-items: flex-end; }\n.g-ui-justify-start { justify-content: flex-start; }\n.g-ui-justify-center { justify-content: center; }\n.g-ui-justify-end { justify-content: flex-end; }\n.g-ui-justify-between { justify-content: space-between; }\n\n.g-ui-group {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n}\n.g-ui-no-wrap { flex-wrap: nowrap; }\n\n.g-ui-container {\n width: 100%;\n margin: 0 auto;\n padding: 0 var(--g-ui-container-padding, var(--g-ui-space-16));\n box-sizing: border-box;\n}\n.g-ui-container-size-xs { max-width: 540px; }\n.g-ui-container-size-sm { max-width: 720px; }\n.g-ui-container-size-md { max-width: 960px; }\n.g-ui-container-size-lg { max-width: 1140px; }\n.g-ui-container-size-xl { max-width: 1320px; }\n.g-ui-container-fluid { max-width: 100%; }\n\n.g-ui-card {\n background: var(--g-ui-surface);\n border-radius: var(--g-ui-radius);\n box-shadow: none;\n border: 1px solid var(--g-ui-border);\n}\nbody .g-ui-card-border-default { border: 1px solid var(--g-ui-border); }\nbody .g-ui-card-border-none { border: none; }\nbody .g-ui-card-border-light { border: 1px solid var(--g-ui-border-light); }\nbody .g-ui-card-border-dark { border: 1px solid var(--g-ui-border-dark); }\nbody .g-ui-card-border-primary { border: 1px solid var(--g-ui-primary); }\nbody .g-ui-card-border-success { border: 1px solid var(--g-ui-success); }\nbody .g-ui-card-border-danger { border: 1px solid var(--g-ui-danger); }\nbody .g-ui-card-border-warning { border: 1px solid var(--g-ui-warning); }\nbody .g-ui-card-border-info { border: 1px solid var(--g-ui-info); }\nbody .g-ui-card-border-subtle { border: 1px solid var(--g-ui-border-subtle); }\nbody .g-ui-card-border-emphasized { border: 1px solid var(--g-ui-border-emphasized); }\nbody .g-ui-card-border-inverted { border: 1px solid var(--g-ui-border-inverted); }\nbody .g-ui-card-border-error { border: 1px solid var(--g-ui-border-error); }\nbody .g-ui-card-border-warning { border: 1px solid var(--g-ui-border-warning); }\nbody .g-ui-card-border-success { border: 1px solid var(--g-ui-border-success); }\nbody .g-ui-card-border-info { border: 1px solid var(--g-ui-border-info); }\n\nbody .g-ui-card-padding-xs { padding: var(--g-ui-space-10); }\nbody .g-ui-card-padding-sm { padding: var(--g-ui-space-14); }\nbody .g-ui-card-padding-md { padding: var(--g-ui-space-18); }\nbody .g-ui-card-padding-lg { padding: var(--g-ui-space-24); }\nbody .g-ui-card-radius-sm { border-radius: 8px; }\nbody .g-ui-card-radius-md { border-radius: 10px; }\nbody .g-ui-card-radius-lg { border-radius: 14px; }\nbody .g-ui-card-shadow-none { box-shadow: none; }\nbody .g-ui-card-shadow-sm { box-shadow: var(--g-ui-shadow-sm); }\nbody .g-ui-card-shadow-md { box-shadow: var(--g-ui-shadow-md); }\nbody .g-ui-card-shadow-lg { box-shadow: var(--g-ui-shadow-lg); }\n.g-ui-card-title {\n margin-bottom: var(--g-ui-space-8);\n font-weight: 600;\n font-size: 16px;\n color: var(--g-ui-text);\n}\n.g-ui-card-content {\n color: var(--g-ui-muted);\n margin-bottom: var(--g-ui-space-10);\n}\n.g-ui-card-actions {\n position:relative;\n margin-top: var(--g-ui-space-10);\n display: flex;\n justify-content: flex-end;\n gap: var(--g-ui-space-8);\n border-top: 1px solid var(--g-ui-border);\n box-sizing: border-box;\n}\n\n.g-ui-card-padding-xs .g-ui-card-title, .g-ui-card-padding-xs .g-ui-card-content { margin-bottom: var(--g-ui-space-10); }\n.g-ui-card-padding-sm .g-ui-card-title, .g-ui-card-padding-sm .g-ui-card-content { margin-bottom: var(--g-ui-space-14); }\n.g-ui-card-padding-md .g-ui-card-title, .g-ui-card-padding-md .g-ui-card-content { margin-bottom: var(--g-ui-space-18); }\n.g-ui-card-padding-lg .g-ui-card-title, .g-ui-card-padding-lg .g-ui-card-content { margin-bottom: var(--g-ui-space-24); }\n\n.g-ui-card-padding-xs .g-ui-card-actions { left: calc(0px - var(--g-ui-space-10)); width: calc(100% + var(--g-ui-space-10) + var(--g-ui-space-10)); padding: var(--g-ui-space-10) var(--g-ui-space-10) 0 var(--g-ui-space-10); }\n.g-ui-card-padding-sm .g-ui-card-actions { left: calc(0px - var(--g-ui-space-14)); width: calc(100% + var(--g-ui-space-14) + var(--g-ui-space-14)); padding: var(--g-ui-space-14) var(--g-ui-space-14) 0 var(--g-ui-space-14); }\n.g-ui-card-padding-md .g-ui-card-actions { left: calc(0px - var(--g-ui-space-18)); width: calc(100% + var(--g-ui-space-18) + var(--g-ui-space-18)); padding: var(--g-ui-space-18) var(--g-ui-space-18) 0 var(--g-ui-space-18); }\n.g-ui-card-padding-lg .g-ui-card-actions { left: calc(0px - var(--g-ui-space-24)); width: calc(100% + var(--g-ui-space-24) + var(--g-ui-space-24)); padding: var(--g-ui-space-24) var(--g-ui-space-24) 0 var(--g-ui-space-24); }\n\n.g-ui-badge {\n display: inline-flex;\n align-items: center;\n gap: var(--g-ui-space-6);\n border-radius: 999px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.25px;\n white-space: nowrap;\n}\n.g-ui-badge-size-xs { font-size: 9px; height: 16px; padding: 0 var(--g-ui-space-6); }\n.g-ui-badge-size-sm { font-size: 10px; height: 18px; padding: 0 var(--g-ui-space-8); }\n.g-ui-badge-size-md { font-size: 11px; height: 20px; padding: 0 var(--g-ui-space-10); }\n.g-ui-badge-size-lg { font-size: 13px; height: 26px; padding: 0 var(--g-ui-space-12); }\n.g-ui-badge-size-xl { font-size: 16px; height: 32px; padding: 0 var(--g-ui-space-16); }\n.g-ui-badge-variant-filled {\n background: var(--g-ui-primary);\n color: var(--g-ui-primary-fg);\n border: 1px solid transparent;\n}\n.g-ui-badge-variant-light {\n background: var(--g-ui-primary-subtle);\n color: var(--g-ui-primary);\n border: 1px solid var(--g-ui-primary-muted);\n}\n.g-ui-badge-variant-outline {\n background: transparent;\n color: var(--g-ui-primary);\n border: 1px solid var(--g-ui-primary);\n}\n.g-ui-badge-variant-dot {\n background: transparent;\n color: var(--g-ui-text);\n border: 1px solid var(--g-ui-border);\n}\n.g-ui-badge-dot {\n display: inline-flex;\n align-items: center;\n gap: var(--g-ui-space-6);\n}\n.g-ui-badge-dot::before {\n content: '';\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--g-ui-success);\n}\n\n.g-ui-button {\n border: 0;\n border-radius: 8px;\n cursor: pointer;\n font-weight: 600;\n transition: transform .08s ease, background .12s ease, border .12s ease, color .12s ease;\n line-height: 1;\n display: inline-flex;\n align-items: center;\n}\n.g-ui-button:active { transform: translateY(1px); }\n.g-ui-button:disabled { opacity: 0.6; cursor: not-allowed; }\n.g-ui-button-full { width: 100%; }\n.g-ui-button-loading { opacity: 0.8; }\n.g-ui-button-section-left { margin-right: var(--g-ui-space-8); display: inline-flex; }\n.g-ui-button-section-right { margin-left: var(--g-ui-space-8); display: inline-flex; }\n.g-ui-button-variant-filled { background: var(--g-ui-primary); color: var(--g-ui-primary-fg); border: 1px solid transparent; }\n.g-ui-button-variant-light { background: var(--g-ui-primary-subtle); color: var(--g-ui-primary); border: 1px solid var(--g-ui-primary-muted); }\n.g-ui-button-variant-outline { background: transparent; color: var(--g-ui-primary); border: 1px solid var(--g-ui-primary); }\n.g-ui-button-variant-subtle { background: transparent; color: var(--g-ui-text); border: 1px solid var(--g-ui-border); }\n.g-ui-button-variant-transparent { background: transparent; color: var(--g-ui-text); border: 1px solid transparent; }\n.g-ui-button-variant-filled:hover { background: var(--g-ui-primary-hover); }\n.g-ui-button-variant-light:hover { background: var(--g-ui-primary-muted); }\n.g-ui-button-variant-outline:hover { background: var(--g-ui-primary-subtle); }\n.g-ui-button-variant-subtle:hover { background: var(--g-ui-bg-muted); }\n.g-ui-button-variant-transparent:hover { background: var(--g-ui-bg-muted); }\n\n.g-ui-button-color-primary.g-ui-button-variant-filled { background: var(--g-ui-primary); color: var(--g-ui-primary-fg); border: 1px solid transparent; }\n.g-ui-button-color-primary.g-ui-button-variant-light { background: var(--g-ui-primary-subtle); color: var(--g-ui-primary); border: 1px solid var(--g-ui-primary-muted); }\n.g-ui-button-color-primary.g-ui-button-variant-outline { background: transparent; color: var(--g-ui-primary); border: 1px solid var(--g-ui-primary); }\n.g-ui-button-color-primary.g-ui-button-variant-subtle { background: transparent; color: var(--g-ui-text); border: 1px solid var(--g-ui-border); }\n.g-ui-button-color-primary.g-ui-button-variant-transparent { background: transparent; color: var(--g-ui-text); border: 1px solid transparent; }\n.g-ui-button-color-primary.g-ui-button-variant-filled:hover { background: var(--g-ui-primary-hover); }\n.g-ui-button-color-primary.g-ui-button-variant-light:hover { background: var(--g-ui-primary-muted); }\n.g-ui-button-color-primary.g-ui-button-variant-outline:hover { background: var(--g-ui-primary-subtle); }\n.g-ui-button-color-primary.g-ui-button-variant-subtle:hover { background: var(--g-ui-bg-muted); }\n.g-ui-button-color-primary.g-ui-button-variant-transparent:hover { background: var(--g-ui-bg-muted); }\n\n.g-ui-button-color-success.g-ui-button-variant-filled { background: var(--g-ui-success); color: var(--g-ui-success-fg); border: 1px solid transparent; }\n.g-ui-button-color-success.g-ui-button-variant-light { background: var(--g-ui-success-subtle); color: var(--g-ui-success); border: 1px solid var(--g-ui-success-muted); }\n.g-ui-button-color-success.g-ui-button-variant-outline { background: transparent; color: var(--g-ui-success); border: 1px solid var(--g-ui-success); }\n.g-ui-button-color-success.g-ui-button-variant-subtle { background: transparent; color: var(--g-ui-text); border: 1px solid var(--g-ui-border); }\n.g-ui-button-color-success.g-ui-button-variant-transparent { background: transparent; color: var(--g-ui-text); border: 1px solid transparent; }\n.g-ui-button-color-success.g-ui-button-variant-filled:hover { background: var(--g-ui-success-hover); }\n.g-ui-button-color-success.g-ui-button-variant-light:hover { background: var(--g-ui-success-muted); }\n.g-ui-button-color-success.g-ui-button-variant-outline:hover { background: var(--g-ui-success-subtle); }\n.g-ui-button-color-success.g-ui-button-variant-subtle:hover { background: var(--g-ui-bg-muted); }\n.g-ui-button-color-success.g-ui-button-variant-transparent:hover { background: var(--g-ui-bg-muted); }\n\n.g-ui-button-color-warning.g-ui-button-variant-filled { background: var(--g-ui-warning); color: var(--g-ui-warning-fg); border: 1px solid transparent; }\n.g-ui-button-color-warning.g-ui-button-variant-light { background: var(--g-ui-warning-subtle); color: var(--g-ui-warning); border: 1px solid var(--g-ui-warning-muted); }\n.g-ui-button-color-warning.g-ui-button-variant-outline { background: transparent; color: var(--g-ui-warning); border: 1px solid var(--g-ui-warning); }\n.g-ui-button-color-warning.g-ui-button-variant-subtle { background: transparent; color: var(--g-ui-text); border: 1px solid var(--g-ui-border); }\n.g-ui-button-color-warning.g-ui-button-variant-transparent { background: transparent; color: var(--g-ui-text); border: 1px solid transparent; }\n.g-ui-button-color-warning.g-ui-button-variant-filled:hover { background: var(--g-ui-warning-hover); }\n.g-ui-button-color-warning.g-ui-button-variant-light:hover { background: var(--g-ui-warning-muted); }\n.g-ui-button-color-warning.g-ui-button-variant-outline:hover { background: var(--g-ui-warning-subtle); }\n.g-ui-button-color-warning.g-ui-button-variant-subtle:hover { background: var(--g-ui-bg-muted); }\n.g-ui-button-color-warning.g-ui-button-variant-transparent:hover { background: var(--g-ui-bg-muted); }\n\n.g-ui-button-color-danger.g-ui-button-variant-filled { background: var(--g-ui-danger); color: var(--g-ui-danger-fg); border: 1px solid transparent; }\n.g-ui-button-color-danger.g-ui-button-variant-light { background: var(--g-ui-danger-subtle); color: var(--g-ui-danger); border: 1px solid var(--g-ui-danger-muted); }\n.g-ui-button-color-danger.g-ui-button-variant-outline { background: transparent; color: var(--g-ui-danger); border: 1px solid var(--g-ui-danger); }\n.g-ui-button-color-danger.g-ui-button-variant-subtle { background: transparent; color: var(--g-ui-text); border: 1px solid var(--g-ui-border); }\n.g-ui-button-color-danger.g-ui-button-variant-transparent { background: transparent; color: var(--g-ui-text); border: 1px solid transparent; }\n.g-ui-button-color-danger.g-ui-button-variant-filled:hover { background: var(--g-ui-danger-hover); }\n.g-ui-button-color-danger.g-ui-button-variant-light:hover { background: var(--g-ui-danger-muted); }\n.g-ui-button-color-danger.g-ui-button-variant-outline:hover { background: var(--g-ui-danger-subtle); }\n.g-ui-button-color-danger.g-ui-button-variant-subtle:hover { background: var(--g-ui-bg-muted); }\n.g-ui-button-color-danger.g-ui-button-variant-transparent:hover { background: var(--g-ui-bg-muted); }\n\n.g-ui-button-color-info.g-ui-button-variant-filled { background: var(--g-ui-info); color: var(--g-ui-info-fg); border: 1px solid transparent; }\n.g-ui-button-color-info.g-ui-button-variant-light { background: var(--g-ui-info-subtle); color: var(--g-ui-info); border: 1px solid var(--g-ui-info-muted); }\n.g-ui-button-color-info.g-ui-button-variant-outline { background: transparent; color: var(--g-ui-info); border: 1px solid var(--g-ui-info); }\n.g-ui-button-color-info.g-ui-button-variant-subtle { background: transparent; color: var(--g-ui-text); border: 1px solid var(--g-ui-border); }\n.g-ui-button-color-info.g-ui-button-variant-transparent { background: transparent; color: var(--g-ui-text); border: 1px solid transparent; }\n.g-ui-button-color-info.g-ui-button-variant-filled:hover { background: var(--g-ui-info-hover); }\n.g-ui-button-color-info.g-ui-button-variant-light:hover { background: var(--g-ui-info-muted); }\n.g-ui-button-color-info.g-ui-button-variant-outline:hover { background: var(--g-ui-info-subtle); }\n.g-ui-button-color-info.g-ui-button-variant-subtle:hover { background: var(--g-ui-bg-muted); }\n.g-ui-button-color-info.g-ui-button-variant-transparent:hover { background: var(--g-ui-bg-muted); }\n\n\n.g-ui-button-size-xs { font-size: 12px; height: 30px; padding: 0 var(--g-ui-space-8); }\n.g-ui-button-size-sm { font-size: 13px; height: 36px; padding: 0 var(--g-ui-space-10); }\n.g-ui-button-size-md { font-size: 14px; height: 42px; padding: 0 var(--g-ui-space-10); }\n.g-ui-button-size-lg { font-size: 15px; height: 50px; padding: 0 var(--g-ui-space-12); }\n.g-ui-button-size-xl { font-size: 16px; height: 60px; padding: 0 var(--g-ui-space-14); }\n\n.g-ui-input-wrapper {\n width: 100%;\n border-radius: 8px;\n border: 1px solid var(--g-ui-border);\n background: var(--g-ui-surface);\n color: var(--g-ui-text);\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-8);\n padding: 0 var(--g-ui-space-12);\n box-sizing: border-box;\n}\n.g-ui-input-wrapper:focus-within {\n border-color: var(--g-ui-primary);\n}\n.g-ui-input {\n width: 100%;\n border: 0;\n background: transparent;\n color: inherit;\n padding: 0;\n height: 100%;\n font-size: inherit;\n}\n.g-ui-input:focus,\n.g-ui-input:focus-within {\n outline: none;\n}\n.g-ui-input::placeholder {\n color: var(--g-ui-muted);\n transition: opacity .12s ease;\n}\n.g-ui-input:focus::placeholder {\n opacity: 0.5;\n}\n.g-ui-input-section {\n display: inline-flex;\n align-items: center;\n color: var(--g-ui-muted);\n}\n.g-ui-input-error {\n border-color: var(--g-ui-danger);\n}\n.g-ui-input-size-xs { font-size: 12px; height: 30px; padding: 0 var(--g-ui-space-10); }\n.g-ui-input-size-sm { font-size: 13px; height: 36px; padding: 0 var(--g-ui-space-12); }\n.g-ui-input-size-md { font-size: 14px; height: 42px; padding: 0 var(--g-ui-space-14); }\n.g-ui-input-size-lg { font-size: 15px; height: 50px; padding: 0 var(--g-ui-space-16); }\n.g-ui-input-size-xl { font-size: 16px; height: 60px; padding: 0 var(--g-ui-space-20); }\n.g-ui-text-input {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-6);\n}\n.g-ui-text-ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.g-ui-text-input-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--g-ui-text);\n}\n.g-ui-text-input-description {\n font-size: 12px;\n color: var(--g-ui-muted);\n}\n.g-ui-text-input-error-text {\n font-size: 12px;\n color: var(--g-ui-danger);\n}\n.g-ui-date-input-popover .g-ui-popover-dropdown {\n padding: 0;\n border-width:0;\n}\n\n.g-ui-modal-overlay {\n position: fixed;\n inset: 0;\n background: var(--g-ui-overlay-normal);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 999;\n}\n.g-ui-modal-overlay-light { background: var(--g-ui-overlay-light); }\n.g-ui-modal-overlay-normal { background: var(--g-ui-overlay-normal); }\n.g-ui-modal-overlay-dark { background: var(--g-ui-overlay-dark); }\n.g-ui-modal-centered { align-items: center; justify-content: center; }\n.g-ui-modal-top { align-items: flex-start; justify-content: center; padding-top: var(--g-ui-space-40); }\n.g-ui-modal-position-top-left { align-items: flex-start; justify-content: flex-start; padding: var(--g-ui-space-40) var(--g-ui-space-20); }\n.g-ui-modal-position-top-center { align-items: flex-start; justify-content: center; padding: var(--g-ui-space-40) var(--g-ui-space-20); }\n.g-ui-modal-position-top-right { align-items: flex-start; justify-content: flex-end; padding: var(--g-ui-space-40) var(--g-ui-space-20); }\n.g-ui-modal-position-center-left { align-items: center; justify-content: flex-start; padding: var(--g-ui-space-20); }\n.g-ui-modal-position-center { align-items: center; justify-content: center; padding: var(--g-ui-space-20); }\n.g-ui-modal-position-center-right { align-items: center; justify-content: flex-end; padding: var(--g-ui-space-20); }\n.g-ui-modal-position-bottom-left { align-items: flex-end; justify-content: flex-start; padding: var(--g-ui-space-20); padding-bottom: var(--g-ui-space-40); }\n.g-ui-modal-position-bottom-center { align-items: flex-end; justify-content: center; padding: var(--g-ui-space-20); padding-bottom: var(--g-ui-space-40); }\n.g-ui-modal-position-bottom-right { align-items: flex-end; justify-content: flex-end; padding: var(--g-ui-space-20); padding-bottom: var(--g-ui-space-40); }\n.g-ui-modal {\n background: var(--g-ui-bg);\n border: 1px solid var(--g-ui-border-muted);\n border-radius: 8px;\n padding: var(--g-ui-space-16);\n min-width: 320px;\n max-width: 780px;\n box-shadow: var(--g-ui-shadow-lg);\n}\n.g-ui-modal-size-sm { width: 380px; }\n.g-ui-modal-size-md { width: 440px; }\n.g-ui-modal-size-lg { width: 620px; }\n.g-ui-modal-size-xl { width: 780px; }\n.g-ui-modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: var(--g-ui-space-12);\n}\n.g-ui-modal-title { font-weight: 700; }\n.g-ui-modal-close {\n padding: 0;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.g-ui-modal-close svg {\n width: 16px;\n height: 16px;\n fill: currentColor;\n}\n\n.g-ui-checkbox {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-6);\n box-sizing: border-box;\n}\n.g-ui-checkbox-control {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: var(--g-ui-space-10);\n cursor: pointer;\n}\n.g-ui-checkbox-indeterminate,\n.g-ui-checkbox-checked {\n position:absolute;\n color: var(--g-ui-primary-fg);\n fill: var(--g-ui-primary-fg);\n}\n.g-ui-checkbox-indeterminate svg,\n.g-ui-checkbox-checked svg {\n fill: var(--g-ui-primary-fg);\n}\n.g-ui-checkbox-input {\n appearance: none;\n width: var(--g-ui-control-size, 16px);\n height: var(--g-ui-control-size, 16px);\n border: 1px solid var(--g-ui-border);\n border-radius: 4px;\n background: var(--g-ui-bg);\n position: relative;\n transition: background-color .12s ease, border-color .12s ease;\n cursor: pointer;\n}\n.g-ui-checkbox-input:focus-visible {\n outline: 2px solid var(--g-ui-primary);\n outline-offset: 2px;\n}\n.g-ui-checkbox-input:checked {\n background: var(--g-ui-primary);\n border-color: var(--g-ui-primary);\n}\n.g-ui-checkbox-input:indeterminate {\n background: var(--g-ui-primary);\n border-color: var(--g-ui-primary);\n}\n\n.g-ui-checkbox-label { font-size: 14px; }\n.g-ui-checkbox-description { font-size: 12px; color: var(--g-ui-muted); }\n.g-ui-checkbox-size-xs { --g-ui-control-size: 16px; --g-ui-control-inner-offset: 4px; }\n.g-ui-checkbox-size-sm { --g-ui-control-size: 20px; --g-ui-control-inner-offset: 5px; }\n.g-ui-checkbox-size-md { --g-ui-control-size: 24px; --g-ui-control-inner-offset: 6px; }\n.g-ui-checkbox-size-lg { --g-ui-control-size: 30px; --g-ui-control-inner-offset: 7px; }\n.g-ui-checkbox-size-xl { --g-ui-control-size: 36px; --g-ui-control-inner-offset: 8px; }\n\n.g-ui-checkbox-size-xs .g-ui-checkbox-indeterminate { top: 2px;left:4px; }\n.g-ui-checkbox-size-xs .g-ui-checkbox-indeterminate svg { width: 16px; height: 16px; }\n.g-ui-checkbox-size-sm .g-ui-checkbox-indeterminate { top:3px; left:4px; }\n.g-ui-checkbox-size-sm .g-ui-checkbox-indeterminate svg { width: 20px; height:20px; }\n.g-ui-checkbox-size-md .g-ui-checkbox-indeterminate { top:0px; left:0px; }\n.g-ui-checkbox-size-md .g-ui-checkbox-indeterminate svg { width: 24px; height: 24px; }\n.g-ui-checkbox-size-lg .g-ui-checkbox-indeterminate { top:4px; left:5px; }\n.g-ui-checkbox-size-lg .g-ui-checkbox-indeterminate svg { width: 28px; height: 28px; }\n.g-ui-checkbox-size-xl .g-ui-checkbox-indeterminate { top:5px; left:6px; }\n.g-ui-checkbox-size-xl .g-ui-checkbox-indeterminate svg { width: 32px; height: 32px; }\n\n.g-ui-checkbox-size-xs .g-ui-checkbox-checked { top: 0px;left:0.5px; }\n.g-ui-checkbox-size-xs .g-ui-checkbox-checked svg { width: 16px; height: 16px; }\n.g-ui-checkbox-size-sm .g-ui-checkbox-checked { top:0px; left:0.3px; }\n.g-ui-checkbox-size-sm .g-ui-checkbox-checked svg { width: 20px; height:20px; }\n.g-ui-checkbox-size-md .g-ui-checkbox-checked { top:0px; left:0px; }\n.g-ui-checkbox-size-md .g-ui-checkbox-checked svg { width: 24px; height: 24px; }\n.g-ui-checkbox-size-lg .g-ui-checkbox-checked { top:1px; left:1px; }\n.g-ui-checkbox-size-lg .g-ui-checkbox-checked svg { width: 28px; height: 28px; }\n.g-ui-checkbox-size-xl .g-ui-checkbox-checked { top:2px; left:3px; }\n.g-ui-checkbox-size-xl .g-ui-checkbox-checked svg { width: 32px; height: 32px; }\n\n.g-ui-switch {\n display: inline-flex;\n align-items: center;\n gap: var(--g-ui-space-10);\n cursor: pointer;\n}\n.g-ui-switch-input {\n appearance: none;\n width: var(--g-ui-switch-width, 36px);\n height: var(--g-ui-switch-height, 20px);\n border-radius: 999px;\n background: var(--g-ui-bg-muted);\n border: 1px solid var(--g-ui-border);\n position: relative;\n transition: background .15s ease, border .15s ease;\n}\n.g-ui-switch-input:focus-visible {\n outline: 2px solid var(--g-ui-primary);\n outline-offset: 2px;\n}\n.g-ui-switch-input::after {\n content: '';\n position: absolute;\n width: var(--g-ui-switch-thumb, 14px);\n height: var(--g-ui-switch-thumb, 14px);\n border-radius: 50%;\n background: var(--g-ui-white);\n top: var(--g-ui-switch-offset, 2px);\n left: var(--g-ui-switch-offset, 2px);\n transition: transform .15s ease;\n}\n.g-ui-switch-input:checked {\n background: var(--g-ui-primary);\n border-color: var(--g-ui-primary);\n}\n.g-ui-switch-input:checked::after {\n transform: translateX(calc(var(--g-ui-switch-width, 36px) - var(--g-ui-switch-thumb, 14px) - (var(--g-ui-switch-offset, 2px) * 2) - 2px));\n}\n.g-ui-switch-label { font-size: 14px; }\n.g-ui-switch-size-xs { --g-ui-switch-width: 32px; --g-ui-switch-height: 16px; --g-ui-switch-thumb: 12px; --g-ui-switch-offset: 1px; }\n.g-ui-switch-size-sm { --g-ui-switch-width: 38px; --g-ui-switch-height: 20px; --g-ui-switch-thumb: 14px; --g-ui-switch-offset: 2px; }\n.g-ui-switch-size-md { --g-ui-switch-width: 46px; --g-ui-switch-height: 24px; --g-ui-switch-thumb: 18px; --g-ui-switch-offset: 2px; }\n.g-ui-switch-size-lg { --g-ui-switch-width: 56px; --g-ui-switch-height: 30px; --g-ui-switch-thumb: 22px; --g-ui-switch-offset: 3px; }\n.g-ui-switch-size-xl { --g-ui-switch-width: 72px; --g-ui-switch-height: 36px; --g-ui-switch-thumb: 28px; --g-ui-switch-offset: 3px; }\n\n.g-ui-select-root {\n position: relative;\n width: 100%;\n}\n.g-ui-select {\n flex: 1;\n display: flex;\n align-items: center;\n min-height: 100%;\n cursor: pointer;\n color: var(--g-ui-text);\n font-size: inherit;\n}\n.g-ui-select-value {\n flex: 1;\n}\n.g-ui-select-placeholder {\n color: var(--g-ui-muted);\n}\n.g-ui-select-caret {\n color: var(--g-ui-muted);\n font-size: 12px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.g-ui-select-caret svg{\n fill: var(--g-ui-muted);\n}\n.g-ui-select-dropdown {\n position: absolute;\n top: calc(100% + var(--g-ui-space-6));\n left: 0;\n right: 0;\n border: 1px solid var(--g-ui-border-muted);\n border-radius: var(--g-ui-radius);\n background: var(--g-ui-bg);\n box-shadow: var(--g-ui-shadow-sm);\n padding: var(--g-ui-space-6);\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-4);\n z-index: 60;\n max-height: 240px;\n overflow: auto;\n}\n.g-ui-select-item {\n padding: var(--g-ui-space-6) var(--g-ui-space-8);\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-8);\n}\n.g-ui-select-item:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-select-item-active {\n background: var(--g-ui-primary-subtle);\n color: var(--g-ui-primary);\n}\n.g-ui-select-item-disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n.g-ui-select-item-disabled:hover {\n background: transparent;\n}\n.g-ui-select-size-xs { font-size: 12px; height: 30px; padding: 0 var(--g-ui-space-10); }\n.g-ui-select-size-sm { font-size: 13px; height: 36px; padding: 0 var(--g-ui-space-12); }\n.g-ui-select-size-md { font-size: 14px; height: 42px; padding: 0 var(--g-ui-space-14); }\n.g-ui-select-size-lg { font-size: 15px; height: 50px; padding: 0 var(--g-ui-space-16); }\n.g-ui-select-size-xl { font-size: 16px; height: 60px; padding: 0 var(--g-ui-space-20); }\n\n.g-ui-tabs { display: flex; flex-direction: column; }\n.g-ui-tabs-list { display: flex; flex-wrap: wrap; gap: 0; }\n.g-ui-tabs-tab {\n position: relative;\n padding: var(--g-ui-space-8) var(--g-ui-space-16);\n font-size: 13px;\n line-height: 1;\n display: flex;\n align-items: center;\n cursor: pointer;\n background: transparent;\n border: 0;\n color: var(--g-ui-text);\n margin-bottom: calc(0px - var(--g-ui-space-2));\n}\n.g-ui-tabs-panel { padding-top: var(--g-ui-space-12); }\n.g-ui-tabs-variant-default .g-ui-tabs-list {\n border-bottom: 2px solid var(--g-ui-border-muted);\n}\n.g-ui-tabs-variant-default .g-ui-tabs-tab {\n border-bottom: 2px solid var(--g-ui-border-muted);\n border-radius: 4px 4px 0 0;\n}\n.g-ui-tabs-variant-default .g-ui-tabs-tab:hover {\n background: var(--g-ui-bg-muted);\n}\n.g-ui-tabs-variant-default .g-ui-tabs-tab-active {\n border-color: var(--g-ui-primary);\n color: var(--g-ui-primary);\n}\n.g-ui-tabs-variant-outline .g-ui-tabs-list {\n border-bottom: 1px solid var(--g-ui-border-muted);\n}\n.g-ui-tabs-variant-outline .g-ui-tabs-tab {\n border: 1px solid transparent;\n border-bottom: 0;\n border-radius: 8px 8px 0 0;\n}\n.g-ui-tabs-variant-outline .g-ui-tabs-tab-active {\n border-color: var(--g-ui-border);\n background: var(--g-ui-bg);\n color: var(--g-ui-primary);\n}\n.g-ui-tabs-variant-pills .g-ui-tabs-list {\n gap: var(--g-ui-space-8);\n}\n.g-ui-tabs-variant-pills .g-ui-tabs-tab {\n border-radius: 8px;\n background: transparent;\n}\n.g-ui-tabs-variant-pills .g-ui-tabs-tab:hover {\n background: var(--g-ui-bg-muted);\n}\n.g-ui-tabs-variant-pills .g-ui-tabs-tab-active {\n background: var(--g-ui-primary);\n color: var(--g-ui-primary-fg);\n}\n\n.g-ui-table {\n width: 100%;\n border-collapse: collapse;\n color: var(--g-ui-text);\n font-size: 13px;\n}\n.g-ui-table-with-border {\n border: 1px solid var(--g-ui-border);\n outline: 1px solid var(--g-ui-border);\n border-radius: var(--g-ui-radius);\n overflow: hidden;\n}\n.g-ui-table th,\n.g-ui-table td {\n padding: var(--g-ui-space-10) var(--g-ui-space-12);\n text-align: left;\n}\n.g-ui-table th {\n font-weight: 800;\n color: var(--g-ui-muted);\n}\n.g-ui-table-column-borders th,\n.g-ui-table-column-borders td {\n border-right: 1px solid var(--g-ui-border);\n}\n.g-ui-table-column-borders th:last-child,\n.g-ui-table-column-borders td:last-child {\n border-right: 0;\n}\n.g-ui-table-row-borders th,\n.g-ui-table-row-borders td {\n border-bottom: 1px solid var(--g-ui-border);\n}\n.g-ui-table-row-borders tbody tr:last-child td {\n border-bottom: 0;\n}\n.g-ui-table-striped tbody tr:nth-child(odd) { background: var(--g-ui-bg-subtle); }\n.g-ui-table-hover tbody tr:hover { background: var(--g-ui-bg-muted); }\n\n.g-ui-accordion {\n width: calc(100%);\n display: flex; \n flex-direction: column; \n border-bottom: 1px solid var(--g-ui-border);\n}\n.g-ui-accordion-header {\n box-sizing: border-box;\n padding: var(--g-ui-space-12) var(--g-ui-space-15);\n font-size: 14px;\n display: flex;\n align-items: flex-start;\n flex-direction: column;\n justify-content: flex-start;\n cursor: pointer;\n}\n.g-ui-accordion-content {\n padding: var(--g-ui-space-12);\n}\n\n.g-ui-tooltip {\n position: relative;\n display: inline-flex;\n}\n.g-ui-tooltip-content {\n position: absolute;\n bottom: calc(100% + var(--g-ui-space-8));\n left: 50%;\n transform: translateX(-50%);\n background: var(--g-ui-gray-900);\n color: var(--g-ui-gray-50);\n border: 0;\n padding: var(--g-ui-space-6) var(--g-ui-space-10);\n border-radius: 6px;\n font-size: 12px;\n white-space: nowrap;\n opacity: 0;\n pointer-events: none;\n transition: opacity .12s ease, transform .12s ease;\n}\n.g-ui-tooltip:hover .g-ui-tooltip-content {\n opacity: 1;\n transform: translateX(-50%) translateY(-2px);\n}\n\n.g-ui-menu {\n position: relative;\n display: inline-flex;\n}\n.g-ui-menu-dropdown {\n position: fixed;\n right: 0;\n width:10px;\n min-width: 180px;\n background: var(--g-ui-surface);\n border: 1px solid var(--g-ui-border-muted);\n border-radius: var(--g-ui-radius);\n box-shadow: var(--g-ui-shadow-sm);\n padding: var(--g-ui-space-4);\n z-index: 10000;\n}\n.g-ui-menu-left { left: 0; right: auto; }\n.g-ui-menu-center { left: 50%; right: auto; transform: translateX(-50%); }\n.g-ui-menu-right { right: 0; left: auto; }\n.g-ui-menu-item {\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-8);\n padding: var(--g-ui-space-6) var(--g-ui-space-12);\n border-radius: 8px;\n cursor: pointer;\n color: var(--g-ui-text);\n font-size: 13px;\n}\n.g-ui-menu-item:hover { background: var(--g-ui-bg-subtle); }\n\n.g-ui-menu-overlay {\n position: fixed;\n top:0;\n left:0;\n right:0;\n bottom:0;\n inset: 0;\n z-index: 9999;\n}\n\n.g-ui-drawer-overlay {\n position: fixed;\n inset: 0;\n z-index: 998;\n}\n.g-ui-drawer-overlay-normal { background: var(--g-ui-overlay-normal); }\n.g-ui-drawer-overlay-light { background: var(--g-ui-overlay-light); }\n.g-ui-drawer-overlay-dark { background: var(--g-ui-overlay-dark); }\n.g-ui-drawer {\n position: fixed;\n top: 0;\n bottom: 0;\n width: 320px;\n background: var(--g-ui-bg);\n border-left: 1px solid var(--g-ui-border-muted);\n box-shadow: var(--g-ui-shadow-lg);\n z-index: 999;\n padding: var(--g-ui-space-16);\n}\n.g-ui-drawer-right { right: 0; }\n.g-ui-drawer-left { left: 0; border-left: 0; border-right: 1px solid var(--g-ui-border-muted); }\n.g-ui-drawer-size-sm { width: 380px; }\n.g-ui-drawer-size-md { width: 440px; }\n.g-ui-drawer-size-lg { width: 620px; }\n.g-ui-drawer-size-xl { width: 780px; }\n\n.g-ui-notification {\n border-radius: var(--g-ui-radius);\n padding: var(--g-ui-space-10) var(--g-ui-space-12) var(--g-ui-space-10) var(--g-ui-space-22);\n background: var(--g-ui-surface);\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-8);\n box-shadow: var(--g-ui-shadow-lg);\n position: relative;\n overflow: hidden;\n}\n.g-ui-notification-bordered {\n border: 1px solid var(--g-ui-border);\n}\n.g-ui-notification::before {\n content: '';\n position: absolute;\n left: 4px;\n top: 4px;\n bottom: 4px;\n width: 6px;\n border-radius: 999px;\n background: var(--g-ui-primary);\n}\n.g-ui-notification-with-icon::before {\n display: none;\n}\n.g-ui-notification-body {\n flex: 1;\n overflow: hidden;\n}\n.g-ui-notification-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 999px;\n background: var(--g-ui-primary);\n color: var(--g-ui-primary-fg);\n}\n.g-ui-notification-loader { margin-right: var(--g-ui-space-8); }\n.g-ui-notification-close {\n margin-left: auto;\n border: 0;\n background: transparent;\n color: var(--g-ui-fg-muted);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n.g-ui-notification-close span {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n.g-ui-notification-close svg{\n width: 24px;\n height: 24px;\n fill: var(--g-ui-fg-muted);\n}\n\n.g-ui-notification-title { font-weight: 500; font-size: 13px; line-height: 1.35; }\n.g-ui-notification-primary::before { background: var(--g-ui-primary); }\n.g-ui-notification-blue::before { background: var(--g-ui-blue-500); }\n.g-ui-notification-success::before { background: var(--g-ui-success); }\n.g-ui-notification-danger::before { background: var(--g-ui-danger); }\n.g-ui-notification-primary .g-ui-notification-icon { background: var(--g-ui-primary); }\n.g-ui-notification-blue .g-ui-notification-icon { background: var(--g-ui-blue-500); }\n.g-ui-notification-success .g-ui-notification-icon { background: var(--g-ui-success); }\n.g-ui-notification-danger .g-ui-notification-icon { background: var(--g-ui-danger); }\n\n.g-ui-divider {\n width: 100%;\n border: 0;\n height: 1px;\n background: var(--g-ui-border);\n margin-top: var(--g-ui-space-9);\n margin-bottom: var(--g-ui-space-9);\n}\n.g-ui-divider-size-xs { height: 1px; }\n.g-ui-divider-size-sm { height: 2px; }\n.g-ui-divider-size-md { height: 3px; }\n.g-ui-divider-size-lg { height: 4px; }\n.g-ui-divider-size-xl { height: 5px; }\n.g-ui-divider.label {\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-10);\n color: var(--g-ui-muted);\n font-size: 12px;\n background: transparent;\n}\n.g-ui-divider.label::before,\n.g-ui-divider.label::after {\n content: '';\n height: 1px;\n flex: 1;\n background: var(--g-ui-border);\n}\n.g-ui-divider-label-left.label::before { flex: 0 0 12px; }\n.g-ui-divider-label-right.label::after { flex: 0 0 12px; }\n.g-ui-divider-label-text {\n color: var(--g-ui-muted);\n font-size: 12px;\n padding: 0 var(--g-ui-space-10);\n position: relative;\n z-index: 1;\n}\n.g-ui-divider-vertical {\n width: 1px;\n height: 100%;\n background: var(--g-ui-border);\n margin: 0 var(--g-ui-space-10);\n}\n\n.g-ui-paper {\n background: var(--g-ui-surface);\n border: 0;\n border-radius: 10px;\n}\n\n\n.g-ui-textarea {\n min-height: 120px;\n resize: vertical;\n padding: var(--g-ui-space-8) 0;\n height: auto;\n}\n.g-ui-input-multiline {\n align-items: stretch;\n padding: 0 var(--g-ui-space-12);\n height: auto;\n}\n.g-ui-input-multiline .g-ui-input {\n padding: var(--g-ui-space-8) 0;\n height: auto;\n}\n.g-ui-number-field {\n width: 100%;\n}\n.g-ui-number-field-controls {\n display: flex;\n flex-direction: column;\n margin-left: auto;\n width: 30px;\n}\n.g-ui-number-field-control {\n width: 100%;\n height: 20px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n color: var(--g-ui-text);\n cursor: pointer;\n user-select: none;\n font-size: 12px;\n line-height: 1;\n}\n.g-ui-number-field-control:first-child {\n border-bottom: 1px solid var(--g-ui-border);\n}\n.g-ui-number-field-control:hover {\n background: var(--g-ui-bg-subtle);\n}\n\n.g-ui-alert {\n border-radius: var(--g-ui-radius);\n border: 1px solid transparent;\n padding: var(--g-ui-space-16);\n background: var(--g-ui-primary-subtle);\n color: var(--g-ui-primary);\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-6);\n}\n.g-ui-alert-header {\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-8);\n}\n.g-ui-alert-icon {\n display: inline-flex;\n align-items: center;\n width: 20px;\n height: 20px;\n margin-right: var(--g-ui-space-8);\n}\n.g-ui-alert-close {\n margin-left: auto;\n border: 0;\n background: transparent;\n color: var(--g-ui-muted);\n cursor: pointer;\n}\n.g-ui-alert-title { font-weight: 700; }\n.g-ui-alert-primary { background: var(--g-ui-primary-subtle); color: var(--g-ui-primary); border-color: transparent; }\n.g-ui-alert-blue { background: var(--g-ui-blue-subtle); color: var(--g-ui-blue-fg); border-color: transparent; }\n.g-ui-alert-success { background: var(--g-ui-green-subtle); color: var(--g-ui-green-fg); border-color: transparent; }\n.g-ui-alert-danger { background: var(--g-ui-red-subtle); color: var(--g-ui-red-fg); border-color: transparent; }\n.g-ui-alert-warning { background: var(--g-ui-orange-subtle); color: var(--g-ui-orange-fg); border-color: transparent; }\n\n.g-ui-avatar {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background: var(--g-ui-bg-muted);\n color: var(--g-ui-text);\n overflow: hidden;\n border: 1px solid var(--g-ui-border);\n font-weight: 600;\n}\n.g-ui-avatar-size-xs { width: 16px; height: 16px; font-size: 8px; }\n.g-ui-avatar-size-sm { width: 26px; height: 26px; font-size: 10px; }\n.g-ui-avatar-size-md { width: 38px; height: 38px; font-size: 13px; }\n.g-ui-avatar-size-lg { width: 56px; height: 56px; font-size: 18px; }\n.g-ui-avatar-size-xl { width: 84px; height: 84px; font-size: 24px; }\n\n.g-ui-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 1;\n}\n.g-ui-icon-size-xs { font-size: 14px; }\n.g-ui-icon-size-sm { font-size: 18px; }\n.g-ui-icon-size-md { font-size: 22px; }\n.g-ui-icon-size-lg { font-size: 28px; }\n.g-ui-icon-size-xl { font-size: 36px; }\n.g-ui-icon-color-primary { color: var(--g-ui-primary); }\n.g-ui-icon-color-success { color: var(--g-ui-green-500); }\n.g-ui-icon-color-warning { color: var(--g-ui-yellow-500); }\n.g-ui-icon-color-error { color: var(--g-ui-red-500); }\n.g-ui-icon-color-muted { color: var(--g-ui-fg-muted); }\n.g-ui-avatar-img { width: 100%; height: 100%; object-fit: cover; }\n\n.g-ui-kbd {\n display: inline-flex;\n align-items: center;\n padding: var(--g-ui-space-2) var(--g-ui-space-6);\n border-radius: 6px;\n border: 1px solid var(--g-ui-border-muted);\n border-bottom-width: 3px;\n background: var(--g-ui-bg-muted);\n font-size: 12px;\n color: var(--g-ui-text);\n}\n\n.g-ui-code {\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n background: var(--g-ui-bg-muted);\n border: 1px solid var(--g-ui-border-muted);\n border-radius: var(--g-ui-radius);\n padding: var(--g-ui-space-2) var(--g-ui-space-6);\n font-size: 11px;\n color: var(--g-ui-text);\n}\n\n.g-ui-blockquote {\n border-left: 5px solid var(--g-ui-primary);\n padding: var(--g-ui-space-24) var(--g-ui-space-38);\n background: var(--g-ui-bg-muted);\n color: var(--g-ui-text);\n border-radius: 4px;\n}\n\n.g-ui-grid {\n display: grid;\n}\n.g-ui-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }\n.g-ui-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n.g-ui-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }\n.g-ui-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }\n.g-ui-grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }\n.g-ui-grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }\n\n.g-ui-list {\n margin: 0;\n color: var(--g-ui-text);\n list-style: none;\n padding-left: 0;\n}\n.g-ui-list-item {\n list-style: none;\n padding: var(--g-ui-space-6) 0;\n}\n.g-ui-list-item-border {\n border-bottom: 1px solid var(--g-ui-border-muted);\n}\n.g-ui-list-item-section {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n.g-ui-list-item-shell {\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-10);\n grid-column: 2;\n flex-wrap: wrap;\n}\n.g-ui-list-item-content {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-2);\n flex: 1;\n}\n.g-ui-list-item-title {\n font-weight: 600;\n}\n.g-ui-list-item-body {\n color: var(--g-ui-muted);\n}\n.g-ui-list-unordered { padding-left: 0; }\n.g-ui-list-ordered { padding-left: 0; counter-reset: g-ui-list; }\n.g-ui-list-none { padding-left: 0; }\n.g-ui-list-unordered > li,\n.g-ui-list-ordered > li {\n display: grid;\n grid-template-columns: max-content 1fr;\n column-gap: var(--g-ui-space-8);\n align-items: center;\n}\n.g-ui-list-ordered > li:not(.g-ui-list-nested-item) { counter-increment: g-ui-list; }\n.g-ui-list-unordered > li:not(.g-ui-list-nested-item)::before,\n.g-ui-list-ordered > li:not(.g-ui-list-nested-item)::before {\n grid-column: 1;\n align-self: flex-start;\n justify-self: end;\n color: currentColor;\n}\n.g-ui-list-unordered > li:not(.g-ui-list-nested-item)::before {\n content: '\u2022';\n}\n.g-ui-list-ordered > li:not(.g-ui-list-nested-item)::before {\n content: counters(g-ui-list, '.') '.';\n}\n.g-ui-list-nested-item {\n list-style: none;\n padding-left: 0;\n grid-template-columns: 1fr;\n column-gap: 0;\n}\n.g-ui-list-nested-item::before {\n content: none;\n}\n.g-ui-list-unordered > li > :not(.g-ui-list-item-shell),\n.g-ui-list-ordered > li > :not(.g-ui-list-item-shell) {\n grid-column: 2;\n}\n.g-ui-list > li > .g-ui-list {\n grid-column: 2;\n margin-top: var(--g-ui-space-6);\n}\n.g-ui-list-item-shell > .g-ui-list {\n flex-basis: 100%;\n margin-left: 0;\n}\n.g-ui-list .g-ui-list {\n margin-left: var(--g-ui-space-12);\n}\n.g-ui-list .g-ui-list-unordered,\n.g-ui-list .g-ui-list-ordered {\n padding-left: 0;\n}\n.g-ui-list-with-padding { padding-left: var(--g-ui-space-36); }\n.g-ui-list-size-xs { font-size: 12px; line-height: 1.4; }\n.g-ui-list-size-sm { font-size: 13px; line-height: 1.45; }\n.g-ui-list-size-md { font-size: 14px; line-height: 1.5; }\n.g-ui-list-size-lg { font-size: 16px; line-height: 1.6; }\n.g-ui-list-size-xl { font-size: 18px; line-height: 1.65; }\n\n.g-ui-anchor {\n color: var(--g-ui-primary);\n text-decoration: none;\n}\n.g-ui-anchor:hover { text-decoration: underline; }\n\n.g-ui-image {\n max-width: 100%;\n border-radius: var(--g-ui-radius);\n}\n\n.g-ui-progress {\n width: 100%;\n height: 8px;\n border-radius: 999px;\n background: var(--g-ui-bg-muted);\n border: 0;\n overflow: hidden;\n}\n.g-ui-progress-bar {\n height: 100%;\n background: var(--g-ui-primary);\n}\n.g-ui-progress-size-xs { height: 3px; }\n.g-ui-progress-size-sm { height: 5px; }\n.g-ui-progress-size-md { height: 8px; }\n.g-ui-progress-size-lg { height: 12px; }\n.g-ui-progress-size-xl { height: 16px; }\n.g-ui-progress-0 .g-ui-progress-bar { width: 0%; }\n.g-ui-progress-5 .g-ui-progress-bar { width: 5%; }\n.g-ui-progress-10 .g-ui-progress-bar { width: 10%; }\n.g-ui-progress-15 .g-ui-progress-bar { width: 15%; }\n.g-ui-progress-20 .g-ui-progress-bar { width: 20%; }\n.g-ui-progress-25 .g-ui-progress-bar { width: 25%; }\n.g-ui-progress-30 .g-ui-progress-bar { width: 30%; }\n.g-ui-progress-35 .g-ui-progress-bar { width: 35%; }\n.g-ui-progress-40 .g-ui-progress-bar { width: 40%; }\n.g-ui-progress-45 .g-ui-progress-bar { width: 45%; }\n.g-ui-progress-50 .g-ui-progress-bar { width: 50%; }\n.g-ui-progress-55 .g-ui-progress-bar { width: 55%; }\n.g-ui-progress-60 .g-ui-progress-bar { width: 60%; }\n.g-ui-progress-65 .g-ui-progress-bar { width: 65%; }\n.g-ui-progress-70 .g-ui-progress-bar { width: 70%; }\n.g-ui-progress-75 .g-ui-progress-bar { width: 75%; }\n.g-ui-progress-80 .g-ui-progress-bar { width: 80%; }\n.g-ui-progress-85 .g-ui-progress-bar { width: 85%; }\n.g-ui-progress-90 .g-ui-progress-bar { width: 90%; }\n.g-ui-progress-95 .g-ui-progress-bar { width: 95%; }\n.g-ui-progress-100 .g-ui-progress-bar { width: 100%; }\n.g-ui-progress-success .g-ui-progress-bar { background: var(--g-ui-success); }\n.g-ui-progress-danger .g-ui-progress-bar { background: var(--g-ui-danger); }\n\n.g-ui-slider {\n width: 100%;\n --g-ui-slider-size: 8px;\n /* height: calc(var(--g-ui-slider-size) * 2); */\n padding: 0 var(--g-ui-space-10);\n /* display: flex; */\n /* align-items: center; */\n position: relative;\n}\n.g-ui-range-slider {\n width: 100%;\n --g-ui-slider-size: 8px;\n height: calc(var(--g-ui-slider-size) * 2);\n padding: 0 var(--g-ui-slider-size);\n display: flex;\n align-items: center;\n position: relative;\n}\n.g-ui-slider-track {\n position: relative;\n width: 100%;\n height: var(--g-ui-slider-size);\n border-radius: 999px;\n background: var(--g-ui-bg-emphasized);\n}\n.g-ui-slider-bar {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n background: var(--g-ui-primary);\n border-radius: 999px;\n}\n.g-ui-slider-thumb {\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n width: calc(var(--g-ui-slider-size) * 2);\n height: calc(var(--g-ui-slider-size) * 2);\n border-radius: 50%;\n background: var(--g-ui-surface);\n border: 4px solid var(--g-ui-primary);\n cursor: pointer;\n}\n.g-ui-slider-marks {\n position: absolute;\n top: calc(100% - var(--g-ui-space-8));\n left:10px;\n right:15px;\n height: 12px;\n box-sizing: border-box;\n padding: 0 var(--g-ui-slider-size);\n}\n.g-ui-slider-marks-placeholder {\n height: 18px;\n}\n.g-ui-slider-mark {\n position: absolute;\n top: 0;\n transform: translateX(-50%);\n}\n.g-ui-slider-mark-label {\n font-size: 11px;\n color: var(--g-ui-muted);\n}\n\n.g-ui-slider-disabled .g-ui-slider-track { background: var(--g-ui-border); }\n.g-ui-slider-disabled .g-ui-slider-bar { background: var(--g-ui-border-emphasized); }\n.g-ui-slider-disabled .g-ui-slider-thumb { cursor: not-allowed; opacity: 0.6; }\n.g-ui-slider-size-xs { --g-ui-slider-size: 4px; }\n.g-ui-slider-size-sm { --g-ui-slider-size: 6px; }\n.g-ui-slider-size-md { --g-ui-slider-size: 8px; }\n.g-ui-slider-size-lg { --g-ui-slider-size: 10px; }\n.g-ui-slider-size-xl { --g-ui-slider-size: 12px; }\n\n.g-ui-skeleton {\n background: var(--g-ui-border-muted);\n animation: g-ui-skeleton-fade 1.5s ease-in-out infinite;\n border-radius: 4px;\n}\n@keyframes g-ui-skeleton-fade { 0%, 100% { opacity: 0.4; } 50% { opacity: 1; } }\n\n.g-ui-chip {\n display: inline-flex;\n align-items: center;\n border: 1px solid transparent;\n border-radius: 999px;\n cursor: pointer;\n background: transparent;\n color: var(--g-ui-text);\n}\n.g-ui-chip-size-xs { font-size: 12px; height: 20px; padding: 0 var(--g-ui-space-6); }\n.g-ui-chip-size-sm { font-size: 13px; height: 21px; padding: 0 var(--g-ui-space-5); }\n.g-ui-chip-size-md { font-size: 14px; height: 22px; padding: 0 var(--g-ui-space-6); }\n.g-ui-chip-size-lg { font-size: 15px; height: 23px; padding: 0 var(--g-ui-space-7); }\n.g-ui-chip-size-xl { font-size: 16px; height: 24px; padding: 0 var(--g-ui-space-8); }\n\n.g-ui-chip-color-primary.g-ui-chip-variant-filled { background: var(--g-ui-bg-muted); color: var(--g-ui-text); border-color: transparent; }\n.g-ui-chip-color-primary.g-ui-chip-variant-light { background: var(--g-ui-primary-subtle); color: var(--g-ui-primary); border: 1px solid var(--g-ui-primary-muted); }\n.g-ui-chip-color-primary.g-ui-chip-variant-outline { background: var(--g-ui-surface); color: var(--g-ui-text); border-color: var(--g-ui-border); }\n.g-ui-chip-color-primary.g-ui-chip-variant-filled:hover { background: var(--g-ui-bg-muted-hover, var(--g-ui-bg-muted)); }\n.g-ui-chip-color-primary.g-ui-chip-variant-light:hover { background: var(--g-ui-primary-muted); }\n.g-ui-chip-color-primary.g-ui-chip-variant-outline:hover { border-color: var(--g-ui-primary); color: var(--g-ui-primary); }\n.g-ui-chip-color-primary.g-ui-chip-variant-filled.g-ui-chip-active,\n.g-ui-chip-color-primary.g-ui-chip-variant-light.g-ui-chip-active,\n.g-ui-chip-color-primary.g-ui-chip-variant-outline.g-ui-chip-active { background: var(--g-ui-primary); color: var(--g-ui-primary-fg); border-color: transparent; }\n\n.g-ui-chip-color-success.g-ui-chip-variant-filled { background: var(--g-ui-bg-muted); color: var(--g-ui-text); border-color: transparent; }\n.g-ui-chip-color-success.g-ui-chip-variant-light { background: var(--g-ui-success-subtle); color: var(--g-ui-success); border: 1px solid var(--g-ui-success-muted); }\n.g-ui-chip-color-success.g-ui-chip-variant-outline { background: var(--g-ui-surface); color: var(--g-ui-text); border-color: var(--g-ui-border); }\n.g-ui-chip-color-success.g-ui-chip-variant-filled:hover { background: var(--g-ui-bg-muted-hover, var(--g-ui-bg-muted)); }\n.g-ui-chip-color-success.g-ui-chip-variant-light:hover { background: var(--g-ui-success-muted); }\n.g-ui-chip-color-success.g-ui-chip-variant-outline:hover { border-color: var(--g-ui-success); color: var(--g-ui-success); }\n.g-ui-chip-color-success.g-ui-chip-variant-filled.g-ui-chip-active,\n.g-ui-chip-color-success.g-ui-chip-variant-light.g-ui-chip-active,\n.g-ui-chip-color-success.g-ui-chip-variant-outline.g-ui-chip-active { background: var(--g-ui-success); color: var(--g-ui-success-fg); border-color: transparent; }\n\n.g-ui-chip-color-warning.g-ui-chip-variant-filled { background: var(--g-ui-bg-muted); color: var(--g-ui-text); border-color: transparent; }\n.g-ui-chip-color-warning.g-ui-chip-variant-light { background: var(--g-ui-warning-subtle); color: var(--g-ui-warning); border: 1px solid var(--g-ui-warning-muted); }\n.g-ui-chip-color-warning.g-ui-chip-variant-outline { background: var(--g-ui-surface); color: var(--g-ui-text); border-color: var(--g-ui-border); }\n.g-ui-chip-color-warning.g-ui-chip-variant-filled:hover { background: var(--g-ui-bg-muted-hover, var(--g-ui-bg-muted)); }\n.g-ui-chip-color-warning.g-ui-chip-variant-light:hover { background: var(--g-ui-warning-muted); }\n.g-ui-chip-color-warning.g-ui-chip-variant-outline:hover { border-color: var(--g-ui-warning); color: var(--g-ui-warning); }\n.g-ui-chip-color-warning.g-ui-chip-variant-filled.g-ui-chip-active,\n.g-ui-chip-color-warning.g-ui-chip-variant-light.g-ui-chip-active,\n.g-ui-chip-color-warning.g-ui-chip-variant-outline.g-ui-chip-active { background: var(--g-ui-warning); color: var(--g-ui-warning-fg); border-color: transparent; }\n\n.g-ui-chip-color-danger.g-ui-chip-variant-filled { background: var(--g-ui-bg-muted); color: var(--g-ui-text); border-color: transparent; }\n.g-ui-chip-color-danger.g-ui-chip-variant-light { background: var(--g-ui-danger-subtle); color: var(--g-ui-danger); border: 1px solid var(--g-ui-danger-muted); }\n.g-ui-chip-color-danger.g-ui-chip-variant-outline { background: var(--g-ui-surface); color: var(--g-ui-text); border-color: var(--g-ui-border); }\n.g-ui-chip-color-danger.g-ui-chip-variant-filled:hover { background: var(--g-ui-bg-muted-hover, var(--g-ui-bg-muted)); }\n.g-ui-chip-color-danger.g-ui-chip-variant-light:hover { background: var(--g-ui-danger-muted); }\n.g-ui-chip-color-danger.g-ui-chip-variant-outline:hover { border-color: var(--g-ui-danger); color: var(--g-ui-danger); }\n.g-ui-chip-color-danger.g-ui-chip-variant-filled.g-ui-chip-active,\n.g-ui-chip-color-danger.g-ui-chip-variant-light.g-ui-chip-active,\n.g-ui-chip-color-danger.g-ui-chip-variant-outline.g-ui-chip-active { background: var(--g-ui-danger); color: var(--g-ui-danger-fg); border-color: transparent; }\n\n.g-ui-chip-color-info.g-ui-chip-variant-filled { background: var(--g-ui-bg-muted); color: var(--g-ui-text); border-color: transparent; }\n.g-ui-chip-color-info.g-ui-chip-variant-light { background: var(--g-ui-info-subtle); color: var(--g-ui-info); border: 1px solid var(--g-ui-info-muted); }\n.g-ui-chip-color-info.g-ui-chip-variant-outline { background: var(--g-ui-surface); color: var(--g-ui-text); border-color: var(--g-ui-border); }\n.g-ui-chip-color-info.g-ui-chip-variant-filled:hover { background: var(--g-ui-bg-muted-hover, var(--g-ui-bg-muted)); }\n.g-ui-chip-color-info.g-ui-chip-variant-light:hover { background: var(--g-ui-info-muted); }\n.g-ui-chip-color-info.g-ui-chip-variant-outline:hover { border-color: var(--g-ui-info); color: var(--g-ui-info); }\n.g-ui-chip-color-info.g-ui-chip-variant-filled.g-ui-chip-active,\n.g-ui-chip-color-info.g-ui-chip-variant-light.g-ui-chip-active,\n.g-ui-chip-color-info.g-ui-chip-variant-outline.g-ui-chip-active { background: var(--g-ui-info); color: var(--g-ui-info-fg); border-color: transparent; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.g-ui-segmented {\n display: inline-flex;\n border-radius: 10px;\n overflow: hidden;\n padding: var(--g-ui-space-4);\n background: var(--g-ui-bg-muted);\n}\n.g-ui-segmented-item {\n padding: var(--g-ui-space-4) var(--g-ui-space-14);\n cursor: pointer;\n background: transparent;\n color: var(--g-ui-text);\n border-radius: 8px;\n}\n.g-ui-segmented-active {\n background: var(--g-ui-bg);\n color: var(--g-ui-text);\n}\n.g-ui-segmented-size-xs .g-ui-segmented-item { padding: var(--g-ui-space-2) var(--g-ui-space-6); font-size: 12px; }\n.g-ui-segmented-size-sm .g-ui-segmented-item { padding: var(--g-ui-space-3) var(--g-ui-space-10); font-size: 13px; }\n.g-ui-segmented-size-md .g-ui-segmented-item { padding: var(--g-ui-space-4) var(--g-ui-space-14); font-size: 14px; }\n.g-ui-segmented-size-lg .g-ui-segmented-item { padding: var(--g-ui-space-7) var(--g-ui-space-16); font-size: 15px; }\n.g-ui-segmented-size-xl .g-ui-segmented-item { padding: var(--g-ui-space-10) var(--g-ui-space-20); font-size: 16px; }\n\n.g-ui-pagination {\n display: inline-flex;\n gap: var(--g-ui-space-6);\n align-items: center;\n}\n.g-ui-pagination-item {\n min-width: 32px;\n height: 32px;\n border-radius: 8px;\n border: 1px solid var(--g-ui-border-muted);\n background: var(--g-ui-bg);\n color: var(--g-ui-text);\n cursor: pointer;\n font-size: 14px;\n}\n.g-ui-pagination-item-active {\n background: var(--g-ui-primary);\n border-color: var(--g-ui-primary);\n color: var(--g-ui-primary-fg);\n}\n.g-ui-pagination-item.g-ui-pagination-item-active:hover{\n background: var(--g-ui-primary-hover);\n border-color: var(--g-ui-primary-hover);\n color: var(--g-ui-primary-fg);\n}\n.g-ui-pagination-item:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-pagination-size-xs .g-ui-pagination-item { min-width: 22px; height: 22px; font-size: 12px; }\n.g-ui-pagination-size-sm .g-ui-pagination-item { min-width: 26px; height: 26px; font-size: 12px; }\n.g-ui-pagination-size-md .g-ui-pagination-item { min-width: 32px; height: 32px; font-size: 14px; }\n.g-ui-pagination-size-lg .g-ui-pagination-item { min-width: 38px; height: 38px; font-size: 15px; }\n.g-ui-pagination-size-xl .g-ui-pagination-item { min-width: 44px; height: 44px; font-size: 16px; }\n\n.g-ui-timeline {\n display: flex;\n flex-direction: column;\n gap: 0;\n position: relative;\n}\n.g-ui-timeline-track-segment {\n position: absolute;\n left: 8px;\n width: 4px;\n background: var(--g-ui-border-muted);\n border-radius: 2px;\n z-index: 0;\n pointer-events: none;\n overflow: hidden;\n}\n.g-ui-timeline-track-segment .g-ui-timeline-track-fill {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 0%;\n min-height: 0;\n background: var(--g-ui-timeline-active-color, var(--g-ui-primary));\n border-radius: inherit;\n transition: height 0.25s ease;\n z-index: 1;\n}\n.g-ui-timeline-reverse .g-ui-timeline-track-fill {\n top: auto;\n bottom: 0;\n}\n.g-ui-timeline-align-right .g-ui-timeline-track-segment {\n left: auto;\n right: 12px;\n}\n.g-ui-timeline-line-width-xs .g-ui-timeline-track-segment { width: 2px; }\n.g-ui-timeline-line-width-sm .g-ui-timeline-track-segment { width: 3px; }\n.g-ui-timeline-line-width-md .g-ui-timeline-track-segment { width: 4px; }\n.g-ui-timeline-line-width-lg .g-ui-timeline-track-segment { width: 6px; }\n.g-ui-timeline-line-width-xl .g-ui-timeline-track-segment { width: 8px; }\n.g-ui-timeline-has-track .g-ui-timeline-item::before {\n display: none;\n}\n.g-ui-timeline-item {\n display: grid;\n grid-template-columns: 28px 1fr;\n gap: var(--g-ui-space-16);\n align-items: center;\n position: relative;\n padding-bottom: var(--g-ui-space-24);\n z-index: 1;\n}\n.g-ui-timeline-align-right .g-ui-timeline-item {\n grid-template-columns: auto 28px;\n}\n.g-ui-timeline-align-right .g-ui-timeline-item .g-ui-timeline-dot {\n order: 2;\n justify-self: center;\n}\n.g-ui-timeline-align-right .g-ui-timeline-item .g-ui-timeline-content {\n order: 1;\n text-align: right;\n}\n.g-ui-timeline-align-right .g-ui-timeline-item::before {\n left: auto;\n right: 8px;\n}\n.g-ui-timeline-item:last-child {\n padding-bottom: 0;\n}\n.g-ui-timeline-item::before {\n content: '';\n position: absolute;\n left: 8px;\n top: 20px;\n bottom: 0;\n width: 4px;\n background: var(--g-ui-border-muted);\n}\n.g-ui-timeline-item:last-child::before {\n display: none;\n}\n.g-ui-timeline-dot {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: var(--g-ui-bg);\n border: 4px solid var(--g-ui-border-muted);\n margin-top: 0;\n position: relative;\n z-index: 1;\n transition: border-color 0.2s ease, background 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.g-ui-timeline-pin-size-xs .g-ui-timeline-dot { width: 12px; height: 12px; border-width: 2px; }\n.g-ui-timeline-pin-size-sm .g-ui-timeline-dot { width: 16px; height: 16px; border-width: 3px; }\n.g-ui-timeline-pin-size-md .g-ui-timeline-dot { width: 20px; height: 20px; border-width: 4px; }\n.g-ui-timeline-pin-size-lg .g-ui-timeline-dot { width: 24px; height: 24px; border-width: 4px; }\n.g-ui-timeline-pin-size-xl .g-ui-timeline-dot { width: 28px; height: 28px; border-width: 4px; }\n.g-ui-timeline-pin-radius-xs .g-ui-timeline-dot { border-radius: 2px; }\n.g-ui-timeline-pin-radius-sm .g-ui-timeline-dot { border-radius: 4px; }\n.g-ui-timeline-pin-radius-md .g-ui-timeline-dot { border-radius: 50%; }\n.g-ui-timeline-pin-radius-lg .g-ui-timeline-dot { border-radius: 50%; }\n.g-ui-timeline-pin-radius-xl .g-ui-timeline-dot { border-radius: 50%; }\n.g-ui-timeline-dot-inner {\n width: 100%;\n height: 100%;\n border-radius: inherit;\n background: inherit;\n position: absolute;\n inset: 0;\n}\n.g-ui-timeline-pin-mode-icon .g-ui-timeline-dot,\n.g-ui-timeline-pin-mode-image .g-ui-timeline-dot,\n.g-ui-timeline-pin-mode-custom .g-ui-timeline-dot {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.g-ui-timeline-pin-mode-icon .g-ui-timeline-dot .g-ui-timeline-pin-icon,\n.g-ui-timeline-pin-mode-image .g-ui-timeline-dot .g-ui-timeline-pin-image,\n.g-ui-timeline-pin-mode-custom .g-ui-timeline-dot > *:not(.g-ui-timeline-dot-inner) {\n position: relative;\n z-index: 1;\n}\n.g-ui-timeline-pin-mode-icon .g-ui-timeline-dot .g-ui-timeline-pin-icon {\n font-size: 12px;\n line-height: 1;\n color: inherit;\n}\n.g-ui-timeline-pin-size-sm .g-ui-timeline-pin-mode-icon .g-ui-timeline-dot .g-ui-timeline-pin-icon { font-size: 10px; }\n.g-ui-timeline-pin-size-lg .g-ui-timeline-dot .g-ui-timeline-pin-icon { font-size: 14px; }\n.g-ui-timeline-pin-size-xl .g-ui-timeline-dot .g-ui-timeline-pin-icon { font-size: 16px; }\n.g-ui-timeline-pin-mode-icon .g-ui-timeline-dot .g-ui-timeline-dot-inner,\n.g-ui-timeline-pin-mode-image .g-ui-timeline-dot .g-ui-timeline-dot-inner,\n.g-ui-timeline-pin-mode-custom .g-ui-timeline-dot .g-ui-timeline-dot-inner {\n display: none;\n}\n.g-ui-timeline-pin-mode-image .g-ui-timeline-dot .g-ui-timeline-pin-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: inherit;\n}\n.g-ui-timeline-item-completed .g-ui-timeline-dot {\n border-color: var(--g-ui-timeline-active-color, var(--g-ui-primary));\n background: var(--g-ui-timeline-active-color, var(--g-ui-primary));\n}\n.g-ui-timeline-item-active .g-ui-timeline-dot {\n border-color: var(--g-ui-timeline-active-color, var(--g-ui-primary));\n background: var(--g-ui-bg);\n box-shadow: 0 0 0 2px var(--g-ui-bg), 0 0 0 4px var(--g-ui-timeline-active-color, var(--g-ui-primary));\n}\n.g-ui-timeline-item-future .g-ui-timeline-dot {\n border-color: var(--g-ui-border-muted);\n background: var(--g-ui-bg);\n}\n.g-ui-timeline-clickable .g-ui-timeline-item {\n cursor: pointer;\n}\n.g-ui-timeline-clickable .g-ui-timeline-item:hover .g-ui-timeline-dot {\n border-color: var(--g-ui-primary-muted, var(--g-ui-timeline-active-color));\n}\n.g-ui-timeline-content {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-4);\n}\n.g-ui-timeline-title { font-weight: 600; }\n.g-ui-timeline-desc { color: var(--g-ui-muted); font-size: 13px; }\n\n.g-ui-stepper {\n display: flex;\n gap: var(--g-ui-space-12);\n align-items: center;\n}\n.g-ui-stepper-item {\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-8);\n}\n.g-ui-stepper-index {\n width: 42px;\n height: 42px;\n border-radius: 50%;\n border: 1px solid var(--g-ui-border-muted);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n font-weight: 600;\n background: var(--g-ui-bg);\n}\n.g-ui-stepper-active .g-ui-stepper-index {\n background: var(--g-ui-primary-subtle);\n border-color: var(--g-ui-primary);\n color: var(--g-ui-primary);\n}\n.g-ui-stepper-label { font-size: 14px; font-weight: 500; }\n\n.g-ui-rating {\n display: inline-flex;\n gap: var(--g-ui-space-2);\n}\n.g-ui-rating-item {\n cursor: pointer;\n color: var(--g-ui-border);\n}\n.g-ui-rating-item-active {\n color: var(--g-ui-primary);\n}\n.g-ui-rating-size-xs { font-size: 14px; }\n.g-ui-rating-size-sm { font-size: 18px; }\n.g-ui-rating-size-md { font-size: 20px; }\n.g-ui-rating-size-lg { font-size: 28px; }\n.g-ui-rating-size-xl { font-size: 32px; }\n\n.g-ui-tag {\n display: inline-flex;\n align-items: center;\n gap: var(--g-ui-space-6);\n border: 1px solid var(--g-ui-border-muted);\n border-radius: 999px;\n padding: var(--g-ui-space-4) var(--g-ui-space-10);\n font-size: 12px;\n color: var(--g-ui-text);\n background: var(--g-ui-bg);\n}\n\n\n.g-ui-calendar {\n width: 100%;\n border: 1px solid var(--g-ui-border);\n border-radius: var(--g-ui-radius);\n background: var(--g-ui-bg);\n padding: var(--g-ui-space-12);\n}\n.g-ui-calendar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--g-ui-space-10);\n}\n.g-ui-calendar-title-group {\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-6);\n}\n.g-ui-calendar-title-button {\n border: 0;\n background: transparent;\n padding: var(--g-ui-space-2) var(--g-ui-space-6);\n border-radius: 6px;\n font-weight: 500;\n font-size: 14px;\n color: var(--g-ui-text);\n cursor: pointer;\n}\n.g-ui-calendar-title-button:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-calendar-title {\n font-weight: 500;\n font-size: 14px;\n}\n.g-ui-calendar-nav-icon svg {\n width: 14px;\n height: 14px;\n fill: currentColor;\n}\n\n\n.g-ui-calendar-size-xs { width: 220px; }\n.g-ui-calendar-size-sm { width: 260px; }\n.g-ui-calendar-size-md { width: 300px; }\n.g-ui-calendar-size-lg { width: 370px; }\n.g-ui-calendar-size-xl { width: 420px; }\n\n.g-ui-calendar-size-xs .g-ui-calendar-grid { gap: var(--g-ui-space-2); }\n.g-ui-calendar-size-sm .g-ui-calendar-grid { gap: var(--g-ui-space-4); }\n.g-ui-calendar-size-md .g-ui-calendar-grid { gap: var(--g-ui-space-6); }\n.g-ui-calendar-size-lg .g-ui-calendar-grid { gap: var(--g-ui-space-8); }\n.g-ui-calendar-size-xl .g-ui-calendar-grid { gap: var(--g-ui-space-10); }\n\n.g-ui-calendar-size-xs .g-ui-calendar-cell { width: 26px; height: 26px; font-size: 12px; }\n.g-ui-calendar-size-sm .g-ui-calendar-cell { width: 30px; height: 30px; font-size: 13px; }\n.g-ui-calendar-size-md .g-ui-calendar-cell { width: 34px; height: 34px; font-size: 14px; }\n.g-ui-calendar-size-lg .g-ui-calendar-cell { width: 42px; height: 34px; font-size: 16px; }\n.g-ui-calendar-size-xl .g-ui-calendar-cell { width: 48px; height: 38px; font-size: 18px; }\n\n\n.g-ui-calendar-grid {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: var(--g-ui-space-6);\n}\n.g-ui-calendar-cell {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: var(--g-ui-text);\n}\n.g-ui-calendar-cell:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-calendar-cell-muted {\n color: var(--g-ui-muted);\n}\n.g-ui-calendar-cell-active,\n.g-ui-calendar-cell-active:hover {\n background: var(--g-ui-primary);\n color: var(--g-ui-primary-fg);\n}\n\n/* EventCalendar */\n.g-ui-event-calendar {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 480px;\n background: var(--g-ui-bg);\n border: 1px solid var(--g-ui-border);\n border-radius: var(--g-ui-radius);\n overflow: hidden;\n}\n.g-ui-event-calendar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: var(--g-ui-space-10);\n padding: var(--g-ui-space-12) var(--g-ui-space-16);\n border-bottom: 1px solid var(--g-ui-border);\n background: var(--g-ui-bg);\n}\n.g-ui-event-calendar-nav-group {\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-4);\n}\n.g-ui-event-calendar-nav {\n border-radius: 8px;\n}\n.g-ui-event-calendar-today {\n margin-left: var(--g-ui-space-8);\n}\n.g-ui-event-calendar-today-icon {\n margin-right: var(--g-ui-space-6);\n}\n.g-ui-event-calendar-title {\n font-weight: 600;\n font-size: 18px;\n color: var(--g-ui-text);\n min-width: 200px;\n text-align: center;\n}\n.g-ui-event-calendar-actions {\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-8);\n}\n.g-ui-event-calendar-view-option {\n padding: var(--g-ui-space-6) var(--g-ui-space-12);\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--g-ui-text);\n cursor: pointer;\n background: transparent;\n border: 1px solid transparent;\n}\n.g-ui-event-calendar-view-option:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-event-calendar-view-option-active {\n background: var(--g-ui-primary-subtle);\n color: var(--g-ui-primary);\n}\n.g-ui-event-calendar-create-btn {\n display: inline-flex;\n align-items: center;\n gap: var(--g-ui-space-6);\n}\n.g-ui-event-calendar-month {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n.g-ui-event-calendar-weekdays {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n padding: var(--g-ui-space-8) var(--g-ui-space-16);\n border-bottom: 1px solid var(--g-ui-border);\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.02em;\n color: var(--g-ui-muted);\n}\n.g-ui-event-calendar-weekday {\n text-align: center;\n}\n.g-ui-event-calendar-month-grid {\n flex: 1;\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n grid-auto-rows: minmax(100px, 1fr);\n gap: 1px;\n padding: var(--g-ui-space-8);\n background: var(--g-ui-border);\n overflow: auto;\n}\n.g-ui-event-calendar-month-cell {\n background: var(--g-ui-bg);\n min-height: 100px;\n display: flex;\n flex-direction: column;\n padding: var(--g-ui-space-4);\n}\n.g-ui-event-calendar-month-cell-outside {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-event-calendar-month-cell-today {\n background: var(--g-ui-primary-subtle);\n}\n.g-ui-event-calendar-month-cell-header {\n flex-shrink: 0;\n font-size: 13px;\n font-weight: 500;\n color: var(--g-ui-text);\n cursor: pointer;\n padding: var(--g-ui-space-2) 0;\n border-radius: 4px;\n margin: -2px 0;\n}\n.g-ui-event-calendar-month-cell-header:hover {\n background: var(--g-ui-bg-muted);\n}\n.g-ui-event-calendar-month-cell-events {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-height: 0;\n overflow: hidden;\n}\n.g-ui-event-calendar-month-event {\n font-size: 12px;\n padding: 2px 6px;\n border-radius: 4px;\n border-left: 3px solid var(--g-ui-primary);\n background: var(--g-ui-primary-subtle);\n color: var(--g-ui-text);\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.g-ui-event-calendar-month-event:hover {\n opacity: 0.9;\n}\n.g-ui-event-calendar-month-more {\n font-size: 11px;\n color: var(--g-ui-primary);\n cursor: pointer;\n padding: 2px 4px;\n margin-top: 2px;\n}\n.g-ui-event-calendar-month-more:hover {\n text-decoration: underline;\n}\n.g-ui-event-calendar-week {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: auto;\n}\n.g-ui-event-calendar-week-days {\n display: grid;\n grid-template-columns: 60px repeat(7, 1fr);\n border-bottom: 1px solid var(--g-ui-border);\n background: var(--g-ui-bg);\n}\n.g-ui-event-calendar-week-day-col {\n padding: var(--g-ui-space-8);\n text-align: center;\n font-size: 12px;\n font-weight: 500;\n color: var(--g-ui-text);\n}\n.g-ui-event-calendar-week-time-col {\n width: 60px;\n flex-shrink: 0;\n font-size: 11px;\n color: var(--g-ui-muted);\n padding: var(--g-ui-space-4);\n}\n.g-ui-event-calendar-week-body {\n display: flex;\n flex: 1;\n min-height: 400px;\n}\n.g-ui-event-calendar-week-body .g-ui-event-calendar-week-time-col {\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n.g-ui-event-calendar-week-slot-label {\n height: 48px;\n font-size: 10px;\n color: var(--g-ui-muted);\n display: flex;\n align-items: flex-start;\n padding-top: 2px;\n}\n.g-ui-event-calendar-week-grid-cols {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n flex: 1;\n position: relative;\n border-left: 1px solid var(--g-ui-border);\n}\n.g-ui-event-calendar-week-day-col-body {\n position: relative;\n display: flex;\n flex-direction: column;\n border-right: 1px solid var(--g-ui-border);\n}\n.g-ui-event-calendar-week-slot {\n height: 48px;\n border-bottom: 1px solid var(--g-ui-border-muted);\n cursor: pointer;\n}\n.g-ui-event-calendar-week-slot:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-event-calendar-week-event {\n position: absolute;\n left: 2px;\n right: 2px;\n border-left: 3px solid var(--g-ui-primary);\n background: var(--g-ui-primary-subtle);\n border-radius: 4px;\n padding: 4px 6px;\n overflow: hidden;\n cursor: pointer;\n font-size: 12px;\n color: var(--g-ui-text);\n pointer-events: auto;\n}\n.g-ui-event-calendar-week-event:hover {\n opacity: 0.95;\n}\n.g-ui-event-calendar-week-event-title {\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.g-ui-event-calendar-week-event-time {\n font-size: 10px;\n color: var(--g-ui-muted);\n display: block;\n}\n.g-ui-event-calendar-day {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: auto;\n}\n.g-ui-event-calendar-day-body {\n display: flex;\n flex: 1;\n min-height: 400px;\n}\n.g-ui-event-calendar-day-time-col {\n width: 60px;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n font-size: 11px;\n color: var(--g-ui-muted);\n padding: var(--g-ui-space-4);\n border-right: 1px solid var(--g-ui-border);\n}\n.g-ui-event-calendar-day-slot-label {\n height: 48px;\n display: flex;\n align-items: flex-start;\n padding-top: 2px;\n}\n.g-ui-event-calendar-day-slots {\n flex: 1;\n position: relative;\n border-left: 1px solid var(--g-ui-border);\n}\n.g-ui-event-calendar-day-slot {\n height: 48px;\n border-bottom: 1px solid var(--g-ui-border-muted);\n cursor: pointer;\n}\n.g-ui-event-calendar-day-slot:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-event-calendar-day-event {\n position: absolute;\n left: 4px;\n right: 4px;\n border-left: 3px solid var(--g-ui-primary);\n background: var(--g-ui-primary-subtle);\n border-radius: 4px;\n padding: 6px 8px;\n overflow: hidden;\n cursor: pointer;\n font-size: 13px;\n color: var(--g-ui-text);\n}\n.g-ui-event-calendar-day-event:hover {\n opacity: 0.95;\n}\n.g-ui-event-calendar-day-event-title {\n font-weight: 500;\n}\n.g-ui-event-calendar-day-event-time {\n font-size: 11px;\n color: var(--g-ui-muted);\n display: block;\n}\n.g-ui-event-calendar-form {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-12);\n}\n.g-ui-event-calendar-form-row {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-6);\n}\n.g-ui-event-calendar-form-row-inline {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-end;\n gap: var(--g-ui-space-12);\n}\n.g-ui-event-calendar-form-field {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-4);\n min-width: 140px;\n}\n.g-ui-event-calendar-form-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--g-ui-text);\n}\n.g-ui-event-calendar-form-actions {\n display: flex;\n justify-content: flex-end;\n gap: var(--g-ui-space-10);\n margin-top: var(--g-ui-space-8);\n padding-top: var(--g-ui-space-12);\n border-top: 1px solid var(--g-ui-border);\n}\n.g-ui-event-calendar-form-suggestions {\n max-height: 180px;\n overflow-y: auto;\n border: 1px solid var(--g-ui-border);\n border-radius: 8px;\n margin-top: var(--g-ui-space-4);\n background: var(--g-ui-bg);\n}\n.g-ui-event-calendar-form-suggestion-item {\n padding: var(--g-ui-space-10) var(--g-ui-space-12);\n font-size: 14px;\n cursor: pointer;\n border-bottom: 1px solid var(--g-ui-border-muted);\n}\n.g-ui-event-calendar-form-suggestion-item:last-child {\n border-bottom: 0;\n}\n.g-ui-event-calendar-form-suggestion-item:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-event-calendar-form-chips {\n display: flex;\n flex-wrap: wrap;\n gap: var(--g-ui-space-6);\n margin-top: var(--g-ui-space-4);\n}\n.g-ui-event-calendar-form-chip {\n display: inline-flex;\n align-items: center;\n padding: var(--g-ui-space-4) var(--g-ui-space-8);\n border-radius: 6px;\n font-size: 13px;\n background: var(--g-ui-bg-muted);\n color: var(--g-ui-text);\n}\n.g-ui-event-calendar-form-chip-removable {\n cursor: pointer;\n}\n.g-ui-event-calendar-form-chip-removable:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-event-calendar-form-colors {\n display: flex;\n flex-wrap: wrap;\n gap: var(--g-ui-space-6);\n margin-top: var(--g-ui-space-4);\n}\n.g-ui-event-calendar-form-color-swatch {\n width: 28px;\n height: 28px;\n border-radius: 50%;\n cursor: pointer;\n border: 2px solid transparent;\n}\n.g-ui-event-calendar-form-color-swatch:hover {\n transform: scale(1.1);\n}\n.g-ui-event-calendar-form-color-swatch-active {\n border-color: var(--g-ui-text);\n box-shadow: 0 0 0 2px var(--g-ui-bg);\n}\n.g-ui-event-calendar-view-modal {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-12);\n}\n.g-ui-event-calendar-view-modal-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--g-ui-text);\n}\n.g-ui-event-calendar-view-modal-meta {\n font-size: 14px;\n color: var(--g-ui-muted);\n}\n.g-ui-event-calendar-view-modal-date {\n display: block;\n margin-bottom: var(--g-ui-space-4);\n}\n.g-ui-event-calendar-view-modal-field {\n font-size: 14px;\n color: var(--g-ui-text);\n line-height: 1.5;\n}\n.g-ui-event-calendar-view-modal-actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--g-ui-space-10);\n margin-top: var(--g-ui-space-8);\n padding-top: var(--g-ui-space-12);\n border-top: 1px solid var(--g-ui-border);\n}\n.g-ui-event-calendar-view-modal-delete {\n color: var(--g-ui-danger);\n}\n.g-ui-event-calendar-view-modal-delete:hover {\n background: var(--g-ui-danger-subtle);\n}\n\n.g-ui-select-multi-root {\n position: relative;\n width: 100%;\n}\n.g-ui-select-multi {\n width: 100%;\n border-radius: 8px;\n border: 1px solid var(--g-ui-border);\n background: var(--g-ui-surface);\n color: var(--g-ui-text);\n padding: var(--g-ui-space-10) var(--g-ui-space-12);\n min-height: 44px;\n display: flex;\n flex-wrap: wrap;\n gap: var(--g-ui-space-6);\n align-items: center;\n}\n.g-ui-select-multi-placeholder {\n color: var(--g-ui-muted);\n}\n.g-ui-select-multi-input {\n border: 0;\n background: transparent;\n color: var(--g-ui-text);\n min-width: 120px;\n flex: 1;\n}\n.g-ui-select-multi-input:focus {\n outline: none;\n}\n.g-ui-select-multi-size-xs { font-size: 12px; min-height: 30px; padding: var(--g-ui-space-5) var(--g-ui-space-10); }\n.g-ui-select-multi-size-sm { font-size: 13px; min-height: 36px; padding: var(--g-ui-space-6) var(--g-ui-space-12); }\n.g-ui-select-multi-size-md { font-size: 14px; min-height: 42px; padding: var(--g-ui-space-8) var(--g-ui-space-14); }\n.g-ui-select-multi-size-lg { font-size: 15px; min-height: 50px; padding: var(--g-ui-space-10) var(--g-ui-space-16); }\n.g-ui-select-multi-size-xl { font-size: 16px; min-height: 60px; padding: var(--g-ui-space-13) var(--g-ui-space-20); }\n.g-ui-select-tag {\n border: 1px solid var(--g-ui-border);\n border-radius: 999px;\n padding: var(--g-ui-space-2) var(--g-ui-space-8);\n color: var(--g-ui-text);\n}\n.g-ui-select-multi-size-xs .g-ui-select-tag { font-size: 11px; }\n.g-ui-select-multi-size-sm .g-ui-select-tag { font-size: 12px; }\n.g-ui-select-multi-size-md .g-ui-select-tag { font-size: 13px; }\n.g-ui-select-multi-size-lg .g-ui-select-tag { font-size: 14px; }\n.g-ui-select-multi-size-xl .g-ui-select-tag { font-size: 15px; }\n.g-ui-select-tag {\n display: inline-flex;\n align-items: center;\n gap: var(--g-ui-space-6);\n}\n.g-ui-select-tag-remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n}\n.g-ui-select-tag-remove svg {\n width: 12px;\n height: 12px;\n fill: currentColor;\n}\n.g-ui-select-item-check {\n width: 16px;\n height: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--g-ui-primary);\n line-height: 0;\n}\n.g-ui-select-item-check svg {\n width: 14px;\n height: 14px;\n fill: currentColor;\n}\n.g-ui-select-item-label {\n line-height: 1.4;\n}\n\n.g-ui-toast-stack {\n position: fixed;\n right: var(--g-ui-space-20);\n top: var(--g-ui-space-20);\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-12);\n z-index: 1001;\n}\n.g-ui-toast {\n border: 1px solid var(--g-ui-border-muted);\n border-radius: var(--g-ui-radius);\n padding: var(--g-ui-space-10) var(--g-ui-space-12);\n background: var(--g-ui-bg);\n min-width: 220px;\n box-shadow: var(--g-ui-shadow-sm);\n}\n.g-ui-toast-title { font-weight: 600; }\n\n.g-ui-tabs-vertical {\n display: grid;\n grid-template-columns: 200px 1fr;\n gap: var(--g-ui-space-16);\n}\n.g-ui-tabs-vertical .g-ui-tabs-list {\n flex-direction: column;\n}\n\n.g-ui-drawer-shadowed {\n box-shadow: var(--g-ui-shadow);\n}\n\n.g-ui-notifications {\n position: fixed;\n right: var(--g-ui-space-20);\n top: var(--g-ui-space-20);\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-10);\n z-index: 1001;\n}\n.g-ui-notifications-position-top-left { top: var(--g-ui-space-20); left: var(--g-ui-space-20); right: auto; }\n.g-ui-notifications-position-top-center { top: var(--g-ui-space-20); left: 50%; right: auto; transform: translateX(-50%); }\n.g-ui-notifications-position-top-right { top: var(--g-ui-space-20); right: var(--g-ui-space-20); left: auto; }\n.g-ui-notifications-position-bottom-left { bottom: var(--g-ui-space-20); left: var(--g-ui-space-20); right: auto; top: auto; flex-direction: column-reverse; }\n.g-ui-notifications-position-bottom-center { bottom: var(--g-ui-space-20); left: 50%; right: auto; top: auto; transform: translateX(-50%); flex-direction: column-reverse; }\n.g-ui-notifications-position-bottom-right { bottom: var(--g-ui-space-20); right: var(--g-ui-space-20); left: auto; top: auto; flex-direction: column-reverse; }\n\n.g-ui-range {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--g-ui-space-10);\n}\n\n.g-ui-input-number {\n width: 100%;\n}\n\n.g-ui-popper {\n position: relative;\n display: inline-flex;\n}\n.g-ui-popper-dropdown {\n position: absolute;\n top: calc(100% + var(--g-ui-space-8));\n left: 0;\n min-width: 220px;\n background: var(--g-ui-bg);\n border: 1px solid var(--g-ui-border-muted);\n border-radius: var(--g-ui-radius);\n box-shadow: var(--g-ui-shadow-sm);\n padding: var(--g-ui-space-12) var(--g-ui-space-16);\n z-index: 50;\n}\n\n.g-ui-pill {\n display: inline-flex;\n align-items: center;\n gap: var(--g-ui-space-6);\n border-radius: 999px;\n border: 1px solid var(--g-ui-border);\n padding: var(--g-ui-space-4) var(--g-ui-space-10);\n font-size: 12px;\n}\n\n.g-ui-pagination-compact .g-ui-pagination-item {\n min-width: 26px;\n height: 26px;\n font-size: 12px;\n}\n\n\n.g-ui-password-toggle {\n border: 0;\n background: transparent;\n color: var(--g-ui-muted);\n cursor: pointer;\n font-size: 12px;\n}\n\n.g-ui-copy-button {\n border: 1px solid var(--g-ui-border-muted);\n background: var(--g-ui-bg);\n color: var(--g-ui-text);\n border-radius: 8px;\n padding: var(--g-ui-space-6) var(--g-ui-space-10);\n cursor: pointer;\n font-size: 12px;\n}\n.g-ui-copy-button:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-copy-button-done {\n color: var(--g-ui-success);\n border-color: rgba(18,184,134,0.5);\n}\n\n.g-ui-progress-ring {\n position: relative;\n width: 48px;\n height: 48px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.g-ui-progress-ring-hole {\n position: absolute;\n inset: 8px;\n border-radius: 50%;\n background: var(--g-ui-bg);\n}\n.g-ui-progress-ring-primary { --g-ui-progress-ring-fill: var(--g-ui-primary); }\n.g-ui-progress-ring-success { --g-ui-progress-ring-fill: var(--g-ui-success); }\n.g-ui-progress-ring-danger { --g-ui-progress-ring-fill: var(--g-ui-danger); }\n.g-ui-progress-ring-warning { --g-ui-progress-ring-fill: var(--g-ui-warning); }\n.g-ui-progress-ring:not(.g-ui-progress-ring-indeterminate) {\n background: conic-gradient(\n var(--g-ui-progress-ring-fill, var(--g-ui-primary)) 0deg calc(var(--g-ui-progress-ring-value, 0) * 3.6deg),\n var(--g-ui-border-muted) calc(var(--g-ui-progress-ring-value, 0) * 3.6deg) 360deg\n );\n}\n.g-ui-progress-ring-indeterminate {\n border: 4px solid var(--g-ui-border-muted);\n border-top-color: var(--g-ui-progress-ring-fill, var(--g-ui-primary));\n animation: g-ui-spin 1s linear infinite;\n}\n.g-ui-progress-ring-indeterminate .g-ui-progress-ring-hole {\n inset: 4px;\n}\n.g-ui-progress-ring-size-sm { width: 32px; height: 32px; }\n.g-ui-progress-ring-size-sm .g-ui-progress-ring-hole { inset: 6px; }\n.g-ui-progress-ring-size-sm.g-ui-progress-ring-indeterminate .g-ui-progress-ring-hole { inset: 3px; }\n.g-ui-progress-ring-size-md { width: 48px; height: 48px; }\n.g-ui-progress-ring-size-lg { width: 64px; height: 64px; }\n.g-ui-progress-ring-size-lg .g-ui-progress-ring-hole { inset: 10px; }\n.g-ui-progress-ring-size-lg.g-ui-progress-ring-indeterminate .g-ui-progress-ring-hole { inset: 5px; }\n\n.g-ui-toast-close {\n margin-left: auto;\n border: 0;\n background: transparent;\n color: var(--g-ui-muted);\n cursor: pointer;\n}\n.g-ui-toast-close svg {\n width: 16px;\n height: 16px;\n fill: var(--g-ui-muted);\n}\n\n.g-ui-toast-row {\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-8);\n}\n\n.g-ui-autocomplete {\n position: relative;\n width: 100%;\n}\n.g-ui-autocomplete-dropdown {\n position: absolute;\n top: calc(100% + var(--g-ui-space-4));\n left: 0;\n right: 0;\n z-index: 100;\n border: 1px solid var(--g-ui-border-muted);\n border-radius: var(--g-ui-radius);\n background: var(--g-ui-bg-panel);\n box-shadow: var(--g-ui-shadow-md);\n}\n.g-ui-autocomplete-list {\n overflow: auto;\n padding: var(--g-ui-space-4);\n}\n.g-ui-autocomplete-item {\n padding: var(--g-ui-space-6) var(--g-ui-space-8);\n border-radius: var(--g-ui-radius);\n cursor: pointer;\n font-size: var(--g-ui-font-size-sm);\n}\n.g-ui-autocomplete-item:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-autocomplete-item-active {\n background: var(--g-ui-primary-subtle);\n color: var(--g-ui-primary);\n}\n.g-ui-autocomplete-disabled {\n pointer-events: none;\n opacity: 0.7;\n}\n\n.g-ui-select-search {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-8);\n}\n.g-ui-input-size-sm .g-ui-search-input-left-section { width: 16px; height: 16px; }\n.g-ui-input-size-md .g-ui-search-input-left-section { width: 20px; height: 20px; }\n.g-ui-input-size-lg .g-ui-search-input-left-section { width: 24px; height: 24px; }\n.g-ui-input-size-xl .g-ui-search-input-left-section { width: 28px; height: 28px; }\n.g-ui-search-input-left-section {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--g-ui-muted);\n font-size: 16px;\n fill: var(--g-ui-muted);\n}\n.g-ui-search-input-left-section svg {\n width: 100%;\n height: 100%;\n fill: inherit;\n}\n\n.g-ui-select-search-input {\n width: 100%;\n border-radius: var(--g-ui-radius);\n border: 1px solid var(--g-ui-border-muted);\n background: var(--g-ui-bg);\n color: var(--g-ui-text);\n padding: var(--g-ui-space-8) var(--g-ui-space-10);\n}\n.g-ui-select-search-list {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-6);\n max-height: 160px;\n overflow: auto;\n}\n.g-ui-select-search-item {\n padding: var(--g-ui-space-6) var(--g-ui-space-8);\n border-radius: 8px;\n cursor: pointer;\n}\n.g-ui-select-search-item:hover {\n background: var(--g-ui-bg-subtle);\n}\n\n.g-ui-switch-group {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-8);\n}\n\n.g-ui-segmented-scroll {\n overflow-x: auto;\n max-width: 100%;\n}\n\n.g-ui-range-picker {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n gap: var(--g-ui-space-8);\n align-items: center;\n}\n.g-ui-range-picker-separator {\n color: var(--g-ui-fg-muted);\n font-size: var(--g-ui-font-size-sm);\n line-height: 1;\n flex-shrink: 0;\n}\n\n.g-ui-toast-auto {\n border-color: var(--g-ui-primary);\n}\n\n.g-ui-flex {\n display: flex;\n}\n.g-ui-flex-column { flex-direction: column; }\n.g-ui-flex-row { flex-direction: row; }\n.g-ui-flex-wrap { flex-wrap: wrap; }\n\n.g-ui-navlink-root {\n display: flex;\n flex-direction: column;\n}\n.g-ui-navlink {\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-8);\n padding: var(--g-ui-space-8) var(--g-ui-space-12);\n border-radius: 0;\n color: var(--g-ui-text);\n text-decoration: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n}\n.g-ui-navlink-body {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-2);\n flex: 1;\n}\n.g-ui-navlink-description {\n font-size: 12px;\n color: var(--g-ui-muted);\n font-weight: 400;\n}\n.g-ui-navlink-section {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.g-ui-navlink-variant-subtle:hover { background: var(--g-ui-bg-subtle); }\n.g-ui-navlink-variant-light:hover { background: var(--g-ui-primary-muted); }\n.g-ui-navlink-variant-filled:hover { background: var(--g-ui-primary-hover); color: var(--g-ui-primary-fg); }\n.g-ui-navlink-active.g-ui-navlink-variant-subtle {\n background: var(--g-ui-primary-subtle);\n color: var(--g-ui-primary);\n}\n.g-ui-navlink-active.g-ui-navlink-variant-light {\n background: var(--g-ui-primary-muted);\n color: var(--g-ui-primary);\n}\n.g-ui-navlink-active.g-ui-navlink-variant-filled {\n background: var(--g-ui-primary);\n color: var(--g-ui-primary-fg);\n}\n.g-ui-navlink-disabled {\n opacity: 0.6;\n pointer-events: none;\n}\n.g-ui-navlink-children {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-4);\n}\n.g-ui-navlink-padding-none { padding: 0; }\n.g-ui-navlink-padding-sm { padding: var(--g-ui-space-8); }\n.g-ui-navlink-padding-md { padding: var(--g-ui-space-12); }\n.g-ui-navlink-padding-lg { padding: var(--g-ui-space-16); }\n.g-ui-navlink-padding-xl { padding: var(--g-ui-space-20); }\n.g-ui-navlink-padding-h-sm { padding: var(--g-ui-space-8) var(--g-ui-space-8) ; }\n.g-ui-navlink-padding-h-md { padding: var(--g-ui-space-8) var(--g-ui-space-12) ; }\n.g-ui-navlink-padding-h-lg { padding: var(--g-ui-space-8) var(--g-ui-space-20) ; }\n.g-ui-navlink-padding-h-xl { padding: var(--g-ui-space-8) var(--g-ui-space-24) ; }\n\n.g-ui-indicator {\n position: relative;\n display: inline-flex;\n}\n.g-ui-indicator-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: var(--g-ui-danger);\n border: 2px solid var(--g-ui-bg);\n}\n.g-ui-indicator-size-xs .g-ui-indicator-badge { width: 6px; height: 6px; border-width: 1px; }\n.g-ui-indicator-size-sm .g-ui-indicator-badge { width: 8px; height: 8px; border-width: 2px; }\n.g-ui-indicator-size-md .g-ui-indicator-badge { width: 10px; height: 10px; border-width: 2px; }\n.g-ui-indicator-size-lg .g-ui-indicator-badge { width: 12px; height: 12px; border-width: 2px; }\n.g-ui-indicator-size-xl .g-ui-indicator-badge { width: 14px; height: 14px; border-width: 3px; }\n.g-ui-indicator-position-top-right .g-ui-indicator-badge { top: -4px; right: -4px; bottom: auto; left: auto; }\n.g-ui-indicator-position-top-left .g-ui-indicator-badge { top: -4px; left: -4px; bottom: auto; right: auto; }\n.g-ui-indicator-position-bottom-right .g-ui-indicator-badge { bottom: -4px; right: -4px; top: auto; left: auto; }\n.g-ui-indicator-position-bottom-left .g-ui-indicator-badge { bottom: -4px; left: -4px; top: auto; right: auto; }\n.g-ui-indicator-color-danger .g-ui-indicator-badge { background: var(--g-ui-danger); }\n.g-ui-indicator-color-success .g-ui-indicator-badge { background: var(--g-ui-success); }\n.g-ui-indicator-color-warning .g-ui-indicator-badge { background: var(--g-ui-warning); }\n.g-ui-indicator-color-info .g-ui-indicator-badge { background: var(--g-ui-info); }\n\n.g-ui-burger {\n width: 28px;\n height: 28px;\n position: relative;\n display: inline-block;\n}\n.g-ui-burger span {\n position: absolute;\n left: 0;\n width: 100%;\n height: 2px;\n background: var(--g-ui-text);\n transition: transform .2s ease, opacity .2s ease, top .2s ease;\n}\n.g-ui-burger span:nth-child(1) { top: 6px; }\n.g-ui-burger span:nth-child(2) { top: 13px; }\n.g-ui-burger span:nth-child(3) { top: 20px; }\n.g-ui-burger-open span:nth-child(1) { top: 7px; transform: rotate(45deg); }\n.g-ui-burger-open span:nth-child(2) { opacity: 0; }\n.g-ui-burger-open span:nth-child(3) { top: 7px; transform: rotate(-45deg); }\n\n.g-ui-loading-overlay {\n position: absolute;\n inset: 0;\n background: var(--g-ui-overlay-normal);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n}\n\n.g-ui-grid-system {\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n}\n.g-ui-col-span-1 { grid-column: span 1; }\n.g-ui-col-span-2 { grid-column: span 2; }\n.g-ui-col-span-3 { grid-column: span 3; }\n.g-ui-col-span-4 { grid-column: span 4; }\n.g-ui-col-span-5 { grid-column: span 5; }\n.g-ui-col-span-6 { grid-column: span 6; }\n.g-ui-col-span-7 { grid-column: span 7; }\n.g-ui-col-span-8 { grid-column: span 8; }\n.g-ui-col-span-9 { grid-column: span 9; }\n.g-ui-col-span-10 { grid-column: span 10; }\n.g-ui-col-span-11 { grid-column: span 11; }\n.g-ui-col-span-12 { grid-column: span 12; }\n\n.g-ui-scroll-area {\n overflow: auto;\n border: 1px solid var(--g-ui-border-muted);\n border-radius: var(--g-ui-radius);\n background: var(--g-ui-bg);\n padding: 0;\n}\n.g-ui-scroll-area::-webkit-scrollbar { width: 10px; height: 10px; }\n.g-ui-scroll-area::-webkit-scrollbar-track { background: transparent; }\n.g-ui-scroll-area::-webkit-scrollbar-thumb {\n background: color-mix(in srgb, var(--g-ui-muted) 30%, transparent);\n border-radius: 999px;\n}\n.g-ui-scroll-area:hover::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--g-ui-muted) 50%, transparent); }\n.g-ui-scroll-area-sm { max-height: 120px; }\n.g-ui-scroll-area-md { max-height: 200px; }\n.g-ui-scroll-area-lg { max-height: 320px; }\n.g-ui-scroll-area-auto { max-height: auto; }\n\n.g-ui-pin-input {\n display: inline-flex;\n align-items: center;\n cursor: text;\n box-sizing: border-box;\n}\n.g-ui-pin-input-wrapper {\n display: flex;\n gap: var(--g-ui-space-8);\n box-sizing: border-box;\n}\n.g-ui-pin-input-field {\n width: 40px;\n height: 40px;\n padding: 0;\n text-align: center;\n font-size: var(--g-ui-font-md);\n font-weight: 500;\n border: 1px solid var(--g-ui-border-muted);\n border-radius: var(--g-ui-radius);\n background: var(--g-ui-bg);\n color: var(--g-ui-text);\n outline: none;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n.g-ui-pin-input-field::placeholder {\n color: var(--g-ui-muted);\n opacity: 0.5;\n}\n.g-ui-pin-input-field:focus {\n border-color: var(--g-ui-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--g-ui-primary) 20%, transparent);\n}\n.g-ui-pin-input-field:disabled {\n background: var(--g-ui-bg-subtle);\n color: var(--g-ui-muted);\n cursor: not-allowed;\n}\n.g-ui-pin-input-error {\n border-color: var(--g-ui-danger);\n}\n.g-ui-pin-input-error:focus {\n border-color: var(--g-ui-danger);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--g-ui-danger) 20%, transparent);\n}\n.g-ui-pin-input.g-ui-input-size-xs .g-ui-pin-input-field { width: 28px; height: 28px; font-size: var(--g-ui-font-xs); }\n.g-ui-pin-input.g-ui-input-size-sm .g-ui-pin-input-field { width: 34px; height: 34px; font-size: var(--g-ui-font-sm); }\n.g-ui-pin-input.g-ui-input-size-md .g-ui-pin-input-field { width: 40px; height: 40px; font-size: var(--g-ui-font-md); }\n.g-ui-pin-input.g-ui-input-size-lg .g-ui-pin-input-field { width: 48px; height: 48px; font-size: var(--g-ui-font-lg); }\n.g-ui-pin-input.g-ui-input-size-xl .g-ui-pin-input-field { width: 56px; height: 56px; font-size: var(--g-ui-font-xl); }\n\n.g-ui-checkbox-group {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-8);\n}\n\n.g-ui-avatar-group {\n display: inline-flex;\n align-items: center;\n}\n.g-ui-avatar-group .g-ui-avatar {\n margin-left: calc(0px - var(--g-ui-space-8));\n border: 2px solid var(--g-ui-bg);\n}\n.g-ui-avatar-group .g-ui-avatar:first-child {\n margin-left: 0;\n}\n\n.g-ui-badge-group {\n display: inline-flex;\n flex-wrap: wrap;\n gap: var(--g-ui-space-6);\n}\n\n.g-ui-radio {\n display: flex;\n flex-direction: column;\n gap: var(--g-ui-space-6);\n}\n.g-ui-radio-control {\n display: inline-flex;\n align-items: center;\n gap: var(--g-ui-space-10);\n cursor: pointer;\n}\n.g-ui-radio-input {\n appearance: none;\n width: var(--g-ui-control-size, 16px);\n height: var(--g-ui-control-size, 16px);\n border-radius: 50%;\n border: 1px solid var(--g-ui-border);\n background: var(--g-ui-bg);\n position: relative;\n transition: background-color .12s ease, border-color .12s ease;\n}\n.g-ui-radio-input:focus-visible {\n outline: 2px solid var(--g-ui-primary);\n outline-offset: 2px;\n}\n.g-ui-radio-input:checked {\n border-color: var(--g-ui-primary);\n}\n.g-ui-radio-input:checked::after {\n content: '';\n position: absolute;\n width: var(--g-ui-control-inner-size, 8px);\n height: var(--g-ui-control-inner-size, 8px);\n border-radius: 50%;\n background: var(--g-ui-primary);\n top: var(--g-ui-control-inner-offset, 3px);\n left: var(--g-ui-control-inner-offset, 3px);\n}\n.g-ui-radio-label { font-size: 14px; }\n.g-ui-radio-description { font-size: 12px; color: var(--g-ui-muted); }\n.g-ui-radio-size-xs { --g-ui-control-size: 16px; --g-ui-control-inner-size: 6px; --g-ui-control-inner-offset: 4px; }\n.g-ui-radio-size-sm { --g-ui-control-size: 20px; --g-ui-control-inner-size: 8px; --g-ui-control-inner-offset: 5px; }\n.g-ui-radio-size-md { --g-ui-control-size: 24px; --g-ui-control-inner-size: 10px; --g-ui-control-inner-offset: 6px; }\n.g-ui-radio-size-lg { --g-ui-control-size: 30px; --g-ui-control-inner-size: 14px; --g-ui-control-inner-offset: 7px; }\n.g-ui-radio-size-xl { --g-ui-control-size: 36px; --g-ui-control-inner-size: 16px; --g-ui-control-inner-offset: 9px; }\n\n.g-ui-breadcrumbs {\n display: inline-flex;\n gap: var(--g-ui-space-8);\n align-items: center;\n color: var(--g-ui-muted);\n font-size: 13px;\n flex-wrap: wrap;\n}\n.g-ui-breadcrumbs-separator { opacity: 0.6; }\n\n.g-ui-center {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.g-ui-space { display: block; width: var(--g-ui-space-16); height: var(--g-ui-space-16); }\n.g-ui-space-xs { width: var(--g-ui-space-8); height: var(--g-ui-space-8); }\n.g-ui-space-sm { width: var(--g-ui-space-12); height: var(--g-ui-space-12); }\n.g-ui-space-md { width: var(--g-ui-space-16); height: var(--g-ui-space-16); }\n.g-ui-space-lg { width: var(--g-ui-space-24); height: var(--g-ui-space-24); }\n.g-ui-space-xl { width: var(--g-ui-space-32); height: var(--g-ui-space-32); }\n\n.g-ui-collapse-hidden { display: none; }\n\n.g-ui-action-icon {\n width: 28px;\n height: 28px;\n border-radius: 8px;\n border: 1px solid var(--g-ui-border);\n background: transparent;\n color: var(--g-ui-text);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n}\n.g-ui-action-icon-size-xs { width: 18px; height: 18px; }\n.g-ui-action-icon-size-sm { width: 22px; height: 22px; }\n.g-ui-action-icon-size-md { width: 28px; height: 28px; }\n.g-ui-action-icon-size-lg { width: 34px; height: 34px; }\n.g-ui-action-icon-size-xl { width: 44px; height: 44px; }\n\n.g-ui-action-icon-size-xs .g-ui-icon { font-size: 12px; }\n.g-ui-action-icon-size-sm .g-ui-icon { font-size: 14px; }\n.g-ui-action-icon-size-md .g-ui-icon { font-size: 16px; }\n.g-ui-action-icon-size-lg .g-ui-icon { font-size: 20px; }\n.g-ui-action-icon-size-xl .g-ui-icon { font-size: 24px; }\n\n.g-ui-action-icon-filled {\n background: var(--g-ui-primary);\n border-color: transparent;\n color: var(--g-ui-primary-fg);\n}\n.g-ui-action-icon-subtle {\n background: transparent;\n border-color: var(--g-ui-border);\n}\n.g-ui-action-icon-light {\n background: var(--g-ui-primary-subtle);\n border-color: var(--g-ui-primary-muted);\n color: var(--g-ui-primary);\n}\n.g-ui-action-icon-outline {\n background: transparent;\n border-color: var(--g-ui-primary);\n color: var(--g-ui-primary);\n}\n.g-ui-action-icon-filled:hover { background: var(--g-ui-primary-hover); }\n.g-ui-action-icon-light:hover { background: var(--g-ui-primary-muted); }\n.g-ui-action-icon-outline:hover { background: var(--g-ui-primary-subtle); }\n.g-ui-action-icon-subtle:hover { background: var(--g-ui-bg-muted); }\n\n\n\n.g-ui-action-icon-color-primary.g-ui-action-icon-filled {\n background: var(--g-ui-primary);\n border-color: transparent;\n color: var(--g-ui-primary-fg);\n}\n.g-ui-action-icon-color-primary.g-ui-action-icon-subtle {\n background: transparent;\n border-color: var(--g-ui-border);\n}\n.g-ui-action-icon-color-primary.g-ui-action-icon-light {\n background: var(--g-ui-primary-subtle);\n border-color: var(--g-ui-primary-muted);\n color: var(--g-ui-primary);\n}\n.g-ui-action-icon-color-primary.g-ui-action-icon-outline {\n background: transparent;\n border-color: var(--g-ui-primary);\n color: var(--g-ui-primary);\n}\n.g-ui-action-icon-color-primary.g-ui-action-icon-filled:hover { background: var(--g-ui-primary-hover); }\n.g-ui-action-icon-color-primary.g-ui-action-icon-light:hover { background: var(--g-ui-primary-muted); }\n.g-ui-action-icon-color-primary.g-ui-action-icon-outline:hover { background: var(--g-ui-primary-subtle); }\n.g-ui-action-icon-color-primary.g-ui-action-icon-subtle:hover { background: var(--g-ui-bg-muted); }\n\n\n.g-ui-action-icon-color-success.g-ui-action-icon-filled {\n background: var(--g-ui-success);\n border-color: transparent;\n color: var(--g-ui-success-fg);\n}\n.g-ui-action-icon-color-success.g-ui-action-icon-subtle {\n background: transparent;\n border-color: var(--g-ui-border);\n}\n.g-ui-action-icon-color-success.g-ui-action-icon-light {\n background: var(--g-ui-success-subtle);\n border-color: var(--g-ui-success-muted);\n color: var(--g-ui-success);\n}\n.g-ui-action-icon-color-success.g-ui-action-icon-outline {\n background: transparent;\n border-color: var(--g-ui-success);\n color: var(--g-ui-success);\n}\n.g-ui-action-icon-color-success.g-ui-action-icon-filled:hover { background: var(--g-ui-success-hover); }\n.g-ui-action-icon-color-success.g-ui-action-icon-light:hover { background: var(--g-ui-success-muted); }\n.g-ui-action-icon-color-success.g-ui-action-icon-outline:hover { background: var(--g-ui-success-subtle); }\n.g-ui-action-icon-color-success.g-ui-action-icon-subtle:hover { background: var(--g-ui-bg-muted); }\n\n.g-ui-action-icon-color-danger.g-ui-action-icon-filled {\n background: var(--g-ui-danger);\n border-color: transparent;\n color: var(--g-ui-danger-fg);\n}\n.g-ui-action-icon-color-danger.g-ui-action-icon-subtle {\n background: transparent;\n border-color: var(--g-ui-border);\n}\n.g-ui-action-icon-color-danger.g-ui-action-icon-light {\n background: var(--g-ui-danger-subtle);\n border-color: var(--g-ui-danger-muted);\n color: var(--g-ui-danger);\n}\n.g-ui-action-icon-color-danger.g-ui-action-icon-outline {\n background: transparent;\n border-color: var(--g-ui-danger);\n color: var(--g-ui-danger);\n}\n.g-ui-action-icon-color-danger.g-ui-action-icon-filled:hover { background: var(--g-ui-danger-hover); }\n.g-ui-action-icon-color-danger.g-ui-action-icon-light:hover { background: var(--g-ui-danger-muted); }\n.g-ui-action-icon-color-danger.g-ui-action-icon-outline:hover { background: var(--g-ui-danger-subtle); }\n.g-ui-action-icon-color-danger.g-ui-action-icon-subtle:hover { background: var(--g-ui-bg-muted); }\n\n.g-ui-action-icon-color-warning.g-ui-action-icon-filled {\n background: var(--g-ui-warning);\n border-color: transparent;\n color: var(--g-ui-warning-fg);\n}\n.g-ui-action-icon-color-warning.g-ui-action-icon-subtle {\n background: transparent;\n border-color: var(--g-ui-border);\n}\n.g-ui-action-icon-color-warning.g-ui-action-icon-light {\n background: var(--g-ui-warning-subtle);\n border-color: var(--g-ui-warning-muted);\n color: var(--g-ui-warning);\n}\n.g-ui-action-icon-color-warning.g-ui-action-icon-outline {\n background: transparent;\n border-color: var(--g-ui-warning);\n color: var(--g-ui-warning);\n}\n.g-ui-action-icon-color-warning.g-ui-action-icon-filled:hover { background: var(--g-ui-warning-hover); }\n.g-ui-action-icon-color-warning.g-ui-action-icon-light:hover { background: var(--g-ui-warning-muted); }\n.g-ui-action-icon-color-warning.g-ui-action-icon-outline:hover { background: var(--g-ui-warning-subtle); }\n.g-ui-action-icon-color-warning.g-ui-action-icon-subtle:hover { background: var(--g-ui-bg-muted); }\n\n.g-ui-action-icon-color-info.g-ui-action-icon-filled {\n background: var(--g-ui-info);\n border-color: transparent;\n color: var(--g-ui-info-fg);\n}\n.g-ui-action-icon-color-info.g-ui-action-icon-subtle {\n background: transparent;\n border-color: var(--g-ui-border);\n}\n.g-ui-action-icon-color-info.g-ui-action-icon-light {\n background: var(--g-ui-info-subtle);\n border-color: var(--g-ui-info-muted);\n color: var(--g-ui-info);\n}\n.g-ui-action-icon-color-info.g-ui-action-icon-outline {\n background: transparent;\n border-color: var(--g-ui-info);\n color: var(--g-ui-info);\n}\n.g-ui-action-icon-color-info.g-ui-action-icon-filled:hover { background: var(--g-ui-info-hover); }\n.g-ui-action-icon-color-info.g-ui-action-icon-light:hover { background: var(--g-ui-info-muted); }\n.g-ui-action-icon-color-info.g-ui-action-icon-outline:hover { background: var(--g-ui-info-subtle); }\n.g-ui-action-icon-color-info.g-ui-action-icon-subtle:hover { background: var(--g-ui-bg-muted); }\n\n\n.g-ui-popover {\n position: relative;\n display: inline-flex;\n}\n.g-ui-popover-dropdown {\n position: absolute;\n top: calc(100% + var(--g-ui-space-8));\n left: 0;\n min-width: 220px;\n background: var(--g-ui-surface);\n border: 1px solid var(--g-ui-border-muted);\n border-radius: 10px;\n box-shadow: var(--g-ui-shadow-sm);\n padding: var(--g-ui-space-10) var(--g-ui-space-12);\n z-index: 50;\n}\n.g-ui-popover-right { left: auto; right: 0; }\n.g-ui-popover-center { left: 50%; transform: translateX(-50%); }\n\n.g-ui-hover-card {\n position: relative;\n display: inline-flex;\n}\n.g-ui-hover-card-dropdown {\n position: absolute;\n top: calc(100% + var(--g-ui-space-8));\n left: 0;\n min-width: 220px;\n background: var(--g-ui-surface);\n border: 1px solid var(--g-ui-border-muted);\n border-radius: var(--g-ui-radius);\n box-shadow: var(--g-ui-shadow-sm);\n padding: var(--g-ui-space-12) var(--g-ui-space-16);\n z-index: 50;\n opacity: 0;\n pointer-events: none;\n transition: opacity .12s ease, transform .12s ease;\n transform: translateY(-4px);\n}\n.g-ui-hover-card:hover .g-ui-hover-card-dropdown {\n opacity: 1;\n pointer-events: auto;\n transform: translateY(0);\n}\n.g-ui-hover-card-right { left: auto; right: 0; }\n.g-ui-hover-card-center { left: 50%; transform: translateX(-50%) translateY(-4px); }\n.g-ui-hover-card:hover .g-ui-hover-card-center { transform: translateX(-50%) translateY(0); }\n\n.g-ui-affix {\n position: fixed;\n z-index: 1000;\n}\n.g-ui-affix-bottom-right { right: var(--g-ui-space-20); bottom: var(--g-ui-space-20); }\n.g-ui-affix-bottom-left { left: var(--g-ui-space-20); bottom: var(--g-ui-space-20); }\n.g-ui-affix-top-right { right: var(--g-ui-space-20); top: var(--g-ui-space-20); }\n.g-ui-affix-top-left { left: var(--g-ui-space-20); top: var(--g-ui-space-20); }\n.g-ui-affix-center-center { left: 50%; top: 50%; transform: translate(-50%, -50%); }\n.g-ui-affix-top-center { left: 50%; top: var(--g-ui-space-20); transform: translateX(-50%); }\n.g-ui-affix-bottom-center { left: 50%; bottom: var(--g-ui-space-20); transform: translateX(-50%); }\n.g-ui-affix-left-center { left: var(--g-ui-space-20); top: 50%; transform: translateY(-50%); }\n.g-ui-affix-right-center { right: var(--g-ui-space-20); top: 50%; transform: translateY(-50%); }\n\n\n.g-ui-fieldset {\n border: 1px solid var(--g-ui-border-muted);\n border-radius: var(--g-ui-radius);\n padding: var(--g-ui-space-14);\n}\n.g-ui-legend {\n padding: 0 var(--g-ui-space-6);\n color: var(--g-ui-muted);\n font-size: 12px;\n}\n\n.g-ui-appbar {\n width: 100%;\n height: 60px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: var(--g-ui-space-12);\n padding: 0 var(--g-ui-space-16);\n background: var(--g-ui-bg);\n border-bottom: 1px solid var(--g-ui-border);\n z-index: 100;\n position: relative;\n}\n.g-ui-appbar-static { position: static; }\n.g-ui-appbar-sticky { position: sticky; top: 0; }\n.g-ui-appbar-fixed { position: fixed; top: 0; left: 0; right: 0; }\n\n.g-ui-sidebar {\n width: 260px;\n min-width: 260px;\n background: var(--g-ui-bg);\n border-right: 1px solid var(--g-ui-border);\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n.g-ui-sidebar-position-right { border-right: 0; border-left: 1px solid var(--g-ui-border-muted); }\n.g-ui-sidebar-size-sm { width: 220px; min-width: 220px; }\n.g-ui-sidebar-size-md { width: 260px; min-width: 260px; }\n.g-ui-sidebar-size-lg { width: 320px; min-width: 320px; }\n.g-ui-sidebar-size-xl { width: 380px; min-width: 380px; }\n.g-ui-sidebar-min-button { min-width: 38px; width: 38px; }\n.g-ui-sidebar-min-xs { min-width: 48px; width: 48px; }\n.g-ui-sidebar-min-sm { min-width: 64px; width: 64px; }\n.g-ui-sidebar-min-md { min-width: 80px; width: 80px; }\n.g-ui-sidebar-fixed { \n position: relative;\n width: 45px; \n min-width: 45px; \n max-width: 45px;\n height: 100%;\n transition: \n width .22s cubic-bezier(.2,.8,.2,1),\n min-width .22s cubic-bezier(.2,.8,.2,1),\n max-width .22s cubic-bezier(.2,.8,.2,1);\n}\n.g-ui-sidebar-fixed.g-ui-sidebar-size-sm { width: 40px; min-width: 40px; max-width: 40px; }\n.g-ui-sidebar-fixed.g-ui-sidebar-size-md { width: 45px; min-width: 45px; max-width: 45px; }\n.g-ui-sidebar-fixed.g-ui-sidebar-size-lg { width: 50px; min-width: 50px; max-width: 50px; }\n.g-ui-sidebar-fixed.g-ui-sidebar-size-xl { width: 60px; min-width: 60px; max-width: 60px; }\n\n.g-ui-sidebar-fixed-open.g-ui-sidebar-size-sm { width: 220px; min-width: 220px; max-width: 220px; }\n.g-ui-sidebar-fixed-open.g-ui-sidebar-size-md { width: 260px; min-width: 260px; max-width: 260px; }\n.g-ui-sidebar-fixed-open.g-ui-sidebar-size-lg { width: 320px; min-width: 320px; max-width: 320px; }\n.g-ui-sidebar-fixed-open.g-ui-sidebar-size-xl { width: 380px; min-width: 380px; max-width: 380px; }\n\n.g-ui-sidebar-drawer {\n position: fixed;\n top: 0;\n bottom: 0;\n z-index: 999;\n transition: transform .22s cubic-bezier(.2,.8,.2,1), opacity .22s ease;\n opacity: 0;\n transform: translateX(-100%);\n height: 100%;\n min-height: 100vh;\n}\n.g-ui-sidebar-drawer-left.g-ui-sidebar-drawer-open,\n.g-ui-sidebar-drawer-right.g-ui-sidebar-drawer-open {\n opacity: 1;\n transform: translateX(0);\n}\n.g-ui-sidebar-drawer-right {\n right: 0;\n left: auto;\n transform: translateX(100%);\n}\n.g-ui-sidebar-drawer-left {\n left: 0;\n right: auto;\n}\n.g-ui-sidebar-overlay {\n position: fixed;\n inset: 0;\n z-index: 998;\n background: var(--g-ui-overlay-normal);\n opacity: 0;\n pointer-events: none;\n transition: opacity .22s ease, backdrop-filter .22s ease;\n backdrop-filter: blur(10px);\n}\n.g-ui-sidebar-overlay-noblur {\n backdrop-filter: none;\n}\n.g-ui-sidebar-overlay-open {\n opacity: 1;\n pointer-events: auto;\n}\n.g-ui-sidebar-title {\n font-weight: 700;\n font-size: 14px;\n color: var(--g-ui-muted);\n text-transform: uppercase;\n letter-spacing: .08em;\n}\n.g-ui-sidebar-item {\n display: flex;\n align-items: center;\n gap: var(--g-ui-space-10);\n padding: var(--g-ui-space-8) var(--g-ui-space-12);\n border-radius: 8px;\n cursor: pointer;\n color: var(--g-ui-text);\n text-decoration: none;\n font-size: 14px;\n}\n.g-ui-sidebar-item:hover {\n background: var(--g-ui-bg-subtle);\n}\n.g-ui-sidebar-item-active {\n background: var(--g-ui-primary-subtle);\n color: var(--g-ui-primary);\n}\n.g-ui-sidebar-item-active:hover { background: var(--g-ui-primary-muted); }\n.g-ui-skeleton-h-xs { height: 8px; }\n.g-ui-skeleton-h-sm { height: 12px; }\n.g-ui-skeleton-h-md { height: 16px; }\n.g-ui-skeleton-h-lg { height: 24px; }\n.g-ui-skeleton-h-xl { height: 32px; }\n.g-ui-skeleton-w-xs { width: 60px; }\n.g-ui-skeleton-w-sm { width: 120px; }\n.g-ui-skeleton-w-md { width: 180px; }\n.g-ui-skeleton-w-lg { width: 240px; }\n.g-ui-skeleton-w-xl { width: 320px; }\n.g-ui-skeleton-w-full { width: 100%; }\n.g-ui-loading {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.g-ui-spinner {\n border: 3px solid var(--g-ui-border-muted);\n border-top-color: var(--g-ui-primary);\n border-radius: 50%;\n animation: g-ui-spin 1s linear infinite;\n}\n.g-ui-loading-size-xs .g-ui-spinner { width: 14px; height: 14px; }\n.g-ui-loading-size-sm .g-ui-spinner { width: 18px; height: 18px; }\n.g-ui-loading-size-md .g-ui-spinner { width: 22px; height: 22px; }\n.g-ui-loading-size-lg .g-ui-spinner { width: 28px; height: 28px; }\n.g-ui-loading-size-xl .g-ui-spinner { width: 36px; height: 36px; }\n.g-ui-dots::before,\n.g-ui-dots::after {\n content: '';\n display: inline-block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--g-ui-primary);\n margin: 0 var(--g-ui-space-3);\n animation: g-ui-bounce 1s infinite ease-in-out;\n}\n.g-ui-dots::after { animation-delay: .2s; }\n.g-ui-loading-size-xs.g-ui-dots::before,\n.g-ui-loading-size-xs.g-ui-dots::after { width: 4px; height: 4px; }\n.g-ui-loading-size-sm.g-ui-dots::before,\n.g-ui-loading-size-sm.g-ui-dots::after { width: 6px; height: 6px; }\n.g-ui-loading-size-md.g-ui-dots::before,\n.g-ui-loading-size-md.g-ui-dots::after { width: 8px; height: 8px; }\n.g-ui-loading-size-lg.g-ui-dots::before,\n.g-ui-loading-size-lg.g-ui-dots::after { width: 10px; height: 10px; }\n.g-ui-loading-size-xl.g-ui-dots::before,\n.g-ui-loading-size-xl.g-ui-dots::after { width: 12px; height: 12px; }\n.g-ui-bars span {\n width: 4px;\n height: 16px;\n background: var(--g-ui-primary);\n margin: 0 var(--g-ui-space-2);\n display: inline-block;\n animation: g-ui-bars 1s infinite ease-in-out;\n}\n.g-ui-bars span:nth-child(2) { animation-delay: .15s; }\n.g-ui-bars span:nth-child(3) { animation-delay: .3s; }\n.g-ui-loading-size-xs.g-ui-bars span { width: 3px; height: 12px; }\n.g-ui-loading-size-sm.g-ui-bars span { width: 4px; height: 14px; }\n.g-ui-loading-size-md.g-ui-bars span { width: 4px; height: 16px; }\n.g-ui-loading-size-lg.g-ui-bars span { width: 5px; height: 20px; }\n.g-ui-loading-size-xl.g-ui-bars span { width: 6px; height: 24px; }\n\n\n.g-ui-grid-table {\n display: grid;\n}\n.g-ui-grid-table-row {\n display: contents;\n}\n.g-ui-grid-table-cell {\n padding: var(--g-ui-space-8);\n border-bottom: 1px solid var(--g-ui-border-muted);\n}\n.g-ui-grid-table-row-header .g-ui-grid-table-cell {\n font-weight: 200;\n}\n.g-ui-grid-table-cell-sortable {\n cursor: pointer;\n user-select: none;\n}\n.g-ui-grid-table-cell-sortable:hover {\n background: var(--g-ui-bg-hover, rgba(0,0,0,0.04));\n}\n.g-ui-grid-table-sort-icon {\n opacity: 0.5;\n}\n.g-ui-grid-table-sticky .g-ui-grid-table-row-header .g-ui-grid-table-cell {\n position: sticky;\n top: 0;\n z-index: 1;\n background: var(--g-ui-bg, #fff);\n}\n\n.g-ui-bottombar {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--g-ui-space-4);\n padding: var(--g-ui-space-4) var(--g-ui-space-8);\n background: var(--g-ui-bg);\n border-top: 1px solid var(--g-ui-border);\n z-index: 100;\n box-sizing: border-box;\n}\n.g-ui-bottombar-grow .g-ui-bottombar-action { flex: 1; }\n\n.g-ui-bottombar-action {\n all: unset;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 2px;\n padding: var(--g-ui-space-6) var(--g-ui-space-12);\n border-radius: var(--g-ui-radius-sm);\n cursor: pointer;\n transition: background 150ms ease, color 150ms ease;\n color: var(--g-ui-text-muted);\n font-size: var(--g-ui-fz-xs);\n min-width: 48px;\n box-sizing: border-box;\n -webkit-tap-highlight-color: transparent;\n user-select: none;\n}\n.g-ui-bottombar-action:hover { background: var(--g-ui-hover); }\n.g-ui-bottombar-action:active { background: var(--g-ui-active); }\n.g-ui-bottombar-action-active { color: var(--g-ui-primary); }\n.g-ui-bottombar-action-active:hover { background: var(--g-ui-primary-light-hover); }\n.g-ui-bottombar-action-disabled {\n opacity: 0.5;\n pointer-events: none;\n cursor: default;\n}\n\n.g-ui-bottombar-action-variant-filled.g-ui-bottombar-action-active {\n background: var(--g-ui-primary);\n color: var(--g-ui-white);\n}\n.g-ui-bottombar-action-variant-filled.g-ui-bottombar-action-active:hover {\n background: var(--g-ui-primary-dark);\n}\n\n.g-ui-bottombar-action-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n line-height: 1;\n}\n.g-ui-bottombar-action-label {\n font-size: 12px;\n line-height: 1.2;\n white-space: nowrap;\n text-align: center;\n}\n\n\n@keyframes g-ui-spin { to { transform: rotate(360deg); } }\n@keyframes g-ui-bounce { 0%, 100% { transform: translateY(0); opacity: .6; } 50% { transform: translateY(-5px); opacity: 1; } }\n@keyframes g-ui-bars { 0%, 100% { transform: scaleY(.6); } 50% { transform: scaleY(1.2); } }\n`;\n\nexport function ensureStyles() {\n if (typeof document === 'undefined') return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = css;\n document.head.appendChild(style);\n}\n", "const themeVars = new Set([\n '--g-ui-bg',\n '--g-ui-bg-subtle',\n '--g-ui-bg-muted',\n '--g-ui-bg-emphasized',\n '--g-ui-bg-inverted',\n '--g-ui-bg-panel',\n '--g-ui-fg',\n '--g-ui-fg-muted',\n '--g-ui-fg-subtle',\n '--g-ui-fg-inverted',\n '--g-ui-border',\n '--g-ui-border-subtle',\n '--g-ui-border-emphasized',\n '--g-ui-border-inverted',\n '--g-ui-primary',\n '--g-ui-primary-hover',\n '--g-ui-primary-active',\n '--g-ui-primary-subtle',\n '--g-ui-primary-muted',\n '--g-ui-primary-emphasized',\n '--g-ui-success',\n '--g-ui-success-hover',\n '--g-ui-success-active',\n '--g-ui-success-subtle',\n '--g-ui-success-muted',\n '--g-ui-danger',\n '--g-ui-danger-hover',\n '--g-ui-danger-active',\n '--g-ui-danger-subtle',\n '--g-ui-danger-muted',\n '--g-ui-warning',\n '--g-ui-warning-hover',\n '--g-ui-warning-active',\n '--g-ui-warning-subtle',\n '--g-ui-warning-muted',\n '--g-ui-info',\n '--g-ui-info-hover',\n '--g-ui-info-active',\n '--g-ui-info-subtle',\n '--g-ui-info-muted',\n '--g-ui-shadow-xs',\n '--g-ui-shadow-sm',\n '--g-ui-shadow-md',\n '--g-ui-shadow-lg',\n '--g-ui-shadow-xl',\n '--g-ui-shadow-2xl',\n '--g-ui-radius',\n '--g-ui-font',\n // Legacy\n '--g-ui-surface',\n '--g-ui-text',\n '--g-ui-muted',\n '--g-ui-primary-strong',\n '--g-ui-shadow',\n]);\n\nexport function setThemeVars(vars = {}, target = document?.documentElement) {\n if (!target) return;\n for (const [key, value] of Object.entries(vars)) {\n const cssKey = key.startsWith('--') ? key : `--g-ui-${key}`;\n if (!themeVars.has(cssKey)) continue;\n target.style.setProperty(cssKey, String(value));\n }\n}\n\nexport function setThemeMode(mode = 'dark', target = document?.documentElement) {\n if (!target) return;\n target.classList.remove('g-ui-theme-dark', 'g-ui-theme-light');\n target.classList.add(mode === 'light' ? 'g-ui-theme-light' : 'g-ui-theme-dark');\n}\n\nexport function getThemeMode(target = document?.documentElement) {\n return target.classList.contains('g-ui-theme-light') ? 'light' : 'dark';\n}", "import { Renderer, isSignal, isState, isStatePath, isComputed, resolve, computed, after, concat } from '@granularjs/core';\n\nfunction isReactive(value) {\n return isSignal(value) || isState(value) || isStatePath(value) || isComputed(value);\n}\n\nexport function cx(...values) {\n return concat(...values, { separator: ' ', filterFalsy: true });\n}\n\nexport function toPx(value) {\n if (value == null || value === '') return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nexport function splitPropsChildren(args, defaults) {\n const props = {};\n const children = [];\n const isPropsObject = (value) =>\n !!value &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n !Renderer.isRenderable(value) &&\n !Renderer.isDomNode(value) &&\n !isSignal(value) &&\n !isState(value) &&\n !isStatePath(value) &&\n !isComputed(value);\n\n for (const arg of args) {\n if (isPropsObject(arg)) Object.assign(props, arg);\n else children.push(arg);\n }\n if (defaults && typeof defaults === 'object') {\n for (const key of Object.keys(defaults)) {\n if (props[key] === undefined) props[key] = defaults[key];\n }\n }\n return { props: computed(props), rawProps: props, children };\n}\n\nexport function resolveValue(value) {\n return resolve(value);\n}\n\nexport function resolveBool(value) {\n return !!resolve(value);\n}\n\nexport function classVar(prefix, value, fallback) {\n const normalize = (v) => {\n const resolved = resolve(v);\n const finalValue = resolved == null || resolved === '' ? fallback : resolved;\n return finalValue == null || finalValue === '' ? '' : `${prefix}${finalValue}`;\n };\n if (isReactive(value)) {\n return after(value).compute((v) => normalize(v));\n }\n return normalize(value);\n}\n\nexport function classFlag(name, value) {\n if (isReactive(value)) {\n return after(value).compute((v) => (resolve(v) ? name : ''));\n }\n return resolve(value) ? name : '';\n}\n\nexport function classMap(value, map, fallback) {\n const getClass = (v) => map[v] || null;\n if (isReactive(value)) {\n return after(value).compute((v) => getClass(resolve(v ?? fallback)));\n }\n return getClass(resolve(value ?? fallback));\n}\n", "import { Button as HtmlButton, Span, when, after} from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveBool, classVar, classFlag } from '../utils.js';\n\nexport function Button(...args) {\n const { props, children } = splitPropsChildren(args, { variant: 'filled', size: 'md', justify: 'center' });\n const {\n variant,\n color,\n size,\n fullWidth,\n loading,\n leftSection,\n rightSection,\n className,\n disabled,\n justify,\n ...rest\n } = props;\n\n const isDisabled = after(disabled, loading).compute(([disabled, loading]) => disabled || loading);\n\n return HtmlButton(\n {\n ...rest,\n disabled: isDisabled,\n className: cx(\n 'g-ui-button',\n classVar('g-ui-button-variant-', variant, 'filled'),\n classVar('g-ui-button-color-', color, 'primary'),\n classVar('g-ui-justify-', justify, 'center'),\n classVar('g-ui-button-size-', size, 'md'),\n classFlag('g-ui-button-full', fullWidth),\n classFlag('g-ui-button-loading', loading),\n className\n ),\n },\n when(leftSection, () => Span({ className: 'g-ui-button-section-left' }, leftSection)),\n when(loading, () => Span('Loading...'), () => children),\n when(rightSection, () => Span({ className: 'g-ui-button-section-right' }, rightSection))\n );\n}\n", "import { Span } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, classFlag, classMap } from '../utils.js';\n\nexport function Text(...args) {\n const { props, children } = splitPropsChildren(args, { size: 'md' });\n const { size, weight, color, dimmed, align, ellipsis, decoration, className, style, ...rest } = props;\n const weightClass = classMap(weight, {\n bold: 'g-ui-text-weight-700',\n semibold: 'g-ui-text-weight-600',\n medium: 'g-ui-text-weight-500',\n 700: 'g-ui-text-weight-700',\n 600: 'g-ui-text-weight-600',\n 500: 'g-ui-text-weight-500',\n 400: 'g-ui-text-weight-400',\n });\n const colorClass = classMap(color, {\n primary: 'g-ui-text-primary',\n success: 'g-ui-text-success',\n danger: 'g-ui-text-danger',\n muted: 'g-ui-text-dimmed',\n });\n const alignClass = classMap(align, {\n center: 'g-ui-text-align-center',\n right: 'g-ui-text-align-right',\n left: 'g-ui-text-align-left',\n });\n const decorationClass = classMap(decoration, {\n underline: 'g-ui-text-decoration-underline',\n 'line-through': 'g-ui-text-decoration-line-through',\n overline: 'g-ui-text-decoration-overline',\n none: 'g-ui-text-decoration-none',\n });\n return Span(\n {\n ...rest,\n style,\n className: cx(\n 'g-ui-text',\n classVar('g-ui-text-size-', size, 'md'),\n classFlag('g-ui-text-dimmed', dimmed),\n classFlag('g-ui-text-ellipsis', ellipsis),\n weightClass,\n colorClass,\n alignClass,\n decorationClass,\n className\n ),\n },\n children\n );\n}\n", "import { H1, H2, H3, H4, H5, H6 } from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveValue, classVar } from '../utils.js';\n\nconst map = { 1: H1, 2: H2, 3: H3, 4: H4, 5: H5, 6: H6 };\n\nexport function Title(...args) {\n const { props, children } = splitPropsChildren(args, { order: 2 });\n const { order, className, style, ...rest } = props;\n const orderValue = resolveValue(order) || 2;\n const Tag = map[orderValue] || H2;\n return Tag(\n {\n ...rest,\n className: cx('g-ui-title', classVar('g-ui-title-order-', order, 2), className),\n },\n children\n );\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, classFlag } from '../utils.js';\n\nexport function Container(...args) {\n const { props, children } = splitPropsChildren(args, { size: 'md' });\n const { size, fluid, className, style, ...rest } = props;\n return Div(\n {\n ...rest,\n style,\n className: cx(\n 'g-ui-container',\n classFlag('g-ui-container-fluid', fluid),\n classVar('g-ui-container-size-', size, 'md'),\n className\n ),\n },\n children\n );\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, classMap } from '../utils.js';\n\nexport function Stack(...args) {\n const { props, children } = splitPropsChildren(args, { gap: 'md' });\n const { gap, align, justify, className, style, ...rest } = props;\n const justifyClass = classMap(justify, {\n between: 'g-ui-justify-between',\n center: 'g-ui-justify-center',\n end: 'g-ui-justify-end',\n start: 'g-ui-justify-start',\n });\n return Div(\n {\n ...rest,\n style,\n className: cx(\n 'g-ui-stack',\n classVar('g-ui-gap-', gap, 'md'),\n classVar('g-ui-align-', align),\n justifyClass,\n className\n ),\n },\n children\n );\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, classMap, classFlag } from '../utils.js';\n\nexport function Group(...args) {\n const { props, children } = splitPropsChildren(args, { gap: 'md', align: 'center' });\n const { gap, align, justify, position, noWrap, className, style, ...rest } = props;\n const positionClass = classMap(position, {\n apart: 'g-ui-justify-between',\n center: 'g-ui-justify-center',\n right: 'g-ui-justify-end',\n left: 'g-ui-justify-start',\n });\n return Div(\n {\n ...rest,\n style,\n className: cx(\n 'g-ui-group',\n classVar('g-ui-gap-', gap, 'md'),\n classVar('g-ui-align-', align, 'center'),\n classVar('g-ui-justify-', justify, 'none'),\n positionClass,\n classFlag('g-ui-no-wrap', noWrap),\n className\n ),\n },\n children\n );\n}\n", "import { Div, list, when, after, Span } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\nimport { Button } from './Button.js';\n\nexport function Card(...args) {\n const { props, children } = splitPropsChildren(args, { padding: 'md', radius: 'md', shadow: 'none', border: 'default' });\n const { title, content, actions, border, padding, radius, shadow, className, style, ...rest } = props;\n\n return Div(\n { style },\n when(title, () => Div({ className: 'g-ui-card-title' }, title)),\n when(content, () => Div({ className: 'g-ui-card-content' }, content)),\n {\n className: cx(\n 'g-ui-card',\n classVar('g-ui-card-border-', border, 'md'),\n classVar('g-ui-card-padding-', padding, 'md'),\n classVar('g-ui-card-radius-', radius, 'md'),\n classVar('g-ui-card-shadow-', shadow, 'md'),\n className\n ),\n ...rest,\n },\n children,\n when(actions, () => Div(\n { className: 'g-ui-card-actions' },\n list(actions, (action) => Button(\n {\n className: 'g-ui-card-action',\n onClick: (e) => action.get().onClick?.(e),\n leftSection: action.leftSection,\n rightSection: action.rightSection,\n size: after(action.size).compute(s => s || 'sm'),\n variant: after(action.variant).compute(v => v || 'outline'),\n ...(action.get().props || {}),\n },\n action.label\n ))\n )),\n );\n}\n", "import { Span } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, classFlag, classMap } from '../utils.js';\n\nexport function Badge(...args) {\n const { props, children } = splitPropsChildren(args, { variant: 'filled', size: 'md' });\n const { variant, size, className, dot, style, ...rest } = props;\n const dotClass = classMap(variant, { dot: 'g-ui-badge-dot' });\n return Span(\n {\n ...rest,\n className: cx(\n 'g-ui-badge',\n classVar('g-ui-badge-variant-', variant, 'filled'),\n classVar('g-ui-badge-size-', size, 'md'),\n classFlag('g-ui-badge-dot', dot),\n dotClass,\n className\n ),\n },\n children\n );\n}\n", "import { Div, Input, Textarea as HtmlTextarea, Label, Span, when, state, after, isState } from '@granularjs/core';\nimport { cx, splitPropsChildren, classFlag, classVar, resolveValue, resolveBool } from '../utils.js';\n\nexport function TextInput(...args) {\n const { props, rawProps } = splitPropsChildren(args, { size: 'md' });\n const {\n label,\n description,\n error,\n size,\n leftSection,\n rightSection,\n className,\n inputClassName,\n multiline,\n value: computed_value,\n ...rest\n } = props;\n const { value: raw_value, node, onChange, onInput, onFocus, onBlur, onKeyDown, onKeyUp, onClick } = rawProps;\n\n const isValueTwoWay = isState(raw_value) && !onChange && !onInput\n const currentState = isValueTwoWay ? raw_value : state(resolveValue(computed_value) ?? '');\n\n after(computed_value).change((next) => {\n if (isValueTwoWay) return;\n currentState.set(resolveValue(next) ?? '');\n });\n\n const handleInput = (ev) => {\n const next = ev?.target?.value ?? '';\n if (next === computed_value.get()) return;\n currentState.set(next);\n onChange?.(ev);\n onInput?.(ev);\n };\n\n const isMultiline = resolveBool(multiline);\n const Control = isMultiline ? HtmlTextarea : Input;\n const finalInputClassName = cx(inputClassName, isMultiline && 'g-ui-textarea');\n\n const input = Control({\n ...rest,\n node,\n value: currentState,\n onInput: handleInput,\n onChange: handleInput,\n onFocus,\n onBlur,\n onKeyDown,\n onKeyUp,\n onClick,\n className: cx('g-ui-input', finalInputClassName),\n });\n\n\n return Div(\n { className: cx('g-ui-text-input', className) },\n when(label, () => Label({ className: 'g-ui-text-input-label' }, label)),\n when(description, () => Span({ className: 'g-ui-text-input-description' }, description)),\n Div(\n {\n className: cx(\n 'g-ui-input-wrapper',\n classFlag('g-ui-input-multiline', multiline),\n classVar('g-ui-input-size-', size, 'md'),\n classFlag('g-ui-input-error', error)\n ),\n },\n when(leftSection, () => Div({ className: 'g-ui-input-section' }, leftSection)),\n input,\n when(rightSection, () => Div({ className: 'g-ui-input-section' }, rightSection))\n ),\n when(error, () => Div({ className: 'g-ui-text-input-error-text' }, error))\n );\n}\n", "import { splitPropsChildren } from '../utils.js';\nimport { TextInput } from './TextInput.js';\n\nexport function Textarea(...args) {\n const { props } = splitPropsChildren(args, { size: 'md' });\n const { size, leftSection, rightSection, className, ...rest } = props;\n return TextInput({\n ...rest,\n size,\n className,\n leftSection,\n rightSection,\n multiline: true,\n });\n}\n", "import { cx, splitPropsChildren, resolveValue } from '../utils.js';\nimport { Div, Span, when, after, state } from '@granularjs/core';\nimport { TextInput } from './TextInput.js';\n\nexport function NumberField(...args) {\n const { props, rawProps } = splitPropsChildren(args, {\n size: 'md',\n step: 1,\n allowDecimal: true,\n allowNegative: true,\n clampBehavior: 'blur',\n hideControls: false,\n decimalSeparator: '.',\n thousandSeparator: '',\n format: null,\n prefix: '',\n suffix: '',\n });\n const {\n value,\n min,\n max,\n step,\n size,\n allowDecimal,\n allowNegative,\n decimalSeparator,\n thousandSeparator,\n decimalScale,\n clampBehavior,\n hideControls,\n format,\n locale,\n currency,\n formatOptions,\n prefix,\n suffix,\n leftSection,\n rightSection,\n className,\n onChange: computed_onChange,\n onInput: computed_onInput,\n ...rest\n } = props;\n const { onChange: _onChange, onInput: _onInput, onBlur, onFocus, onKeyDown } = rawProps;\n\n const onChange = (e) => {\n _onChange?.(e.target?.value ?? '');\n _onInput?.(e.target?.value ?? '');\n }\n const onInput = onChange;\n\n const currentState = state('');\n\n const escapeRegExp = (value) => String(value ?? '').replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n const getScale = () => {\n const allowDec = !!resolveValue(allowDecimal);\n if (!allowDec) return 0;\n const resolved = resolveValue(decimalScale);\n if (resolved != null && resolved !== '' && Number.isFinite(Number(resolved))) return Math.max(0, Number(resolved));\n const fmt = resolveValue(format);\n if (fmt === 'currency' || fmt === 'percent') return 2;\n return 0;\n };\n\n const parseNumber = (raw) => {\n const decSep = resolveValue(decimalSeparator) ?? '.';\n const thousSep = resolveValue(thousandSeparator) ?? '';\n let rawValue = String(raw ?? '');\n if (thousSep) {\n rawValue = rawValue.split(thousSep).join('');\n }\n if (!rawValue || rawValue === '-' || rawValue === decSep || rawValue.endsWith(decSep)) return null;\n const normalized = rawValue.replace(decSep, '.');\n const num = Number(normalized);\n if (!Number.isFinite(num)) return null;\n return num;\n };\n\n const addThousandSeparators = (intPart) => {\n const thousSep = resolveValue(thousandSeparator) ?? '';\n if (!thousSep) return intPart;\n return intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousSep);\n };\n\n const formatNumber = (num) => {\n const decSep = resolveValue(decimalSeparator) ?? '.';\n const scale = getScale();\n const numeric = Number(num);\n if (!Number.isFinite(numeric)) return '';\n const sign = numeric < 0 ? '-' : '';\n const abs = Math.abs(numeric);\n let [int, dec = ''] = String(abs).split('.');\n const formattedInt = addThousandSeparators(int);\n if (scale > 0) {\n const trimmed = dec.slice(0, scale).padEnd(scale, '0');\n return `${sign}${formattedInt}${decSep}${trimmed}`;\n }\n return `${sign}${formattedInt}`;\n };\n\n const formatWithIntl = (num, kind) => {\n try {\n const resolvedLocale = resolveValue(locale);\n const resolvedCurrency = resolveValue(currency) ?? 'USD';\n const options = resolveValue(formatOptions) ?? {};\n const scale = getScale();\n const style = kind === 'currency' ? 'currency' : 'decimal';\n const formatter = new Intl.NumberFormat(resolvedLocale, {\n style,\n currency: resolvedCurrency,\n ...(scale > 0 ? { minimumFractionDigits: scale, maximumFractionDigits: scale } : { maximumFractionDigits: 0 }),\n ...options,\n });\n return formatter.format(num);\n } catch {\n return formatNumber(num);\n }\n };\n\n const clampValue = (num) => {\n let next = num;\n const minValue = resolveValue(min);\n const maxValue = resolveValue(max);\n if (minValue != null && Number.isFinite(Number(minValue))) next = Math.max(next, Number(minValue));\n if (maxValue != null && Number.isFinite(Number(maxValue))) next = Math.min(next, Number(maxValue));\n if (!resolveValue(allowNegative) && next < 0) next = 0;\n return next;\n };\n\n const resolveSuffix = () => {\n const suffixValue = resolveValue(suffix) ?? '';\n const fmt = resolveValue(format);\n if (!suffixValue && fmt === 'percent') return '%';\n return suffixValue;\n };\n\n const buildVisual = (raw, sign, fmt) => {\n const prefixValue = resolveValue(prefix) ?? '';\n const suffixValue = resolveSuffix();\n const normalizedRaw = String(raw ?? '').replace(/\\u00A0/g, ' ');\n const normalizedPrefix = String(prefixValue ?? '').replace(/\\u00A0/g, ' ');\n const normalizedSuffix = String(suffixValue ?? '').replace(/\\u00A0/g, ' ');\n const hasPrefix = normalizedPrefix && normalizedRaw.startsWith(normalizedPrefix);\n const hasSuffix = normalizedSuffix && normalizedRaw.endsWith(normalizedSuffix);\n const finalPrefix = hasPrefix ? '' : prefixValue;\n const finalSuffix = hasSuffix ? '' : suffixValue;\n return `${sign ?? ''}${finalPrefix}${raw}${finalSuffix}`;\n };\n\n const makeSanitizedFromDigits = (digitsValue, sign) => {\n const scale = getScale();\n const sep = resolveValue(decimalSeparator) ?? '.';\n const digits = String(digitsValue ?? '').replace(/\\D/g, '');\n const baseDigits = digits || '0';\n const padded = scale > 0 ? baseDigits.padStart(scale + 1, '0') : baseDigits;\n const rawInt = scale > 0 ? padded.slice(0, -scale) : padded;\n const intPart = rawInt.replace(/^0+(?=\\d)/, '') || '0';\n const decPart = scale > 0 ? padded.slice(-scale) : '';\n const sanitized = scale > 0 ? `${intPart}${sep}${decPart}` : intPart;\n return `${sign ?? ''}${sanitized}`;\n };\n\n const stripAffixes = (raw) => {\n const prefixValue = resolveValue(prefix) ?? '';\n const suffixValue = resolveSuffix();\n let out = String(raw ?? '');\n const normalizedPrefix = String(prefixValue ?? '').replace(/\\u00A0/g, ' ');\n const normalizedSuffix = String(suffixValue ?? '').replace(/\\u00A0/g, ' ');\n if (normalizedPrefix) {\n const normalizedOut = out.replace(/\\u00A0/g, ' ');\n if (normalizedOut.startsWith(normalizedPrefix)) out = out.slice(prefixValue.length);\n }\n if (normalizedSuffix) {\n const normalizedOut = out.replace(/\\u00A0/g, ' ');\n if (normalizedOut.endsWith(normalizedSuffix)) out = out.slice(0, -suffixValue.length);\n }\n return out;\n };\n\n const sanitizeFromInput = (rawInput) => {\n const allowNeg = !!resolveValue(allowNegative);\n const body = stripAffixes(rawInput);\n const sign = allowNeg && body.includes('-') ? '-' : '';\n const digits = body.replace(/\\D/g, '');\n let sanitized = makeSanitizedFromDigits(digits, sign);\n if (resolveValue(clampBehavior) === 'strict') {\n const parsed = parseNumber(sanitized);\n if (parsed != null) {\n const clamped = clampValue(parsed);\n const clampedSign = clamped < 0 ? '-' : '';\n sanitized = `${clampedSign}${formatNumber(Math.abs(clamped))}`;\n }\n }\n return sanitized;\n };\n\n const normalizeIncoming = (next) => {\n if (next == null || next === '') return makeSanitizedFromDigits('', '');\n if (typeof next === 'number' && Number.isFinite(next)) {\n const clamped = resolveValue(clampBehavior) === 'strict' ? clampValue(next) : next;\n const sign = clamped < 0 ? '-' : '';\n return `${sign}${formatNumber(Math.abs(clamped))}`;\n }\n const inputText = stripAffixes(next);\n const sep = resolveValue(decimalSeparator) ?? '.';\n const allowNeg = !!resolveValue(allowNegative);\n const sign = allowNeg && String(inputText).includes('-') ? '-' : '';\n const filtered = String(inputText ?? '').replace(new RegExp(`[^0-9${escapeRegExp(sep)}]`, 'g'), '');\n const parsed = parseNumber(`${sign}${filtered}`);\n if (parsed != null) {\n const clamped = resolveValue(clampBehavior) === 'strict' ? clampValue(parsed) : parsed;\n const clampedSign = clamped < 0 ? '-' : '';\n return `${clampedSign}${formatNumber(Math.abs(clamped))}`;\n }\n return sanitizeFromInput(next);\n };\n\n let lastExternalValue = undefined;\n const updateFromExternal = (next) => {\n const resolved = resolveValue(next);\n if (resolved === undefined) return;\n\n const normalized = normalizeIncoming(resolved);\n if (normalized === currentState.get()) return;\n lastExternalValue = normalized;\n currentState.set(normalized);\n };\n\n updateFromExternal(value);\n after(value).change((next) => {\n updateFromExternal(next)\n });\n\n after(currentState).change((next) => {\n if (next === lastExternalValue) {\n lastExternalValue = undefined;\n return;\n }\n lastExternalValue = undefined;\n const parsed = parseNumber(next);\n if (parsed == null) {\n onChange?.(next ?? '');\n return;\n }\n onChange?.(parsed);\n });\n\n const hasRightSection = after(rightSection).compute((next) => next != null && next !== false);\n const showControls = after(hideControls, hasRightSection).compute(([nextHidden, nextRight]) =>\n !resolveValue(nextHidden) && !nextRight\n );\n const inputMode = after(allowDecimal).compute((next) => (resolveValue(next) ? 'decimal' : 'numeric'));\n\n const inputFormat = after(\n format,\n prefix,\n suffix,\n allowDecimal,\n allowNegative,\n decimalSeparator,\n thousandSeparator,\n decimalScale,\n clampBehavior,\n min,\n max,\n locale,\n currency,\n formatOptions\n ).compute(() => ({\n mode: 'both',\n format: (raw) => {\n const sanitized = sanitizeFromInput(raw);\n const fmt = resolveValue(format);\n const allowNeg = !!resolveValue(allowNegative);\n const sign = allowNeg && sanitized.startsWith('-') ? '-' : '';\n const parsed = parseNumber(sanitized);\n let visual = sanitized.replace(sign, '');\n if (parsed != null) {\n const abs = Math.abs(parsed);\n if (typeof fmt === 'function') {\n try {\n visual = fmt(abs);\n } catch {\n visual = formatNumber(abs);\n }\n } else if (fmt === 'currency') {\n visual = formatWithIntl(abs, 'currency');\n } else if (fmt === 'decimal') {\n const resolvedLocale = resolveValue(locale);\n const resolvedOptions = resolveValue(formatOptions);\n visual = resolvedLocale || resolvedOptions ? formatWithIntl(abs, 'decimal') : formatNumber(abs);\n } else if (fmt === 'percent') {\n visual = formatNumber(abs);\n } else {\n visual = formatNumber(abs);\n }\n }\n return { value: sanitized, raw: sanitized, visual: buildVisual(visual, sign, fmt) };\n },\n }));\n\n const stepBy = (direction) => {\n const current = parseNumber(currentState.get());\n const delta = Number(resolveValue(step) ?? 1);\n const base = current == null ? 0 : current;\n const next = clampValue(base + delta * direction);\n currentState.set(formatNumber(next));\n };\n\n const setCaretToEnd = (target) => {\n if (!target || typeof target.setSelectionRange !== 'function') return;\n const setToEnd = () => {\n try {\n const end = String(target.value ?? '').length;\n target.setSelectionRange(end, end);\n } catch { }\n };\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(setToEnd);\n } else {\n setToEnd();\n }\n };\n\n const handleInput = (ev) => {\n onInput?.(ev);\n const target = ev?.target;\n if (!target) return;\n setCaretToEnd(target);\n };\n\n const handleBlur = (ev) => {\n onBlur?.(ev);\n if (resolveValue(clampBehavior) !== 'blur') return;\n const parsed = parseNumber(currentState.get());\n if (parsed == null) return;\n const clamped = clampValue(parsed);\n currentState.set(formatNumber(clamped));\n };\n\n const handleFocus = (ev) => {\n onFocus?.(ev);\n setCaretToEnd(ev?.target);\n };\n\n const handleKeyDown = (ev) => {\n onKeyDown?.(ev);\n const target = ev?.target;\n if (!target) return;\n const prefixValue = resolveValue(prefix) ?? '';\n const suffixValue = resolveSuffix();\n if (suffixValue && typeof target.selectionEnd === 'number') {\n target.selectionEnd = Math.min(target.selectionEnd, String(target.value ?? '').length - suffixValue.length);\n }\n if (prefixValue && typeof target.selectionStart === 'number') {\n target.selectionStart = Math.max(target.selectionStart, prefixValue.length);\n }\n };\n\n const controls = Div(\n { className: 'g-ui-number-field-controls' },\n Span({ className: 'g-ui-number-field-control', onClick: () => stepBy(1) }, '+'),\n Span({ className: 'g-ui-number-field-control', onClick: () => stepBy(-1) }, '\u2212')\n );\n const controlsWrapper = Div({ className: 'g-ui-number-field-controls-wrapper' }, controls);\n const finalRightSection = after(showControls, rightSection).compute(([nextControls, nextRight]) => {\n if (nextControls) return controlsWrapper;\n return nextRight;\n });\n\n return TextInput({\n ...rest,\n size,\n className: cx('g-ui-number-field', className),\n leftSection,\n rightSection: finalRightSection,\n type: 'text',\n inputMode,\n inputClassName: cx('g-ui-input-number'),\n value: currentState,\n format: inputFormat,\n onInput: handleInput,\n onBlur: handleBlur,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n });\n}", "import { NumberField } from './NumberField.js';\n\nexport function NumberInput(...args) {\n return NumberField(...args);\n}\n", "import { Div, Button as HtmlButton, portal, when, after } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\nimport { closeSvg } from '../theme/icons.js';\n\n\n\nexport function Modal(...args) {\n const { props, rawProps, children } = splitPropsChildren(args, { size: 'md', centered: true, overlay: 'normal' });\n const {\n opened,\n title,\n size,\n centered,\n overlay,\n position,\n className,\n style,\n } = props;\n const { onClose } = rawProps;\n const positionClass = after(position, centered).compute(([pos, isCentered]) => {\n const value = pos ?? (isCentered === false ? 'top-center' : 'center');\n return `g-ui-modal-position-${value}`;\n });\n\n return when(opened, () =>\n portal(\n Div(\n {\n className: cx(\n 'g-ui-modal-overlay',\n classVar('g-ui-modal-overlay-', overlay, 'normal'),\n positionClass\n ),\n onClick: (ev) => {\n if (ev.target === ev.currentTarget) onClose?.();\n },\n },\n Div(\n {\n className: cx('g-ui-modal', classVar('g-ui-modal-size-', size, 'md'), className),\n },\n Div(\n { className: 'g-ui-modal-header' },\n when(title, () => Div({ className: 'g-ui-modal-title' }, title)),\n when(onClose, () =>\n HtmlButton(\n {\n type: 'button',\n className: 'g-ui-button g-ui-button-variant-subtle g-ui-button-size-xs g-ui-modal-close',\n onClick: onClose,\n innerHTML: closeSvg,\n }\n )\n )\n ),\n children\n )\n )\n )\n );\n}\n", "export const forwardSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#1f1f1f\"><path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\"/></svg>';\nexport const backwardSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#1f1f1f\"><path d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\"/></svg>';\nexport const checkedSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"40px\" viewBox=\"0 -960 960 960\" width=\"40px\" fill=\"#1f1f1f\"><path d=\"M379.33-244 154-469.33 201.67-517l177.66 177.67 378.34-378.34L805.33-670l-426 426Z\"/></svg>';\nexport const indeterminateSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"40px\" viewBox=\"0 -960 960 960\" width=\"40px\" fill=\"#1f1f1f\"><path d=\"M240-446.67v-66.66h480v66.66H240Z\"/></svg>';\nexport const closeSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"40px\" viewBox=\"0 -960 960 960\" width=\"40px\" fill=\"#1f1f1f\"><path d=\"M312-265.33 265.33-312l168-168-168-167L312-693.67l168 168 167-168L693.67-647l-168 167 168 168L647-265.33l-167-168-168 168Z\"/></svg>';\nexport const searchSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#1f1f1f\"><path d=\"M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z\"/></svg>';\nexport const plusSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"currentColor\"><path d=\"M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z\"/></svg>';\nexport const editSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"currentColor\"><path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h357l-80 80H200v560h560v-278l80-80v358q0 33-23.5 56.5T760-120H200Zm280-360v-80h240v80H480Zm0 160v-80h320v80H480Zm0 160v-80h320v80H480ZM360-360v-80h80v80h-80Zm0 160v-80h80v80h-80Zm0 160v-80h80v80h-80Zm160-320h280l-36-37 37-37v74H520Zm-160 0h80v-80h-80v80ZM120-600v-160l160-160h160l-80 80H200v240h-80Zm80-240v-80 80Z\"/></svg>';\nexport const deleteSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"currentColor\"><path d=\"M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z\"/></svg>';\nexport const calendarTodaySvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"currentColor\"><path d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Z\"/></svg>';\nexport const keyboardArrowDownSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#1f1f1f\"><path d=\"M480-344 240-584l56-56 184 184 184-184 56 56-240 240Z\"/></svg>';", "import { Div, Span, after, when } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\n\nexport function Loading(...args) {\n const { props } = splitPropsChildren(args, { variant: 'spinner', size: 'md' });\n const { variant, size, className } = props;\n const isDots = after(variant).compute((next) => next === 'dots');\n const isBars = after(variant).compute((next) => next === 'bars');\n return when(isDots,\n () => Div({\n className: cx('g-ui-loading g-ui-dots', classVar('g-ui-loading-size-', size, 'md'), className),\n }),\n () => when(\n isBars,\n () => Div(\n { className: cx('g-ui-loading g-ui-bars', classVar('g-ui-loading-size-', size, 'md'), className) },\n Span(''),\n Span(''),\n Span('')\n ),\n () => Div(\n {\n className: cx('g-ui-loading', classVar('g-ui-loading-size-', size, 'md'), className),\n },\n Div({ className: 'g-ui-spinner' })\n )\n )\n );\n}\n", "import { Div, Input, Label, Span, when, state, after } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, resolveBool } from '../utils.js';\nimport { checkedSvg, indeterminateSvg } from '../theme/icons.js';\n\nexport function Checkbox(...args) {\n const { props, rawProps } = splitPropsChildren(args, { size: 'md' });\n const { checked, label, description, size, indeterminate, className, style, inputProps, ...rest } = props;\n const { onChange } = rawProps;\n const currentState = state(resolveBool(checked));\n\n after(checked).change((next) => {\n if (next == null) return;\n currentState.set(!!next);\n onChange?.(next);\n });\n\n const control = Label(\n { className: 'g-ui-checkbox-control' },\n Input({\n type: 'checkbox',\n indeterminate: indeterminate,\n checked: currentState,\n className: cx(\n 'g-ui-checkbox-input',\n classVar('g-ui-checkbox-size-', size, 'md'),\n inputProps?.className\n ),\n ...rest,\n }),\n when(currentState,\n () => Div({ className: 'g-ui-checkbox-checked', innerHTML: checkedSvg }),\n () => {\n if (!currentState.get() && indeterminate.get()) {\n return Div({ className: 'g-ui-checkbox-indeterminate', innerHTML: indeterminateSvg });\n }\n }\n ),\n when(label, () => Span({ className: 'g-ui-checkbox-label' }, label))\n );\n\n return Div(\n { className: cx('g-ui-checkbox', classVar('g-ui-checkbox-size-', size, 'md'), className) },\n control,\n when(description, () => Span({ className: 'g-ui-checkbox-description' }, description))\n );\n}\n", "import { Input, Label, Span, when, after, state } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\nimport { switchGroupContext } from './SwitchGroup.js';\n\nexport function Switch(...args) {\n const { props, rawProps } = splitPropsChildren(args, { size: 'md' });\n const { label, size, className, style, inputProps, checked, value, ...rest } = props;\n const { onChange } = rawProps;\n const checkedState = state(checked);\n const switchGroupState = switchGroupContext.state();\n\n const switchGroupInfo = after(switchGroupState).compute((value) => {\n return {\n name: value.name,\n type: value.name ? 'radio' : 'checkbox'\n }\n });\n\n after(switchGroupState.selected).change((selected) => {\n checkedState.set(selected === value.get());\n });\n\n after(checkedState).change((next) => {\n onChange?.(next);\n if (!next) return;\n const selectedState = switchGroupState.get().selected\n switchGroupState.set().selected = value.get();\n });\n\n\n\n return Label(\n { className: cx('g-ui-switch', classVar('g-ui-switch-size-', size, 'md'), className) },\n Input({\n type: switchGroupInfo.type,\n name: switchGroupInfo.name,\n value: value,\n checked: checkedState,\n className: cx('g-ui-switch-input', classVar('g-ui-switch-size-', size, 'md'), inputProps?.className),\n ...rest,\n }),\n when(label, () => Span({ className: 'g-ui-switch-label' }, label))\n );\n}\n", "import { Div, context, state, after } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\n\nexport const switchGroupContext = context({ name: null, selected: null });\n\nexport function SwitchGroup(...args) {\n const { props, rawProps, children } = splitPropsChildren(args);\n const { className, name, selected, onChange: _onChange, ...rest } = props;\n const { onChange } = rawProps;\n\n const scope = switchGroupContext.scope({ name: name?.get(), selected: selected?.get() });\n \n after(scope.selected).change((next) => {\n onChange?.(next);\n });\n \n after(selected).change((next) => {\n if(next === scope.selected.get()) return;\n scope.set().selected = next;\n })\n\n return scope.serve(Div({ ...rest, className: cx('g-ui-switch-group', className) }, children));\n}\n", "import { Div, Span, when, state, after } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, resolveValue } from '../utils.js';\nimport { keyboardArrowDownSvg } from '../theme/icons.js';\nimport { Icon } from './Icon.js';\n\nexport function Select(...args) {\n const { props, rawProps } = splitPropsChildren(args, { data: [], size: 'md' });\n const { data, value, size, leftSection, rightSection, placeholder, className, ...rest } = props;\n const { onChange } = rawProps;\n const open = state(false);\n const currentState = state(resolveValue(value) ?? '');\n\n after(value).change((next) => {\n const resolved = resolveValue(next);\n if (resolved === undefined) return;\n currentState.set(resolved ?? '');\n });\n\n const selectValue = (next) => {\n currentState.set(next);\n onChange?.(next);\n open.set(false);\n };\n\n const valueClass = after(currentState).compute((current) => {\n if (!current) return 'g-ui-select-placeholder';\n return '';\n });\n const displayLabel = after(currentState).compute((current) => {\n const items = resolveValue(data) ?? [];\n const match = items.find((item) => item.value === current);\n if (current) return match?.label ?? '';\n return placeholder ?? '';\n });\n\n return Div(\n { ...rest, className: cx('g-ui-select-root', className) },\n Div(\n { className: cx('g-ui-input-wrapper', classVar('g-ui-input-size-', size, 'md')) },\n when(leftSection, () => Div({ className: 'g-ui-input-section' }, leftSection)),\n Div(\n {\n className: cx('g-ui-select', valueClass),\n onClick: () => open.set(!open.get()),\n },\n Span({ className: 'g-ui-select-value' }, displayLabel)\n ),\n when(rightSection, () => Div({ className: 'g-ui-input-section' }, rightSection), () =>\n Span({ className: 'g-ui-select-caret' }, Icon({ innerHTML: keyboardArrowDownSvg }))\n )\n ),\n when(open, () =>\n Div(\n { className: 'g-ui-select-dropdown' },\n (resolveValue(data) ?? []).map((item) =>\n Div(\n {\n className: cx(\n 'g-ui-select-item',\n after(currentState).compute((current) => {\n if (current === item.value) return 'g-ui-select-item-active';\n return '';\n })\n ),\n onClick: () => selectValue(item.value),\n },\n item.label\n )\n )\n )\n )\n );\n}\n", "import { Span } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\n\nexport function Icon(...args) {\n const { props, children } = splitPropsChildren(args, { size: 'md' });\n \n return Span(\n {\n ...props,\n className: cx(\n 'g-ui-icon',\n classVar('g-ui-icon-size-', props.size, 'md'),\n classVar('g-ui-icon-color-', props.color),\n props.className\n ),\n },\n ...children\n );\n}\n", "import { Button, Div, state, after, list, when } from '@granularjs/core';\nimport { cx, splitPropsChildren, classMap, classVar, resolveValue, resolveBool } from '../utils.js';\n\nexport function Tabs(...args) {\n const { props, rawProps } = splitPropsChildren(args, {\n tabs: [],\n orientation: 'horizontal',\n variant: 'default',\n sticky: true,\n });\n const { value, tabs, orientation, variant, sticky, className, style } = props;\n const { onChange } = rawProps;\n\n const currentState = state(resolveValue(value) ?? resolveValue(tabs)?.[0]?.value ?? '');\n const sentinelNode = state();\n const listNode = state();\n const spacerHeight = state(0);\n const stickyLeft = state(0);\n const stickyWidth = state(0);\n const stickyTop = state(0);\n const isSticky = state(false);\n const lastScrollTop = state(0);\n let listening = false;\n let rafId = null;\n let initScheduled = false;\n const listenerTargets = new Set();\n\n after(value).change((next) => {\n const resolved = resolveValue(next);\n if (resolved == null) return;\n currentState.set(resolved);\n });\n\n const setValue = (next) => {\n currentState.set(next);\n onChange?.(next);\n };\n\n const getScrollParents = (node) => {\n const parents = [];\n let current = node?.parentElement;\n while (current) {\n const style = getComputedStyle(current);\n const overflow = `${style.overflow}${style.overflowY}${style.overflowX}`;\n if (/(auto|scroll)/.test(overflow)) {\n parents.push(current);\n }\n current = current.parentElement;\n }\n return parents;\n };\n\n const getScrollRoot = (node) => getScrollParents(node)[0] ?? null;\n\n const getRootTop = (root) => (root ? root.getBoundingClientRect().top : 0);\n\n const getScrollTop = (root) => (root ? root.scrollTop : (window.scrollY || window.pageYOffset || 0));\n\n const getScrollDirection = (current, last) => {\n if (current > last) return 'down';\n if (current < last) return 'up';\n return 'none';\n };\n\n const getNextSticky = (direction, sentinelTop, rootTop, currentSticky) => {\n if (direction === 'down' && sentinelTop < rootTop) return true;\n if (direction === 'up' && sentinelTop >= rootTop) return false;\n return currentSticky;\n };\n\n const updateSticky = () => {\n const sentinelEl = sentinelNode.get();\n const listEl = listNode.get();\n if (!sentinelEl || !listEl) return;\n if (!resolveBool(sticky)) {\n isSticky.set(false);\n spacerHeight.set(0);\n return;\n }\n if (typeof window === 'undefined') return;\n\n const sentinelRect = sentinelEl.getBoundingClientRect();\n const listRect = listEl.getBoundingClientRect();\n const root = getScrollRoot(sentinelEl);\n const rootTop = getRootTop(root);\n const currentScrollTop = getScrollTop(root);\n const direction = getScrollDirection(currentScrollTop, lastScrollTop.get());\n lastScrollTop.set(currentScrollTop);\n\n const nextSticky = getNextSticky(direction, sentinelRect.top, rootTop, isSticky.get());\n\n spacerHeight.set(listRect.height);\n stickyLeft.set(sentinelRect.left);\n stickyWidth.set(sentinelRect.width);\n stickyTop.set(rootTop);\n if (nextSticky !== isSticky.get()) {\n isSticky.set(nextSticky);\n }\n };\n\n const scheduleUpdate = () => {\n if (rafId != null) return;\n rafId = requestAnimationFrame(() => {\n rafId = null;\n updateSticky();\n });\n };\n\n const addListenerTarget = (target) => {\n if (!target || listenerTargets.has(target)) return;\n listenerTargets.add(target);\n target.addEventListener('scroll', scheduleUpdate, { passive: true });\n };\n\n const initListeners = () => {\n if (listening) return;\n const sentinelEl = sentinelNode.get();\n const listEl = listNode.get();\n if (!sentinelEl || !listEl) return;\n if (typeof window === 'undefined') return;\n listening = true;\n updateSticky();\n addListenerTarget(window);\n window.addEventListener('resize', scheduleUpdate);\n getScrollParents(sentinelEl).forEach(addListenerTarget);\n };\n\n after(listNode, sentinelNode, sticky).change(initListeners);\n\n if (!initScheduled && typeof window !== 'undefined') {\n initScheduled = true;\n setTimeout(() => initListeners(), 0);\n }\n\n const stickyStyle = after(isSticky, stickyLeft, stickyWidth, stickyTop).compute((values) => {\n const [active, left, width, top] = values;\n if (!active) {\n return {\n position: 'static',\n top: 'auto',\n left: 'auto',\n width: 'auto',\n zIndex: 'auto',\n background: 'transparent',\n };\n }\n return {\n position: 'fixed',\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n background: 'var(--g-ui-surface)',\n zIndex: 100,\n };\n });\n\n const spacerStyle = after(isSticky, spacerHeight).compute((values) => {\n const [active, height] = values;\n return { height: active ? `${height}px` : '0px' };\n });\n\n return Div(\n Div({\n className: cx(\n 'g-ui-tabs',\n classMap(orientation, { vertical: 'g-ui-tabs-vertical' }),\n classVar('g-ui-tabs-variant-', variant, 'default'),\n props.className ?? className\n ),\n },\n Div({ node: sentinelNode }),\n Div({ style: spacerStyle }),\n Div({ node: listNode, className: 'g-ui-tabs-list', style: stickyStyle },\n list(tabs, (tab) =>\n Button(\n {\n className: after(currentState, tab.value).compute(([v, tabVal]) =>\n cx('g-ui-tabs-tab', tabVal === v && 'g-ui-tabs-tab-active')\n ),\n onClick: () => setValue(tab.get().value),\n },\n tab.label\n )\n )\n ),\n Div({ className: 'g-ui-tabs-panel' },\n when(currentState, () => tabs.get()?.find((tab) => tab.value === currentState.get())?.content ?? null)\n )\n )\n );\n}\n", "import { Table as HtmlTable, Thead, Tbody, Tr, Th, Td, list, when, after } from '@granularjs/core';\nimport { cx, splitPropsChildren, classFlag } from '../utils.js';\n\nexport function Table(...args) {\n const { props } = splitPropsChildren(args, { headers: [], rows: [] });\n const {\n headers,\n rows,\n striped,\n highlightOnHover,\n withBorder,\n withColumnBorders,\n withRowBorders,\n className,\n style,\n ...rest\n } = props;\n\n const hasHeaders = after(headers).compute((next) => next.length > 0);\n return HtmlTable(\n {\n ...rest,\n className: cx(\n 'g-ui-table',\n classFlag('g-ui-table-striped', striped),\n classFlag('g-ui-table-hover', highlightOnHover),\n classFlag('g-ui-table-with-border', withBorder),\n classFlag('g-ui-table-column-borders', withColumnBorders),\n classFlag('g-ui-table-row-borders', withRowBorders),\n className\n ),\n },\n when(hasHeaders, () => Thead(\n TableRow(headers, true)\n )),\n Tbody(list(rows, (row) => TableRow(row, false)))\n );\n}\nconst TableRow = (row, header) => {\n const isArray = after(row).compute((next) => Array.isArray(next));\n\n const ObjectRow = (row) => {\n const cells = after(row).compute((next) => Object.values(next));\n return ArrayRow(cells)\n }\n\n const ArrayRow = (row) => {\n return list(row, (next) => {\n console.log('INFO ABOUT NEXT', header);\n return header ? TableHeaderCell(next) : TableCell(next)\n })\n }\n\n return Tr(\n when(isArray,\n () => ArrayRow(row),\n () => ObjectRow(row)\n )\n )\n}\n\nconst TableCell = (content) => {\n return Td(content)\n}\n\nconst TableHeaderCell = (content) => {\n return Th(content)\n}", "import { Div } from '@granularjs/core';\nimport { state, when, after } from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveBool } from '../utils.js';\n\nexport function Accordion(...args) {\n const { props, children } = splitPropsChildren(args, { opened: false });\n const { opened, className, ...rest } = props;\n const openedState = state(resolveBool(opened));\n\n after(opened).change((next) => {\n openedState.set(resolveBool(next));\n });\n\n const toggle = () => {\n openedState.set(!openedState.get());\n };\n\n const header = children[0];\n const content = children[1];\n return Div(\n { ...rest, className: cx('g-ui-accordion', className) },\n Div({ className: 'g-ui-accordion-header', onClick: toggle }, header),\n when(openedState, () => Div({ className: 'g-ui-accordion-content' }, content))\n );\n}\n", "import { Span } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Tooltip(...args) {\n const { props, children } = splitPropsChildren(args);\n const { label, className, style } = props;\n return Span(\n { className: cx('g-ui-tooltip', className) },\n children,\n Span({ className: 'g-ui-tooltip-content' }, label)\n );\n}\n", "import { Div, when, after, state, portal } from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveValue } from '../utils.js';\n\nexport const menuControlStore = state({ currentOpenState: null })\n\nexport function Menu(...args) {\n const mainNode = state();\n const dropdownNode = state();\n const dropdownStyle = state({});\n const { props, rawProps, children } = splitPropsChildren(args, { position: 'right' });\n const { opened, content, position, className, ...rest } = props;\n const { onChange } = rawProps;\n const currentState = state(resolveValue(opened) ?? false);\n after(opened).change((value) => {\n const resolved = resolveValue(value);\n if (resolved == null) return;\n currentState.set(!!resolved);\n if (!!resolved) {\n closeOldSetCurrent()\n }\n });\n\n const closeOldSetCurrent = () => {\n if (menuControlStore.get().currentOpenState === currentState) return;\n menuControlStore.get().currentOpenState?.set(false)\n menuControlStore.set().currentOpenState = currentState;\n }\n\n if (opened.get()) {\n closeOldSetCurrent()\n }\n\n const parsePosition = (value) => {\n const raw = String(value ?? 'right').toLowerCase();\n const parts = raw.split('-').filter(Boolean);\n if (parts.length === 1) {\n const single = parts[0];\n if (single === 'top' || single === 'bottom') return { placement: single, align: 'center' };\n if (single === 'left' || single === 'right') return { placement: 'bottom', align: single };\n if (single === 'center') return { placement: 'bottom', align: 'center' };\n return { placement: 'bottom', align: 'right' };\n }\n const [first, second] = parts;\n if (first === 'top' || first === 'bottom') {\n return { placement: first, align: second || 'center' };\n }\n if (first === 'left' || first === 'right') {\n return { placement: first, align: second || 'center' };\n }\n return { placement: 'bottom', align: 'right' };\n };\n\n const updatePosition = () => {\n const trigger = mainNode.get();\n const dropdown = dropdownNode.get();\n if (!trigger || !dropdown) return;\n if (typeof window === 'undefined') return;\n const rect = trigger.getBoundingClientRect();\n const dropdownRect = dropdown.getBoundingClientRect();\n const positionValue = resolveValue(position) ?? 'right';\n const spaceVar = getComputedStyle(document.documentElement).getPropertyValue('--g-ui-space-20');\n const margin = Number.parseFloat(spaceVar) || 20;\n const viewportWidth = window.innerWidth || 0;\n const viewportHeight = window.innerHeight || 0;\n const maxLeft = Math.max(margin, viewportWidth - dropdownRect.width - margin);\n const maxTop = Math.max(margin, viewportHeight - dropdownRect.height - margin);\n const { placement, align } = parsePosition(positionValue);\n const gap = 8;\n let top = rect.bottom + gap;\n let left = rect.left;\n if (placement === 'top' || placement === 'bottom') {\n top = placement === 'top' ? rect.top - dropdownRect.height - gap : rect.bottom + gap;\n if (align === 'center') {\n left = rect.left + rect.width / 2 - dropdownRect.width / 2;\n } else if (align === 'right') {\n left = rect.right - dropdownRect.width;\n } else {\n left = rect.left;\n }\n } else if (placement === 'left' || placement === 'right') {\n left = placement === 'left' ? rect.left - dropdownRect.width - gap : rect.right + gap;\n if (align === 'center') {\n top = rect.top + rect.height / 2 - dropdownRect.height / 2;\n } else if (align === 'bottom') {\n top = rect.bottom - dropdownRect.height;\n } else {\n top = rect.top;\n }\n }\n left = Math.max(margin, Math.min(left, maxLeft));\n top = Math.max(margin, Math.min(top, maxTop));\n dropdownStyle.set({\n top: `${top}px`,\n left: `${left}px`,\n });\n };\n\n const setOpen = (next) => {\n currentState.set(next);\n onChange?.(next);\n\n if (next) {\n closeOldSetCurrent()\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => updatePosition());\n } else {\n setTimeout(() => updatePosition(), 0);\n }\n }\n };\n const toggle = () => setOpen(!currentState.get())\n const close = () => setOpen(false)\n\n return Div(\n { ...rest, node: mainNode, className: cx('g-ui-menu', className) },\n Div({ onClick: toggle }, children),\n when(currentState, () =>\n portal(\n Div(\n Div({ className: 'g-ui-menu-overlay', onClick: close }),\n Div(\n { className: 'g-ui-menu-dropdown', node: dropdownNode, style: dropdownStyle },\n content\n )\n )\n )\n )\n );\n}\n", "import { Div, portal, when } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, classMap } from '../utils.js';\n\nexport function Drawer(...args) {\n const { props, children } = splitPropsChildren(args, {\n position: 'right',\n size: 'md',\n overlay: 'normal',\n shadowed: true,\n });\n const { opened, onClose, position, size, overlay, shadowed, className, style } = props;\n return when(opened, () =>\n portal(\n Div(\n { className: cx('g-ui-drawer-overlay', classVar('g-ui-drawer-overlay-', overlay, 'normal')), onClick: onClose },\n Div(\n {\n className: cx(\n 'g-ui-drawer',\n classMap(shadowed, { true: 'g-ui-drawer-shadowed' }, true),\n classVar('g-ui-drawer-', position, 'right'),\n classVar('g-ui-drawer-size-', size, 'md'),\n className\n ),\n onClick: (ev) => ev.stopPropagation(),\n },\n children\n )\n )\n )\n );\n}\n", "import { Button, Div, Span, when, after } from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveBool } from '../utils.js';\nimport { Loading } from './Loading.js';\nimport { closeSvg } from '../theme/icons.js';\n\nexport function Notification(...args) {\n const { props, rawProps, children } = splitPropsChildren(args, { color: 'blue', withCloseButton: true });\n const {\n title,\n color,\n icon,\n loading,\n withCloseButton,\n withBorder,\n className,\n style,\n } = props;\n const { onClose } = rawProps;\n const showLoader = after(icon, loading).compute(([nextIcon, nextLoading]) => !nextIcon && !!nextLoading);\n const withIcon = after(icon, loading).compute(([nextIcon, nextLoading]) => !!nextIcon || !!nextLoading);\n return Div(\n {\n className: cx(\n 'g-ui-notification',\n [withBorder, 'g-ui-notification-bordered'],\n [color, (value) => `g-ui-notification-${value}`],\n [withIcon, 'g-ui-notification-with-icon'],\n className\n ),\n },\n when(icon, () => Span({ className: 'g-ui-notification-icon' }, icon)),\n when(showLoader, () => Loading({ size: 'sm', className: 'g-ui-notification-loader' })),\n Div(\n { className: 'g-ui-notification-body' },\n when(title, () => Div({ className: 'g-ui-notification-title' }, title)),\n children\n ),\n when(withCloseButton, () =>\n Button({ type: 'button', className: 'g-ui-notification-close', onClick: () => onClose?.() }, Span({ innerHTML: closeSvg }))\n )\n );\n}\n", "import { Div, when } from '@granularjs/core';\nimport { cx, splitPropsChildren, classFlag, classVar } from '../utils.js';\nimport { Text } from './Text.js';\n\nexport function Divider(...args) {\n const { props } = splitPropsChildren(args, { labelPosition: 'center' });\n const { label, labelPosition, vertical, className, ...rest } = props;\n\n return Div(\n {\n ...rest,\n className: cx(\n 'g-ui-divider',\n classFlag('label', label),\n classVar('g-ui-divider-label-', labelPosition, 'center'),\n classFlag('g-ui-divider-vertical', vertical),\n className\n ),\n },\n when(label, () => Text({ className: 'g-ui-divider-label-text', size: 'sm' }, label))\n );\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Paper(...args) {\n const { props, children } = splitPropsChildren(args, { padding: 'md', radius: 'md', shadow: 'none' });\n const { padding, radius, shadow, className, ...rest } = props;\n return Div(\n {\n ...rest,\n className: cx(\n 'g-ui-paper',\n [padding, (value) => `g-ui-card-padding-${value}`],\n [radius, (value) => `g-ui-card-radius-${value}`],\n [shadow, (value) => `g-ui-card-shadow-${value}`],\n className\n ),\n },\n children\n );\n}\n", "import { Button, Div, Span, after, when } from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveBool } from '../utils.js';\n\nexport function Alert(...args) {\n const { props, rawProps, children } = splitPropsChildren(args, { color: 'blue' });\n const {\n title,\n color,\n icon,\n withCloseButton,\n className,\n ...rest\n } = props;\n const { onClose } = rawProps;\n\n const hasContent = after(title, withCloseButton).compute(([title, showClose]) => {\n return title || showClose\n });\n const hasIcon = after(icon).compute((icon) => {\n return icon !== undefined\n });\n\n return Div(\n { ...rest, className: cx('g-ui-alert', [color, (value) => `g-ui-alert-${value}`], className) },\n Div(\n { className: 'g-ui-alert-header' },\n when(icon, () => Span({ className: 'g-ui-alert-icon' }, icon)),\n when(title, () => Div({ className: 'g-ui-alert-title' }, title)),\n when(withCloseButton, () => Button({ type: 'button', className: 'g-ui-alert-close', onClick: () => onClose?.() }, '\u00D7'))\n ),\n children\n );\n}\n", "import { Div, Img, when } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Avatar(...args) {\n const { props, children } = splitPropsChildren(args, { size: 'md', alt: '' });\n const { src, size, alt, className, ...rest } = props;\n return Div(\n { ...rest, className: cx('g-ui-avatar', [size, (value) => `g-ui-avatar-size-${value}`], className) },\n when(src, () => Img({ className: 'g-ui-avatar-img', src, alt }), () => {\n return children;\n })\n );\n}\n", "import { Span } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Kbd(...args) {\n const { props, children } = splitPropsChildren(args);\n const { className, ...rest } = props;\n return Span({ ...rest, className: cx('g-ui-kbd', className) }, children);\n}\n", "import { Code as HtmlCode } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Code(...args) {\n const { props, children } = splitPropsChildren(args);\n const { className, ...rest } = props;\n return HtmlCode({ ...rest, className: cx('g-ui-code', className) }, children);\n}\n", "import { Blockquote as HtmlBlockquote } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Blockquote(...args) {\n const { props, children } = splitPropsChildren(args);\n const { className, ...rest } = props;\n return HtmlBlockquote({ ...rest, className: cx('g-ui-blockquote', className) }, children);\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function SimpleGrid(...args) {\n const { props, children } = splitPropsChildren(args, { cols: 3, gap: 'md' });\n const { cols, gap, className, ...rest } = props;\n return Div(\n { ...rest, className: cx('g-ui-grid', [gap, (value) => `g-ui-gap-${value}`], [cols, (value) => `g-ui-grid-cols-${value}`], className) },\n children\n );\n}\n", "import { Ul, Ol, Li, Div, Span, after, when, isSignal, isState, isStatePath, isComputed } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, classFlag, classMap } from '../utils.js';\n\nexport function List(...args) {\n const { props, children } = splitPropsChildren(args, { type: 'none', size: 'md' });\n const { type, size, withPadding, className, ...rest } = props;\n const typeClass = classMap(type, {\n ordered: 'g-ui-list-ordered',\n unordered: 'g-ui-list-unordered',\n none: 'g-ui-list-none',\n });\n const isOrdered = after(type).compute((next) => next === 'ordered');\n const isListNode = (value) =>\n value && typeof value === 'object' && typeof value.tagName === 'string' &&\n (value.tagName.toLowerCase() === 'ul' || value.tagName.toLowerCase() === 'ol');\n const isListItemNode = (value) =>\n value && typeof value === 'object' && typeof value.tagName === 'string' &&\n value.tagName.toLowerCase() === 'li';\n const wrapChild = (child) => {\n console.log('INFO ABOUT ITEM', child,\n typeof child,\n typeof child?.tagName,\n child?.tagName?.toLowerCase()\n );\n const wrapValue = (value) => {\n if (value?.nodeType === 'granular-list-node') return value;\n if (value == null || value === false) return null;\n if (Array.isArray(value)) return value.map((item) => wrapValue(item));\n if (isListItemNode(value)) return value;\n if (isListNode(value)) return Li({ className: 'g-ui-list-nested-item' }, value);\n return Li(Span({ className: 'g-ui-list-item-shell' }, value));\n };\n if (isSignal(child) || isState(child) || isStatePath(child) || isComputed(child)) {\n return after(child).compute((next) => wrapValue(next));\n }\n return wrapValue(child);\n };\n const listChildren = when(children, () => children.map((child) => wrapChild(child)));\n const listProps = {\n ...rest,\n className: cx(\n 'g-ui-list',\n classVar('g-ui-list-size-', size, 'md'),\n classFlag('g-ui-list-with-padding', withPadding),\n typeClass,\n className\n ),\n };\n return when(\n isOrdered,\n () => Ol(listProps, listChildren),\n () => Ul(listProps, listChildren)\n );\n}\n\nexport function ListItem(...args) {\n const { props, children } = splitPropsChildren(args, { withBorder: false });\n const { leftSection, rightSection, title, body, withBorder, className, ...rest } = props;\n const hasStructured = after(title, body).compute(([nextTitle, nextBody]) => !!nextTitle || !!nextBody);\n return Li(\n {\n ...rest,\n className: cx('g-ui-list-item', classFlag('g-ui-list-item-border', withBorder), className),\n },\n Div(\n { className: 'g-ui-list-item-shell' },\n when(leftSection, () => Span({ className: 'g-ui-list-item-section g-ui-list-item-section-left' }, leftSection)),\n when(\n hasStructured,\n () =>\n Div(\n { className: 'g-ui-list-item-content' },\n when(title, () => Div({ className: 'g-ui-list-item-title' }, title)),\n when(body, () => Div({ className: 'g-ui-list-item-body' }, body))\n ),\n () => children\n ),\n when(rightSection, () => Span({ className: 'g-ui-list-item-section g-ui-list-item-section-right' }, rightSection))\n )\n );\n}\n\nList.Item = ListItem;\n", "import { A } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Anchor(...args) {\n const { props, children } = splitPropsChildren(args);\n const { className, ...rest } = props;\n return A({ ...rest, className: cx('g-ui-anchor', className) }, children);\n}\n", "import { Img } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Image(...args) {\n const { props } = splitPropsChildren(args);\n const { className, ...rest } = props;\n return Img({ ...rest, className: cx('g-ui-image', className) });\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\n\nexport function Progress(...args) {\n const { props } = splitPropsChildren(args, { value: 0, color: 'primary', size: 'md' });\n const { value, color, size, className, ...rest } = props;\n return Div(\n {\n ...rest,\n className: cx(\n 'g-ui-progress',\n classVar('g-ui-progress-size-', size, 'md'),\n [value, (next) => {\n const pct = Math.max(0, Math.min(100, Number(next) || 0));\n const bucket = Math.round(pct / 5) * 5;\n return `g-ui-progress-${bucket}`;\n }],\n [color, (next) => {\n if (next) return `g-ui-progress-${next}`;\n return '';\n }],\n className\n ),\n },\n Div({ className: 'g-ui-progress-bar' })\n );\n}\n", "import { Div, after, state, when, list } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, classFlag, resolveBool, resolveValue } from '../utils.js';\n\nexport function Slider(...args) {\n const { props, rawProps } = splitPropsChildren(args, {\n size: 'md',\n min: 0,\n max: 100,\n step: 1,\n });\n const { onChange } = rawProps;\n const {\n value,\n marks,\n size,\n min,\n max,\n step,\n disabled,\n className,\n ...rest\n } = props;\n const currentState = state(resolveValue(value ?? min));\n\n const hasMarks = after(marks).compute((m) => m && m.length > 0);\n \n after(value).change((next) => {\n if (next == null) return;\n currentState.set(resolveValue(next));\n });\n\n const getBounds = () => {\n const minValue = Number(resolveValue(min));\n const maxValue = Number(resolveValue(max));\n if (!Number.isFinite(minValue) || !Number.isFinite(maxValue)) {\n return { minValue: 0, maxValue: 100 };\n }\n return { minValue: Math.min(minValue, maxValue), maxValue: Math.max(minValue, maxValue) };\n };\n\n const getStep = () => {\n const stepValue = Number(resolveValue(step));\n if (Number.isFinite(stepValue) && stepValue > 0) return stepValue;\n return 1;\n };\n\n const setValue = (next) => {\n const { minValue, maxValue } = getBounds();\n const stepValue = getStep();\n const clamped = Math.max(minValue, Math.min(maxValue, Number(next)));\n const stepped = Math.round((clamped - minValue) / stepValue) * stepValue + minValue;\n if (stepped === currentState.get()) return;\n currentState.set(stepped);\n onChange?.(stepped);\n };\n\n const percent = after(currentState).compute((v) => {\n const { minValue, maxValue } = getBounds();\n const range = maxValue - minValue;\n if (range <= 0) return 0;\n const pct = ((Number(v ?? minValue) - minValue) / range) * 100;\n return Math.max(0, Math.min(100, pct));\n });\n\n const updateFromEvent = (ev, getRect) => {\n const rect = getRect?.();\n if (!rect || rect.width === 0) return;\n const x = Math.min(Math.max(ev.clientX - rect.left, 0), rect.width);\n const ratio = x / rect.width;\n const { minValue, maxValue } = getBounds();\n setValue(minValue + ratio * (maxValue - minValue));\n };\n\n const startDrag = (ev) => {\n if (resolveBool(disabled)) return;\n ev.preventDefault?.();\n const trackEl = ev.currentTarget;\n const getRect = () => trackEl.getBoundingClientRect();\n trackEl.setPointerCapture?.(ev.pointerId);\n updateFromEvent(ev, getRect);\n const handleMove = (moveEv) => updateFromEvent(moveEv, getRect);\n const handleUp = () => {\n trackEl.releasePointerCapture?.(ev.pointerId);\n window.removeEventListener('pointermove', handleMove);\n window.removeEventListener('pointerup', handleUp);\n };\n window.addEventListener('pointermove', handleMove);\n window.addEventListener('pointerup', handleUp);\n };\n\n return Div(\n {\n ...rest,\n className: cx(\n 'g-ui-slider',\n classVar('g-ui-slider-size-', size, 'md'),\n classFlag('g-ui-slider-disabled', disabled),\n className\n ),\n },\n Div(\n { className: 'g-ui-slider-track', onPointerDown: startDrag },\n Div({\n className: 'g-ui-slider-bar',\n style: after(percent).compute((p) => ({ width: `${p}%` })),\n }),\n Div({\n className: 'g-ui-slider-thumb',\n style: after(percent).compute((p) => ({ left: `${p}%` })),\n })\n ),\n when(hasMarks, () => Div({ className: 'g-ui-slider-marks-placeholder' })),\n when(marks, () => Div(\n { className: 'g-ui-slider-marks' },\n list(marks, (mark) => SliderMark({ mark, getBounds }))\n ))\n );\n}\n\nexport const SliderMark = ({ mark, getBounds }) => {\n const { minValue, maxValue } = getBounds();\n const range = maxValue - minValue;\n\n const value = after(mark).compute((m) => m.value ?? m);\n const label = after(mark).compute((m) => m.label ?? String(m.value) ?? value);\n\n const markValue = Number(value);\n let pct = 0;\n if (range > 0) pct = ((markValue - minValue) / range) * 100;\n return Div(\n {\n className: 'g-ui-slider-mark',\n style: { left: `${Math.max(0, Math.min(100, pct))}%` },\n },\n Div({ className: 'g-ui-slider-mark-label' }, label)\n );\n}\n", "import { Div, after } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Skeleton(...args) {\n const { props } = splitPropsChildren(args, { height: 'md', width: 'full' });\n const { height, width, className, ...rest } = props;\n const customStyle = after(height, width).compute(([h, w]) => {\n const style = {};\n if (!isNaN(h)) style.height = `${h}px`;\n if (!isNaN(w)) style.width = `${w}px`;\n return style;\n });\n\n return Div({\n ...rest,\n style: { width: customStyle.width, height: customStyle.height, ...(rest.style || {}) },\n className: cx(\n 'g-ui-skeleton',\n [height, (value) => `g-ui-skeleton-h-${value}`],\n [width, (value) => `g-ui-skeleton-w-${value}`],\n className\n ),\n });\n}\n", "import { Button, after, state } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\n\nexport function Chip(...args) {\n const { props, rawProps, children } = splitPropsChildren(args, { size: 'md', variant: 'filled', color: 'primary' });\n const { checked, size, variant, color, className, ...rest } = props;\n const { onChange } = rawProps;\n const currentState = state(!!checked);\n after(checked).change((next) => {\n if (next == null) return;\n currentState.set(!!next);\n });\n const setChecked = (next) => {\n currentState.set(next);\n onChange?.(next);\n };\n return Button(\n {\n ...rest,\n type: 'button',\n className: cx(\n 'g-ui-chip',\n classVar('g-ui-chip-size-', size, 'md'),\n classVar('g-ui-chip-variant-', variant, 'filled'),\n classVar('g-ui-chip-color-', color, 'primary'),\n after(currentState).compute((current) => {\n if (current) return 'g-ui-chip-active';\n return '';\n }),\n className\n ),\n onClick: () => setChecked(!currentState.get()),\n },\n children\n );\n}\n", "import { Div, after, state, list } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, resolveValue } from '../utils.js';\n\nexport function SegmentedControl(...args) {\n const { props, rawProps } = splitPropsChildren(args, { data: [], size: 'sm' });\n const { value, data, size, scroll, className, ...rest } = props;\n const { onChange } = rawProps;\n const currentState = state(resolveValue(value));\n after(value).change((next) => {\n const resolved = resolveValue(next);\n if (resolved == null) return;\n currentState.set(resolved);\n });\n const setValue = (next) => {\n currentState.set(next);\n onChange?.(next);\n };\n return Div(\n { ...rest, className: cx(scroll && 'g-ui-segmented-scroll') },\n Div(\n { className: cx('g-ui-segmented', classVar('g-ui-segmented-size-', size, 'sm'), className) },\n list(data, ((item) =>\n Div(\n {\n className: cx(\n 'g-ui-segmented-item',\n after(currentState).compute((current) => {\n if (item.get().value === current) return 'g-ui-segmented-active';\n return '';\n })\n ),\n onClick: () => setValue(item.get().value),\n },\n item.label\n )\n ))\n )\n );\n}\n", "import { Button, Div, state, after } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, resolveValue } from '../utils.js';\n\nexport function Pagination(...args) {\n const { props, rawProps } = splitPropsChildren(args, { total: 1, size: 'md' });\n const { page, total, size, className, ...rest } = props;\n const { onChange } = rawProps;\n const currentState = state(resolveValue(page) ?? 1);\n\n after(page).change((next) => {\n const resolved = resolveValue(next);\n if (resolved == null) return;\n currentState.set(resolved);\n });\n const setPage = (next) => {\n const totalValue = Number(resolveValue(total)) || 1;\n const clamped = Math.max(1, Math.min(totalValue, next));\n currentState.set(clamped);\n onChange?.(clamped);\n };\n const items = [];\n const totalValue = Number(resolveValue(total)) || 1;\n for (let i = 1; i <= totalValue; i += 1) items.push(i);\n return Div(\n {\n ...rest,\n className: cx('g-ui-pagination', classVar('g-ui-pagination-size-', size, 'md'), props.className ?? className),\n },\n Button(\n {\n className: 'g-ui-pagination-item',\n onClick: () => setPage((currentState.get?.() ?? currentState) - 1),\n disabled: after(currentState).compute((v) => v <= 1),\n },\n '<'\n ),\n items.map((i) =>\n Button(\n {\n className: after(currentState).compute((v) =>\n cx('g-ui-pagination-item', i === v && 'g-ui-pagination-item-active')\n ),\n onClick: () => setPage(i),\n },\n String(i)\n )\n ),\n Button(\n {\n className: 'g-ui-pagination-item',\n onClick: () => setPage((currentState.get?.() ?? currentState) + 1),\n disabled: after(currentState).compute((v) => v >= total),\n },\n '>'\n )\n );\n}\n", "import { Div, Input, Label, Span, when, after, state } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\nimport { radioGroupContext } from './RadioGroup.js';\n\n\nexport function Radio(...args) {\n const { props, rawProps } = splitPropsChildren(args, { size: 'md' });\n const { label, name, value, checked, description, size, className, inputProps, ...rest } = props;\n const { onChange } = rawProps;\n\n const checkedState = state(checked?.get() ?? false);\n\n const radioGroupState = radioGroupContext.state();\n const inputName = after(radioGroupState.name, name).compute(([radioGroupName, inputGroupName]) => radioGroupName || inputGroupName);\n\n after(checked, radioGroupState.selected).change((values) => {\n const [checkedValue, selectedValue] = values;\n if (radioGroupState.get().name) {\n checkedState.set(selectedValue === value.get());\n } else {\n checkedState.set(checkedValue);\n }\n });\n\n after(checkedState).change((next) => {\n onChange?.(next);\n if (!next) return;\n if (radioGroupState.get().name) {\n radioGroupState.set().selected = value.get();\n }\n });\n\n const control = Label(\n { className: 'g-ui-radio-control' },\n Input({\n type: 'radio',\n name: inputName,\n value: value,\n checked: checkedState,\n className: cx('g-ui-radio-input', classVar('g-ui-radio-size-', size, 'md'), inputProps?.className),\n ...rest,\n }),\n when(label, () => Span({ className: 'g-ui-radio-label' }, label))\n );\n\n return Div(\n { className: cx('g-ui-radio', classVar('g-ui-radio-size-', size, 'md'), className) },\n control,\n when(description, () => Span({ className: 'g-ui-radio-description' }, description))\n );\n}\n", "import { Div, context, after } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport const radioGroupContext = context({ name: '', selected: null });\n\nexport function RadioGroup(...args) {\n const { props, children, rawProps } = splitPropsChildren(args);\n const { className, name, selected, onChange: _onChange, ...rest } = props;\n const { onChange } = rawProps;\n\n const scope = radioGroupContext.scope({ name: name?.get(), selected: selected?.get() });\n console.log('selected?.get()', selected?.get())\n\n after(name).change((next) => {\n scope.set().name = next;\n });\n after(selected).change((next) => {\n if (next === scope.selected.get()) return;\n scope.set().selected = next;\n });\n\n after(scope.selected).change((next) => {\n onChange?.(next);\n });\n\n\n return scope.serve(Div({ ...rest, className: cx('g-ui-stack g-ui-gap-sm', className) }, children));\n}\n", "import { Nav, Span } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Breadcrumbs(...args) {\n const { props, children } = splitPropsChildren(args, { separator: '/' });\n const { separator, className, ...rest } = props;\n const items = [];\n if (Array.isArray(children)) items.push(...children);\n else items.push(children);\n const filtered = items.filter(Boolean);\n const nodes = [];\n filtered.forEach((item, idx) => {\n nodes.push(item);\n if (idx < filtered.length - 1) {\n nodes.push(Span({ className: 'g-ui-breadcrumbs-separator' }, separator));\n }\n });\n return Nav({ ...rest, className: cx('g-ui-breadcrumbs', className) }, nodes);\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Center(...args) {\n const { props, children } = splitPropsChildren(args);\n const { className, ...rest } = props;\n return Div({ ...rest, className: cx('g-ui-center', className) }, children);\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Space(...args) {\n const { props } = splitPropsChildren(args, { size: 'md' });\n const { size, className, ...rest } = props;\n return Div({ ...rest, className: cx('g-ui-space', [size, (value) => `g-ui-space-${value}`], className) });\n}\n", "import { Div, when } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Collapse(...args) {\n const { props, children } = splitPropsChildren(args);\n const { opened, className, ...rest } = props;\n return when(opened, () => Div({ ...rest, className: cx('g-ui-collapse', className) }, children));\n}\n", "import { Button } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\n\nexport function ActionIcon(...args) {\n const { props, children } = splitPropsChildren(args, { size: 'md', variant: 'filled' });\n const { size, variant, color, className, ...rest } = props;\n return Button(\n {\n ...rest,\n type: 'button',\n className: cx(\n 'g-ui-action-icon',\n classVar('g-ui-action-icon-size-', size, 'md'),\n classVar('g-ui-action-icon-color-', color, 'primary'),\n classVar('g-ui-action-icon-', variant, 'filled'),\n className\n ),\n },\n children\n );\n}\n", "import { Div, when, after, state } from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveValue } from '../utils.js';\n\nexport function Popover(...args) {\n const { props, rawProps, children } = splitPropsChildren(args, { position: 'left' });\n const { opened, position, content, className, ...rest } = props;\n const { onChange } = rawProps;\n const currentState = state(resolveValue(opened) ?? false);\n after(opened).change((next) => {\n const resolved = resolveValue(next);\n if (resolved == null) return;\n currentState.set(!!resolved);\n });\n\n const setOpen = (next) => {\n currentState.set(next);\n onChange?.(next);\n };\n\n return Div(\n { ...rest, className: cx('g-ui-popover', props.className ?? className) },\n Div({ onClick: () => setOpen(!currentState.get()) }, children),\n when(\n currentState,\n () =>\n Div(\n {\n className: cx(\n 'g-ui-popover-dropdown',\n position === 'right' && 'g-ui-popover-right',\n position === 'center' && 'g-ui-popover-center'\n ),\n },\n content\n )\n )\n );\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function HoverCard(...args) {\n const { props, children } = splitPropsChildren(args, { position: 'left' });\n const { position, content, className, ...rest } = props;\n return Div(\n { ...rest, className: cx('g-ui-hover-card', className) },\n children,\n Div({\n className: cx(\n 'g-ui-hover-card-dropdown',\n [position, (value) => {\n if (value === 'right') return 'g-ui-hover-card-right';\n return '';\n }],\n [position, (value) => {\n if (value === 'center') return 'g-ui-hover-card-center';\n return '';\n }]\n ),\n }, content)\n );\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Affix(...args) {\n const { props, children } = splitPropsChildren(args, { position: 'bottom-right' });\n const { position, className, ...rest } = props;\n return Div(\n { ...rest, className: cx('g-ui-affix', [position, (value) => `g-ui-affix-${value}`], className) },\n children\n );\n}\n", "import { Fieldset as HtmlFieldset, Legend, when } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Fieldset(...args) {\n const { props, children } = splitPropsChildren(args);\n const { legend, className, ...rest } = props;\n return HtmlFieldset(\n { ...rest, className: cx('g-ui-fieldset', className) },\n when(legend, () => Legend({ className: 'g-ui-legend' }, legend)),\n children\n );\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\n\nexport function AppBar(...args) {\n const { props, children } = splitPropsChildren(args, { position: 'sticky' });\n const { position, className, ...rest } = props;\n return Div(\n {\n ...rest,\n className: cx('g-ui-appbar', classVar('g-ui-appbar-', position, 'sticky'), className),\n },\n children\n );\n}\n", "import { Div, portal, after, isSignal, isState, isStatePath, state, when } from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveValue, resolveBool } from '../utils.js';\n\nexport function Sidebar(...args) {\n const { props, children } = splitPropsChildren(args, {\n position: 'left',\n size: 'md',\n blur: true,\n fixed: false,\n minWidth: 'button',\n });\n \n return when(props.fixed,\n () => FixedSidebar(props, children), \n () => DrawerSidebar(props, children)\n );\n}\n\nconst DrawerSidebar = (props, children)=>{\n const {\n open,\n onClose,\n position,\n size,\n blur,\n fixed,\n minWidth,\n className,\n ...rest\n } = props;\n const mounted = state(false);\n const openState = state(false);\n const transitionMs = 220;\n \n const applyOpen = (next) => {\n if (next) {\n mounted.set(true);\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => openState.set(true));\n } else {\n setTimeout(() => openState.set(true), 0);\n }\n return;\n }\n openState.set(false);\n setTimeout(() => mounted.set(false), transitionMs);\n };\n\n applyOpen(!!open.get());\n after(open).change((next) => applyOpen(!!next));\n\n const overlayClass = after(openState, blur).compute((values) => {\n const [open, blur] = values;\n \n return cx(\n 'g-ui-sidebar-overlay',\n open && 'g-ui-sidebar-overlay-open',\n !blur && 'g-ui-sidebar-overlay-noblur'\n )\n });\n\n const drawerClass = after(\n size,\n position,\n openState,\n className\n ).compute((values) => {\n const [size, position, open, className] = values;\n const positionClass = position === 'right'\n ? 'g-ui-sidebar-drawer-right g-ui-sidebar-position-right'\n : 'g-ui-sidebar-drawer-left';\n return cx(\n 'g-ui-sidebar',\n 'g-ui-sidebar-drawer',\n `g-ui-sidebar-size-${size}`,\n positionClass,\n open && 'g-ui-sidebar-drawer-open',\n resolveValue(className)\n )\n });\n\n return when(mounted, () =>\n portal(\n Div({ className: overlayClass, onClick: onClose },\n Div({ className: drawerClass, onClick: (ev) => ev.stopPropagation() },\n children\n )\n )\n )\n )\n}\n\nconst FixedSidebar = (props, children)=>{\n const {\n open,\n position,\n size,\n minWidth,\n className,\n ...rest\n } = props;\n \n const classNameComposition = after(\n size,\n position,\n open,\n minWidth,\n className,\n ).compute((values)=>{\n const [size, position, open, minWidth, className] = values;\n \n const minWidthValue = minWidth || 'button';\n let minWidthClass = null;\n if (minWidthValue === 'button') minWidthClass = 'g-ui-sidebar-min-button';\n else if (minWidthValue === 'xs') minWidthClass = 'g-ui-sidebar-min-xs';\n else if (minWidthValue === 'sm') minWidthClass = 'g-ui-sidebar-min-sm';\n else if (minWidthValue === 'md') minWidthClass = 'g-ui-sidebar-min-md';\n\n const classNameString = cx(\n 'g-ui-sidebar g-ui-sidebar-fixed',\n `g-ui-sidebar-size-${size||'md'}`,\n minWidthClass,\n open && 'g-ui-sidebar-fixed-open',\n className\n );\n return classNameString;\n });\n \n return Div(\n {\n ...rest,\n className: classNameComposition,\n },\n children\n );\n}", "import { Div, when, list, after, resolve, state, Img, Span } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\n\nconst PIN_CENTER_OFFSET = { xs: 6, sm: 8, md: 10, lg: 12, xl: 14 };\n\nfunction resolveActiveColor(color) {\n if (color == null || color === '') return 'var(--g-ui-primary)';\n const s = String(color).trim();\n if (s.startsWith('#')) return s;\n return `var(--g-ui-${s})`;\n}\n\nfunction getWeights(items) {\n const list = items ?? [];\n return list.map((item) => {\n if (item == null) return 1;\n const w = Number(item.weight);\n return Number.isFinite(w) && w >= 0 ? w : 1;\n });\n}\n\nfunction getWeightContext(items) {\n const n = (items ?? []).length;\n if (n < 2) return { totalWeight: 0, cumulativeWeights: [0] };\n const weights = getWeights(items);\n const segmentWeights = weights.slice(0, n - 1);\n const totalWeight = segmentWeights.reduce((s, w) => s + w, 0);\n const cumulativeWeights = [0];\n for (let i = 0; i < segmentWeights.length; i++) {\n cumulativeWeights.push(cumulativeWeights[i] + segmentWeights[i]);\n }\n return { totalWeight, cumulativeWeights };\n}\n\nfunction progressToActiveStepWeighted(progressPct, cumulativeWeights, totalWeight, n) {\n if (n < 1 || totalWeight <= 0) return 0;\n const pct = Math.max(0, Math.min(100, progressPct));\n for (let k = n - 1; k >= 0; k--) {\n const threshold = (cumulativeWeights[k] / totalWeight) * 100;\n if (pct >= threshold) return k;\n }\n return 0;\n}\n\nfunction computeActiveStepAndFill(mode, active, progress, elapsedMs, stepDurationsMs, totalDurationMs, items) {\n const m = mode;\n const n = (items ?? []).length;\n if (n === 0) return { activeStep: 0, progressPct: 0 };\n\n if (m === 'step') {\n const step = Math.max(0, Math.min(n - 1, Math.floor(active ?? 0)));\n return { activeStep: step, progressPct: 0 };\n }\n\n if (m === 'percent') {\n const pct = Math.max(0, Math.min(100, Number(progress) || 0));\n const ctx = getWeightContext(items);\n const step = progressToActiveStepWeighted(pct, ctx.cumulativeWeights, ctx.totalWeight, n);\n return { activeStep: step, progressPct: pct };\n }\n\n if (m === 'time') {\n const elapsed = Number(elapsedMs) || 0;\n const durations = stepDurationsMs;\n const total = totalDurationMs;\n let totalDuration = 0;\n if (Array.isArray(durations) && durations.length >= n) {\n totalDuration = durations.slice(0, n).reduce((s, d) => s + (Number(d) || 0), 0);\n } else if (typeof total === 'number' && total > 0) {\n totalDuration = total;\n }\n if (totalDuration <= 0) return { activeStep: 0, progressPct: 0 };\n const segment = totalDuration / n;\n let step = 0;\n if (Array.isArray(durations) && durations.length >= n) {\n let cumulative = 0;\n for (let i = 0; i < n; i++) {\n cumulative += Number(durations[i]) || 0;\n if (elapsed < cumulative) {\n step = i;\n break;\n }\n step = i;\n }\n } else {\n step = Math.min(n - 1, Math.floor(elapsed / segment));\n }\n const progressPct = Math.min(100, (elapsed / totalDuration) * 100);\n const ctx = getWeightContext(items);\n const stepWeighted = progressToActiveStepWeighted(progressPct, ctx.cumulativeWeights, ctx.totalWeight, n);\n return { activeStep: stepWeighted, progressPct };\n }\n\n return { activeStep: 0, progressPct: 0 };\n}\n\nfunction computeSegmentFillPercent(mode, activeStep, progressPct, segmentIndex, n, weightContext) {\n if (n < 2 || segmentIndex < 0 || segmentIndex >= n - 1) return 0;\n if (mode === 'step') {\n return activeStep > segmentIndex ? 100 : 0;\n }\n const { totalWeight, cumulativeWeights } = weightContext ?? getWeightContext([]);\n if (totalWeight <= 0) return 0;\n const segmentStart = (cumulativeWeights[segmentIndex] / totalWeight) * 100;\n const segmentEnd = (cumulativeWeights[segmentIndex + 1] / totalWeight) * 100;\n if (progressPct <= segmentStart) return 0;\n if (progressPct >= segmentEnd) return 100;\n const range = segmentEnd - segmentStart;\n return range <= 0 ? 0 : ((progressPct - segmentStart) / range) * 100;\n}\n\nlet timelineIdCounter = 0;\n\nfunction measureSegmentLayout(timelineId) {\n const el = document.getElementById(timelineId);\n if (!el) return [];\n const itemEls = el.querySelectorAll('.g-ui-timeline-item');\n if (itemEls.length < 2) return [];\n const pinSize = el.dataset.pinSize || 'md';\n const offset = PIN_CENTER_OFFSET[pinSize] ?? PIN_CENTER_OFFSET.md;\n const segments = [];\n for (let i = 0; i < itemEls.length - 1; i++) {\n const top = itemEls[i].offsetTop + offset;\n const height = itemEls[i + 1].offsetTop - itemEls[i].offsetTop;\n segments.push({ top, height });\n }\n return segments;\n}\n\nexport function Timeline(...args) {\n const { props, rawProps } = splitPropsChildren(args, {\n items: [],\n mode: 'step',\n active: 0,\n progress: 0,\n elapsedMs: 0,\n stepDurationsMs: null,\n totalDurationMs: null,\n clickable: false,\n pinRadius: 'md',\n reverseActive: false,\n lineWidth: 'md',\n pinSize: 'md',\n activeColor: 'primary',\n align: 'left',\n pinMode: 'default',\n });\n const {\n items,\n mode,\n active,\n progress,\n elapsedMs,\n stepDurationsMs,\n totalDurationMs,\n clickable,\n pinRadius,\n reverseActive,\n lineWidth,\n pinSize,\n activeColor,\n align,\n pinMode,\n className,\n ...rest\n } = props;\n const { onChange } = rawProps;\n\n const activeColorResolved = after(activeColor).compute((c) => resolveActiveColor(resolve(c)));\n\n const timelineId = `g-ui-timeline-${++timelineIdCounter}`;\n const segmentLayout = state([]);\n const state_ = after(mode, active, progress, elapsedMs, stepDurationsMs, totalDurationMs, items).compute(\n (values) => {\n const [mode, active, progress, elapsedMs, stepDurationsMs, totalDurationMs, items] = values;\n return computeActiveStepAndFill(\n mode,\n active,\n progress,\n elapsedMs,\n stepDurationsMs,\n totalDurationMs,\n items\n );\n }\n );\n const reverseTrackLayout = after(segmentLayout, reverseActive).compute((segs, rev) => {\n if (!resolve(rev) || !segs?.length) return null;\n const first = segs[0];\n let totalHeight = 0;\n for (const s of segs) totalHeight += s.height;\n return { top: first.top, height: totalHeight };\n });\n\n const reverseFillHeight = after(state_).compute((s) =>\n s?.progressPct != null ? `${Math.max(0, Math.min(100, s.progressPct))}%` : '0%'\n );\n\n \n\n const showTrack = after(mode).compute((m) => {\n const v = resolve(m);\n return v === 'time' || v === 'percent' || v === 'step';\n });\n\n const resolvedMode = after(mode).compute((m) => resolve(m));\n\n function scheduleMeasure() {\n setTimeout(() => {\n const segments = measureSegmentLayout(timelineId);\n if (segments.length) segmentLayout.set(segments);\n }, 0);\n }\n\n after(items).change(() => scheduleMeasure());\n after(pinSize).change(() => scheduleMeasure());\n scheduleMeasure();\n\n return Div(\n {\n ...rest,\n id: timelineId,\n 'data-pin-size': after(pinSize).compute((s) => resolve(s) ?? 'md'),\n style: after(activeColorResolved).compute((c) => ({\n '--g-ui-timeline-active-color': c || 'var(--g-ui-primary)',\n })),\n className: cx(\n 'g-ui-timeline',\n after(mode).compute((m) => (m ? `g-ui-timeline-mode-${resolve(m)}` : '')),\n after(showTrack).compute((show) => (show ? 'g-ui-timeline-has-track' : '')),\n after(clickable).compute((c) => (resolve(c) ? 'g-ui-timeline-clickable' : '')),\n after(reverseActive).compute((r) => (resolve(r) ? 'g-ui-timeline-reverse' : '')),\n after(align).compute((a) => (resolve(a) === 'right' ? 'g-ui-timeline-align-right' : '')),\n classVar('g-ui-timeline-pin-radius-', pinRadius, 'md'),\n classVar('g-ui-timeline-line-width-', lineWidth, 'md'),\n classVar('g-ui-timeline-pin-size-', pinSize, 'md'),\n after(pinMode).compute((p) => (p ? `g-ui-timeline-pin-mode-${resolve(p)}` : '')),\n className\n ),\n },\n when(showTrack, () =>\n after(reverseActive).compute((rev) => {\n if (resolve(rev)) {\n return Div(\n {\n className: 'g-ui-timeline-track-segment g-ui-timeline-track-reverse',\n style: after(reverseTrackLayout).compute((l) =>\n l ? { top: `${l.top}px`, height: `${l.height}px` } : {}\n ),\n },\n Div({\n className: 'g-ui-timeline-track-fill',\n style: after(reverseFillHeight).compute((h) => (h ? { height: h } : { height: '0%' })),\n })\n );\n }\n return list(segmentLayout, (seg, idx) => {\n const segStyle = after(seg).compute((s) =>\n s ? { top: `${s.top}px`, height: `${s.height}px` } : {}\n );\n const fillPct = after(state_, idx, items, resolvedMode).compute(([s, i, its, m]) => {\n const itsList = its ?? [];\n const n = itsList.length;\n const weightContext = getWeightContext(itsList);\n return computeSegmentFillPercent(\n m,\n s?.activeStep ?? 0,\n s?.progressPct ?? 0,\n resolve(i) ?? 0,\n n,\n weightContext\n );\n });\n const fillHeight = after(fillPct).compute((p) => `${Math.max(0, Math.min(100, p))}%`);\n return Div(\n {\n className: 'g-ui-timeline-track-segment',\n style: after(segStyle).compute((x) => x),\n },\n Div({\n className: 'g-ui-timeline-track-fill',\n style: after(fillHeight).compute((h) => (h ? { height: h } : { height: '0%' })),\n })\n );\n });\n })\n ),\n list(items, (item, idx) => {\n const itemState = after(state_, idx).compute(([s, i]) => {\n const step = s?.activeStep ?? 0;\n const index = resolve(i) ?? 0;\n if (index < step) return 'completed';\n if (index === step) return 'active';\n return 'future';\n });\n const itemClass = after(itemState).compute((st) => (st ? `g-ui-timeline-item-${st}` : ''));\n const handleClick =\n resolve(clickable) && typeof onChange === 'function'\n ? () => {\n const i = resolve(idx);\n if (typeof i === 'number') onChange(i);\n }\n : undefined;\n const pinModeVal = after(pinMode).compute((p) => resolve(p) ?? 'default');\n const pinExtra = after(pinModeVal, item).compute((mode, it) => {\n const m = mode ?? 'default';\n if (m === 'icon' && (it?.icon != null || it?.pinIcon != null))\n return Span(\n { className: 'g-ui-timeline-pin-icon material-symbols-outlined' },\n it.icon ?? it.pinIcon ?? ''\n );\n if (m === 'image' && (it?.image != null || it?.pinImage != null || it?.src != null))\n return Img({\n className: 'g-ui-timeline-pin-image',\n src: it.image ?? it.pinImage ?? it.src,\n alt: it.pinImageAlt ?? '',\n });\n if (m === 'custom' && it?.pinContent != null) return it.pinContent;\n return null;\n });\n const hasPinExtra = after(pinModeVal, item).compute((mode, it) => {\n const m = mode ?? 'default';\n if (m === 'icon') return it?.icon != null || it?.pinIcon != null;\n if (m === 'image') return it?.image != null || it?.pinImage != null || it?.src != null;\n if (m === 'custom') return it?.pinContent != null;\n return false;\n });\n const dotBlock = Div(\n { className: 'g-ui-timeline-dot' },\n Div({ className: 'g-ui-timeline-dot-inner' }),\n when(hasPinExtra, () => pinExtra)\n );\n const contentBlock = Div(\n { className: 'g-ui-timeline-content' },\n when(item.title, () => Div({ className: 'g-ui-timeline-title' }, item.title)),\n when(item.description, () =>\n Div({ className: 'g-ui-timeline-desc' }, item.description)\n ),\n item.content\n );\n return Div(\n {\n className: cx('g-ui-timeline-item', itemClass),\n style: after(activeColorResolved).compute((c) =>\n c ? { '--g-ui-timeline-active-color': c } : undefined\n ),\n onClick: handleClick,\n role: handleClick ? 'button' : undefined,\n tabIndex: handleClick ? 0 : undefined,\n },\n dotBlock,\n contentBlock\n );\n })\n );\n}\n", "import { Div, list } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Stepper(...args) {\n const { props } = splitPropsChildren(args, { active: 0, items: [] });\n const { active, items, className, ...rest } = props;\n return Div(\n { ...rest, className: cx('g-ui-stepper', className) },\n list(items, (item, idx) =>\n Div(\n { className: cx('g-ui-stepper-item', [active, (value) => {\n console.log('value', value, 'idx', idx);\n if (idx.get() === value) return 'g-ui-stepper-active';\n return '';\n }]) },\n Div({ className: 'g-ui-stepper-index' }, String(idx + 1)),\n Div({ className: 'g-ui-stepper-label' }, item.label)\n )\n )\n );\n}\n", "import { Span, after, state } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, resolveValue } from '../utils.js';\n\nexport function Rating(...args) {\n const { props, rawProps } = splitPropsChildren(args, { value: 0, max: 5, size: 'md' });\n const { value, max, size, className, ...rest } = props;\n const { onChange } = rawProps;\n const currentState = state(resolveValue(value));\n after(value).change((next) => {\n const resolved = resolveValue(next);\n if (resolved == null) return;\n currentState.set(resolved);\n });\n const setValue = (next) => {\n currentState.set(next);\n onChange?.(next);\n };\n const items = [];\n const maxValue = Number(resolveValue(max)) || 0;\n for (let i = 1; i <= maxValue; i += 1) items.push(i);\n return Span(\n {\n ...rest,\n className: cx('g-ui-rating', classVar('g-ui-rating-size-', size, 'md'), props.className ?? className),\n },\n items.map((i) =>\n Span(\n {\n className: cx(\n 'g-ui-rating-item',\n after(currentState).compute((current) => {\n if (i <= current) return 'g-ui-rating-item-active';\n return '';\n })\n ),\n onClick: () => setValue(i),\n },\n '\u2605'\n )\n )\n );\n}\n", "import { Span } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Tag(...args) {\n const { props, children } = splitPropsChildren(args);\n const { className, ...rest } = props;\n return Span({ ...rest, className: cx('g-ui-tag', className) }, children);\n}\n", "import { Button, Div, state, after } from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveValue, classVar } from '../utils.js';\nimport { forwardSvg, backwardSvg } from '../theme/icons.js';\nimport { ActionIcon } from './ActionIcon.js';\nimport { Icon } from './Icon.js';\n\nconst weekDays = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\n\nexport function Calendar(...args) {\n const { props, rawProps } = splitPropsChildren(args, { size: 'md' });\n const { value, className, size, ...rest } = props;\n const { onChange } = rawProps;\n const resolveDate = (next) => {\n const resolved = resolveValue(next);\n if (resolved instanceof Date) return resolved;\n if (resolved == null) return null;\n const parsed = new Date(resolved);\n if (Number.isNaN(parsed.getTime())) return null;\n return parsed;\n };\n const currentState = state(resolveDate(value) ?? new Date());\n const viewState = state(new Date(currentState.get()));\n\n after(value).change((next) => {\n const resolved = resolveDate(next);\n if (resolved == null) return;\n currentState.set(resolved);\n viewState.set(new Date(resolved));\n });\n\n const createDate = (year, month, day) => {\n const maxDay = new Date(year, month + 1, 0).getDate();\n return new Date(year, month, Math.min(day, maxDay));\n };\n\n const setDate = (day) => {\n const current = viewState.get();\n const next = createDate(current.getFullYear(), current.getMonth(), day);\n currentState.set(next);\n viewState.set(next);\n onChange?.(next);\n };\n\n const shiftMonth = (delta) => {\n const current = viewState.get();\n const next = createDate(current.getFullYear(), current.getMonth() + delta, current.getDate());\n viewState.set(next);\n };\n\n const shiftYear = (delta) => {\n const current = viewState.get();\n const next = createDate(current.getFullYear() + delta, current.getMonth(), current.getDate());\n viewState.set(next);\n };\n\n const monthLabel = after(viewState).compute((current) => current.toLocaleString('default', { month: 'long' }));\n const yearLabel = after(viewState).compute((current) => String(current.getFullYear()));\n const gridCells = after(viewState, currentState).compute(([current, selected]) => {\n const year = current.getFullYear();\n const month = current.getMonth();\n const first = new Date(year, month, 1);\n const start = first.getDay();\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const cells = [];\n for (let i = 0; i < start; i += 1) cells.push({ muted: true, label: '' });\n for (let d = 1; d <= daysInMonth; d += 1) cells.push({ label: d });\n return [\n ...weekDays.map((d) => Div({ className: 'g-ui-calendar-cell g-ui-calendar-cell-muted' }, d)),\n ...cells.map((c) =>\n Div(\n {\n className: cx(\n 'g-ui-calendar-cell',\n c.muted && 'g-ui-calendar-cell-muted',\n c.label &&\n selected.getFullYear() === year &&\n selected.getMonth() === month &&\n c.label === selected.getDate() &&\n 'g-ui-calendar-cell-active'\n ),\n onClick: () => c.label && setDate(c.label),\n },\n c.label\n )\n ),\n ];\n });\n\n return Div(\n { ...rest, className: cx('g-ui-calendar', className, classVar('g-ui-calendar-size-', size, 'md')) },\n Div(\n { className: 'g-ui-calendar-header' },\n ActionIcon(\n { size: 'xs', variant: 'subtle', className: 'g-ui-calendar-nav', onClick: () => shiftMonth(-1) },\n Icon({ size: 'sm', className: 'g-ui-calendar-nav-icon', innerHTML: backwardSvg })\n ),\n Div(\n { className: 'g-ui-calendar-title-group' },\n Button({ type: 'button', className: 'g-ui-calendar-title-button', onClick: () => shiftMonth(1) }, monthLabel),\n Button({ type: 'button', className: 'g-ui-calendar-title-button', onClick: () => shiftYear(1) }, yearLabel)\n ),\n ActionIcon(\n { size: 'xs', variant: 'subtle', className: 'g-ui-calendar-nav', onClick: () => shiftMonth(1) },\n Icon({ size: 'sm', className: 'g-ui-calendar-nav-icon', innerHTML: forwardSvg })\n )\n ),\n Div({ className: 'g-ui-calendar-grid' }, gridCells)\n );\n}\n", "import { Div, Span, Input, when, after, state } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, resolveValue } from '../utils.js';\nimport { checkedSvg, closeSvg } from '../theme/icons.js';\n\nexport function MultiSelect(...args) {\n const { props, rawProps } = splitPropsChildren(args, { data: [], size: 'md', searchable: true });\n const { value, data, size, className, placeholder, searchable, ...rest } = props;\n const { onChange, onSearchChange } = rawProps;\n const currentState = state(resolveValue(value) ?? []);\n const searchState = state('');\n const openState = state(false);\n const rootNode = state(null);\n\n const normalizeData = (items) => {\n const resolved = resolveValue(items) ?? [];\n return resolved.map((item) => {\n if (typeof item === 'string') return { value: item, label: item };\n if (item && typeof item === 'object') return item;\n return { value: String(item), label: String(item) };\n });\n };\n\n after(value).change((next) => {\n const resolved = resolveValue(next);\n if (resolved == null) return;\n currentState.set(resolved);\n });\n let outsideCleanup = null;\n after(openState).change((next) => {\n if (outsideCleanup) {\n outsideCleanup();\n outsideCleanup = null;\n }\n if (!next) return;\n const handler = (ev) => {\n const root = rootNode.get();\n if (!root) return;\n if (root.contains(ev.target)) return;\n openState.set(false);\n };\n document.addEventListener('mousedown', handler);\n outsideCleanup = () => document.removeEventListener('mousedown', handler);\n });\n after(searchState).change((next) => {\n onSearchChange?.(next);\n });\n\n const toggle = (val) => {\n const selected = currentState.get() ?? [];\n const next = selected.includes(val)\n ? selected.filter((v) => v !== val)\n : selected.concat(val);\n currentState.set(next);\n onChange?.(next);\n };\n\n const normalizedData = after(data).compute((nextData) => normalizeData(nextData));\n const filteredItems = after(normalizedData, searchState).compute(([items, query]) => {\n const q = String(resolveValue(query) ?? '').toLowerCase().trim();\n if (!q) return items;\n return items.filter((item) => String(item.label ?? '').toLowerCase().includes(q));\n });\n const isEmpty = after(currentState, searchState).compute(([nextSelected, query]) => {\n const list = resolveValue(nextSelected) ?? [];\n const q = String(resolveValue(query) ?? '');\n return (!list.length) && !q;\n });\n const isSearchable = after(searchable).compute((next) => !!next);\n\n return Div(\n { ...rest, node: rootNode, className: cx('g-ui-select-multi-root', className) },\n Div(\n {\n className: cx('g-ui-select-multi', classVar('g-ui-select-multi-size-', size, 'md')),\n onClick: () => openState.set(true),\n },\n after(normalizedData, currentState).compute(([items, current]) => {\n const list = resolveValue(current) ?? [];\n return list.map((val) => {\n const match = (items ?? []).find((entry) => entry.value === val);\n const label = match?.label ?? val;\n return Span(\n {\n className: 'g-ui-select-tag',\n },\n Span(\n {\n className: 'g-ui-select-tag-label',\n onClick: (ev) => {\n ev?.stopPropagation?.();\n },\n },\n label\n ),\n Span({\n className: 'g-ui-select-tag-remove',\n innerHTML: closeSvg,\n onClick: (ev) => {\n ev?.stopPropagation?.();\n toggle(val);\n },\n })\n );\n });\n }),\n when(isEmpty, () => Span({ className: 'g-ui-select-multi-placeholder' }, placeholder ?? 'Select...')),\n when(isSearchable, () =>\n Input({\n className: 'g-ui-select-multi-input',\n value: searchState,\n onInput: (ev) => searchState.set(ev.target?.value ?? ''),\n onFocus: () => openState.set(true),\n })\n )\n ),\n when(openState, () =>\n Div(\n { className: 'g-ui-select-dropdown' },\n after(filteredItems).compute((items) => {\n if (!items.length) {\n return Div({ className: 'g-ui-select-item' }, 'Nothing found');\n }\n return items.map((item) =>\n Div(\n {\n className: cx(\n 'g-ui-select-item',\n item.disabled && 'g-ui-select-item-disabled',\n after(currentState).compute((current) => {\n const list = resolveValue(current) ?? [];\n return list.includes(item.value) ? 'g-ui-select-item-active' : '';\n })\n ),\n onClick: () => {\n if (item.disabled) return;\n toggle(item.value);\n },\n },\n Span({\n className: 'g-ui-select-item-check',\n innerHTML: after(currentState).compute((current) => {\n const list = resolveValue(current) ?? [];\n return list.includes(item.value) ? checkedSvg : '';\n }),\n }),\n Span({ className: 'g-ui-select-item-label' }, item.label)\n )\n );\n })\n )\n )\n );\n}\n", "import { Div, when, list, portal } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\nimport { Toast } from './Toast.js';\n\nexport function ToastStack(...args) {\n const { props, rawProps } = splitPropsChildren(args, { items: [] });\n const { items, className, timeout, ...rest } = props;\n const { onClose } = rawProps;\n return portal(Div(\n { ...rest, className: cx('g-ui-toast-stack', className) },\n list(items, (item) =>\n Toast({ title: item.title, onClose: () => onClose?.(item) }, item.message)\n )\n ));\n}\n", "import { Div, Button, when, state} from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\nimport { closeSvg } from '../theme/icons.js';\nimport { Icon } from './Icon.js';\n\nexport function Toast(...args) {\n const { props, rawProps, children } = splitPropsChildren(args);\n const { title, className, ...rest } = props;\n const { onClose } = rawProps;\n const visible = state(true);\n const close = () => {\n visible.set(false);\n onClose?.();\n console.log('close');\n }\n\n return when(visible, () => Div(\n { ...rest, className: cx('g-ui-toast', className) },\n Div(\n { className: 'g-ui-toast-row' },\n when(title, () => Div({ className: 'g-ui-toast-title' }, title)),\n Button({ className: 'g-ui-toast-close', onClick: close },\n Icon({ innerHTML: closeSvg })\n )\n ),\n children\n ))\n}\n", "import { Calendar } from './Calendar.js';\nimport { splitPropsChildren } from '../utils.js';\n\nexport function DatePicker(...args) {\n const { props } = splitPropsChildren(args);\n return Calendar(props);\n}\n", "import { Div, when, after } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, resolveValue } from '../utils.js';\nimport { Notification } from './Notification.js';\n\nexport function Notifications(...args) {\n const { props, rawProps } = splitPropsChildren(args, { items: [], position: 'top-right' });\n const { items, position, className, ...rest } = props;\n const { onRemove } = rawProps;\n const timers = new Map();\n\n const getId = (item, index) => item?.id ?? item?.key ?? index;\n\n const notifications = after(items).compute((nextItems) => {\n const list = resolveValue(nextItems) ?? [];\n const active = new Set();\n list.forEach((item, index) => {\n const id = getId(item, index);\n active.add(id);\n if (item?.autoClose && !timers.has(id)) {\n const timeout = setTimeout(() => {\n timers.delete(id);\n onRemove?.(item);\n }, item.autoClose);\n timers.set(id, timeout);\n }\n });\n for (const [id, handle] of timers.entries()) {\n if (!active.has(id)) {\n clearTimeout(handle);\n timers.delete(id);\n }\n }\n return list.map((item, index) =>\n Notification(\n {\n key: getId(item, index),\n title: item.title,\n color: item.color,\n icon: item.icon,\n loading: item.loading,\n withCloseButton: item.withCloseButton,\n withBorder: item.withBorder,\n onClose: () => {\n item.onClose?.();\n onRemove?.(item);\n },\n },\n item.message ?? item.body ?? item.content ?? item.text\n )\n );\n });\n return Div(\n {\n ...rest,\n className: cx('g-ui-notifications', classVar('g-ui-notifications-position-', position, 'top-right'), className),\n },\n notifications\n );\n}\n", "import { Div, after, state, when } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, classFlag, resolveBool, resolveValue } from '../utils.js';\nimport { SliderMark } from './Slider.js';\n\nexport function RangeSlider(...args) {\n const { props, rawProps } = splitPropsChildren(args, { min: 0, max: 100, step: 1, size: 'md' });\n const { value, marks, min, max, step, size, disabled, className, ...rest } = props;\n const { onChange } = rawProps;\n const currentState = state(resolveValue(value ?? [min, max]));\n const getBounds = () => {\n const minValue = Number(resolveValue(min));\n const maxValue = Number(resolveValue(max));\n if (!Number.isFinite(minValue) || !Number.isFinite(maxValue)) {\n return { minValue: 0, maxValue: 100 };\n }\n return { minValue: Math.min(minValue, maxValue), maxValue: Math.max(minValue, maxValue) };\n };\n const getStep = () => {\n const stepValue = Number(resolveValue(step));\n if (Number.isFinite(stepValue) && stepValue > 0) return stepValue;\n return 1;\n };\n const normalize = (vals) => {\n const { minValue, maxValue } = getBounds();\n const stepValue = getStep();\n let list = [minValue, maxValue];\n if (Array.isArray(vals)) list = vals;\n const first = Math.max(minValue, Math.min(maxValue, Number(list[0])));\n const second = Math.max(minValue, Math.min(maxValue, Number(list[1])));\n const low = Math.round(Math.min(first, second) / stepValue) * stepValue;\n const high = Math.round(Math.max(first, second) / stepValue) * stepValue;\n return [low, high];\n };\n after(value).change((next) => {\n if (next == null) return;\n currentState.set(normalize(next));\n });\n const setValue = (next) => {\n const normalized = normalize(next);\n if (\n normalized?.[0] === currentState.get()?.[0] &&\n normalized?.[1] === currentState.get()?.[1]\n ) {\n return;\n }\n currentState.set(normalized);\n onChange?.(normalized);\n };\n const percent = after(currentState).compute((vals) => {\n const { minValue, maxValue } = getBounds();\n const range = maxValue - minValue;\n const [low, high] = normalize(vals);\n if (range <= 0) return { lowPct: 0, highPct: 0 };\n const lowPct = ((low - minValue) / range) * 100;\n const highPct = ((high - minValue) / range) * 100;\n return {\n lowPct: Math.max(0, Math.min(100, lowPct)),\n highPct: Math.max(0, Math.min(100, highPct)),\n };\n });\n const updateFromEvent = (ev, getRect, thumb) => {\n const rect = getRect?.();\n if (!rect || rect.width === 0) return;\n const x = Math.min(Math.max(ev.clientX - rect.left, 0), rect.width);\n const ratio = x / rect.width;\n const { minValue, maxValue } = getBounds();\n const nextValue = minValue + ratio * (maxValue - minValue);\n let current = currentState;\n if (typeof currentState.get === 'function') current = currentState.get();\n const [low, high] = normalize(current);\n if (thumb === 'low') setValue([nextValue, high]);\n else setValue([low, nextValue]);\n };\n const startDrag = (ev, forcedThumb, trackEl) => {\n if (resolveBool(disabled)) return;\n ev.preventDefault?.();\n const track = trackEl || ev.currentTarget;\n const getRect = () => track.getBoundingClientRect();\n const rect = getRect();\n let percentValue = percent;\n if (typeof percent.get === 'function') percentValue = percent.get();\n const { lowPct, highPct } = percentValue;\n const clickPct = ((ev.clientX - rect.left) / rect.width) * 100;\n let thumb = forcedThumb;\n if (!thumb) {\n const isLow = Math.abs(clickPct - lowPct) <= Math.abs(clickPct - highPct);\n thumb = 'high';\n if (isLow) thumb = 'low';\n }\n track.setPointerCapture?.(ev.pointerId);\n updateFromEvent(ev, getRect, thumb);\n const handleMove = (moveEv) => updateFromEvent(moveEv, getRect, thumb);\n const handleUp = () => {\n track.releasePointerCapture?.(ev.pointerId);\n window.removeEventListener('pointermove', handleMove);\n window.removeEventListener('pointerup', handleUp);\n };\n window.addEventListener('pointermove', handleMove);\n window.addEventListener('pointerup', handleUp);\n };\n\n return Div(\n {\n ...rest,\n className: cx(\n 'g-ui-range-slider',\n classVar('g-ui-slider-size-', size, 'md'),\n classFlag('g-ui-slider-disabled', disabled),\n props.className ?? className\n ),\n },\n Div(\n { className: 'g-ui-slider-track', onPointerDown: (ev) => startDrag(ev) },\n Div({\n className: 'g-ui-slider-bar',\n style: after(percent).compute(({ lowPct, highPct }) => ({\n left: `${lowPct}%`,\n width: `${Math.max(0, highPct - lowPct)}%`,\n })),\n }),\n Div({\n className: 'g-ui-slider-thumb',\n style: after(percent).compute(({ lowPct }) => ({ left: `${lowPct}%` })),\n onPointerDown: (ev) => {\n ev.stopPropagation?.();\n startDrag(ev, 'low', ev.currentTarget.parentElement);\n },\n }),\n Div({\n className: 'g-ui-slider-thumb',\n style: after(percent).compute(({ highPct }) => ({ left: `${highPct}%` })),\n onPointerDown: (ev) => {\n ev.stopPropagation?.();\n startDrag(ev, 'high', ev.currentTarget.parentElement);\n },\n })\n ),\n when(marks, () => Div(\n { className: 'g-ui-slider-marks' },\n marks.map((mark) => SliderMark({ mark, getBounds }))\n ))\n );\n}\n", "import { state, after } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, resolveValue } from '../utils.js';\nimport { Calendar } from './Calendar.js';\nimport { Popover } from './Popover.js';\nimport { TextInput } from './TextInput.js';\n\nexport function DateInput(...args) {\n const { props, rawProps } = splitPropsChildren(args, { size: 'md', format: { pattern: 'dddd-dd-dd' } });\n const {\n value,\n size,\n calendarSize,\n leftSection,\n rightSection,\n className,\n format,\n minDate,\n maxDate,\n ...rest\n } = props;\n const { onChange } = rawProps;\n\n const resolveDate = (next) => {\n const resolved = resolveValue(next);\n if (resolved instanceof Date) return resolved;\n if (resolved == null || resolved === '') return null;\n const parsed = new Date(resolved);\n if (Number.isNaN(parsed.getTime())) return null;\n return parsed;\n };\n const isSameDay = (left, right) =>\n left &&\n right &&\n left.getFullYear() === right.getFullYear() &&\n left.getMonth() === right.getMonth() &&\n left.getDate() === right.getDate();\n\n const formatDate = (date) => {\n if (!date) return '';\n const year = String(date.getFullYear()).padStart(4, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n };\n\n const parseDate = (text) => {\n const digits = String(text ?? '').replace(/\\D/g, '');\n if (digits.length < 8) return null;\n const year = Number(digits.slice(0, 4));\n const month = Number(digits.slice(4, 6));\n const day = Number(digits.slice(6, 8));\n if (!year || !month || !day) return null;\n const candidate = new Date(year, month - 1, day);\n if (\n candidate.getFullYear() !== year ||\n candidate.getMonth() !== month - 1 ||\n candidate.getDate() !== day\n ) {\n return null;\n }\n const min = resolveDate(minDate);\n if (min && candidate < min) return null;\n const max = resolveDate(maxDate);\n if (max && candidate > max) return null;\n return candidate;\n };\n\n const currentDate = state(resolveDate(value));\n const textValue = state(formatDate(currentDate.get()));\n const opened = state(false);\n\n after(value).change((next) => {\n const resolved = resolveDate(next);\n if (isSameDay(resolved, currentDate.get())) return;\n if (resolved == null) {\n currentDate.set(null);\n textValue.set('');\n return;\n }\n currentDate.set(resolved);\n textValue.set(formatDate(resolved));\n });\n\n after(textValue).change((next) => {\n const parsed = parseDate(next);\n if (!parsed) return;\n if (isSameDay(parsed, currentDate.get())) return;\n currentDate.set(parsed);\n onChange?.(parsed);\n });\n\n const setDate = (next) => {\n if (!next) return;\n if (isSameDay(next, currentDate.get())) return;\n currentDate.set(next);\n textValue.set(formatDate(next));\n onChange?.(next);\n opened.set(false);\n };\n\n return Popover(\n {\n opened,\n onChange: (next) => opened.set(!!next),\n content: Calendar({ size: classVar('', calendarSize, 'xs'), value: currentDate, onChange: setDate }),\n className: 'g-ui-date-input-popover',\n },\n TextInput({\n ...rest,\n size,\n className: cx('g-ui-dateinput', className),\n leftSection,\n rightSection,\n type: 'text',\n inputMode: 'numeric',\n format: format,\n value: textValue,\n onChange: (next) => textValue.set(next),\n })\n );\n}\n", "import { Div, when, after, state } from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveValue } from '../utils.js';\n\nexport function Popper(...args) {\n const { props, rawProps, children } = splitPropsChildren(args);\n const { opened, content, className, ...rest } = props;\n const { onChange } = rawProps;\n const currentState = state(resolveValue(opened) ?? false);\n after(opened).change((next) => {\n const resolved = resolveValue(next);\n if (resolved == null) return;\n currentState.set(!!resolved);\n });\n\n const setOpen = (next) => {\n currentState.set(next);\n onChange?.(next);\n };\n\n return Div(\n { ...rest, className: cx('g-ui-popper', className) },\n Div({ onClick: () => setOpen(!currentState.get()) }, children),\n when(currentState, () => Div({ className: 'g-ui-popper-dropdown' }, content))\n );\n}\n", "import { Button, after, when, state } from '@granularjs/core';\nimport { splitPropsChildren } from '../utils.js';\nimport { TextInput } from './TextInput.js';\n\nexport function PasswordInput(...args) {\n const { props, rawProps } = splitPropsChildren(args, { size: 'md' });\n const { size, className, rightSection, ...rest } = props;\n const { onChange } = rawProps;\n const visible = state(false);\n const inputType = after(visible).compute((next) => {\n if (next) return 'text';\n return 'password';\n });\n const computedRightSection = after(rightSection).compute((next) =>\n next ?? Button(\n { className: 'g-ui-password-toggle', onClick: () => visible.set(!visible.get()) },\n when(visible, () => 'Hide', () => 'Show')\n )\n );\n\n return TextInput({\n ...rest,\n size,\n className,\n onChange,\n rightSection: computedRightSection,\n type: inputType,\n });\n}\n", "import { Span, Div } from '@granularjs/core';\nimport { splitPropsChildren } from '../utils.js';\nimport { searchSvg } from '../theme/icons.js';\nimport { TextInput } from './TextInput.js';\n\nexport function SearchInput(...args) {\n const { props } = splitPropsChildren(args, { size: 'md' });\n const { size, className, ...rest } = props;\n return TextInput({\n ...rest,\n size,\n className,\n leftSection: Div({ className: 'g-ui-search-input-left-section' , innerHTML: searchSvg }),\n type: 'text',\n inputMode: 'search',\n });\n}\n", "import { Button, after, when } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\nimport { state } from '@granularjs/core';\n\nexport function CopyButton(...args) {\n const { props, children } = splitPropsChildren(args, { value: '', timeout: 1500 });\n const { value, timeout, className, ...rest } = props;\n const copied = state(false);\n const buttonClass = after(copied).compute((next) =>\n cx('g-ui-copy-button', next && 'g-ui-copy-button-done', className)\n );\n\n const copy = async () => {\n try {\n await navigator.clipboard.writeText(String(value));\n copied.set(true);\n setTimeout(() => copied.set(false), timeout);\n } catch {}\n };\n\n return Button(\n {\n ...rest,\n className: buttonClass,\n onClick: copy,\n type: 'button',\n },\n when(children?.length, () => children, () => when(copied, () => 'Copied', () => 'Copy'))\n );\n}\n", "import { Div, after, resolve } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\n\nfunction clampValue(v) {\n const n = Number(v);\n if (Number.isNaN(n)) return 0;\n return Math.max(0, Math.min(100, n));\n}\n\nexport function ProgressRing(...args) {\n const { props } = splitPropsChildren(args, { size: 'md', value: null, color: 'primary' });\n const { size, value, color, className, ...rest } = props;\n\n const hasValue = after(value).compute((v) => v != null && v !== '');\n const ringValue = after(value).compute((v) => clampValue(v));\n const style = after(ringValue, hasValue).compute(([val, has]) => {\n if (!has) return {};\n const num = Number(val);\n const deg = Number.isNaN(num) ? 0 : Math.max(0, Math.min(360, num * 3.6));\n return {\n background: `conic-gradient(var(--g-ui-progress-ring-fill, var(--g-ui-primary)) 0deg ${deg}deg, var(--g-ui-border-muted) ${deg}deg 360deg)`,\n };\n });\n const indeterminateClass = after(hasValue).compute((has) => (has ? '' : 'g-ui-progress-ring-indeterminate'));\n const ariaValueNow = after(hasValue, value).compute(([has, v]) => (has ? clampValue(v) : undefined));\n\n return Div(\n {\n ...rest,\n className: cx(\n 'g-ui-progress-ring',\n classVar('g-ui-progress-ring-', color, 'primary'),\n [size, (s) => `g-ui-progress-ring-size-${resolve(s) ?? 'md'}`],\n indeterminateClass,\n className\n ),\n style,\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': ariaValueNow,\n },\n Div({ className: 'g-ui-progress-ring-hole' })\n );\n}\n", "import { Div, state, after, list, when } from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveValue, classFlag } from '../utils.js';\nimport { TextInput } from './TextInput.js';\nimport { ScrollArea } from './ScrollArea.js';\n\nfunction getByPath(obj, path) {\n if (path == null || path === '') return obj;\n const keys = String(path).trim().split('.');\n let v = obj;\n for (const k of keys) v = v?.[k];\n return v;\n}\n\nfunction defaultFilter(query, item, getLabel) {\n const label = getLabel(item);\n return String(label ?? '').toLowerCase().includes(String(query ?? '').toLowerCase());\n}\n\nexport function Autocomplete(...args) {\n const { props, rawProps } = splitPropsChildren(args, {\n data: [],\n size: 'md',\n valuePath: 'value',\n labelPath: 'label',\n });\n const {\n data,\n value,\n size,\n valuePath,\n labelPath,\n filter,\n placeholder,\n label,\n description,\n error,\n leftSection,\n rightSection,\n className,\n inputClassName,\n disabled,\n ...rest\n } = props;\n const { onChange, renderItem } = rawProps;\n\n const opened = state(false);\n const query = state('');\n const currentValue = state(resolveValue(value));\n\n after(value).change((next) => {\n const resolved = resolveValue(next);\n if (resolved === currentValue.get()) return;\n currentValue.set(resolved);\n });\n\n const dataResolved = after(data).compute((d) => (Array.isArray(d) ? d : []));\n\n const selectedItem = after(dataResolved, currentValue, valuePath).compute(([items, val, vPath]) => {\n if (val === undefined || val === null) return null;\n const getVal = (it) => (vPath == null || vPath === '' ? it : getByPath(it, vPath));\n return items.find((it) => getVal(it) === val) ?? null;\n });\n\n const displayText = after(selectedItem, opened, query, labelPath).compute(([sel, isOpen, q, lPath]) => {\n const getLabelCur = (item) =>\n lPath == null || lPath === '' ? String(item ?? '') : String(getByPath(item, lPath) ?? '');\n if (isOpen) return q ?? '';\n return sel ? getLabelCur(sel) : '';\n });\n\n const filteredItems = after(dataResolved, query, filter, labelPath).compute(([items, q, filterVal, lPath]) => {\n const getLabelCur = (item) =>\n lPath == null || lPath === '' ? String(item ?? '') : String(getByPath(item, lPath) ?? '');\n const fn = resolveValue(filterVal) ?? defaultFilter;\n return items.filter((item) => fn(q, item, getLabelCur));\n });\n\n const selectItem = (item) => {\n const vPath = resolveValue(valuePath);\n const val = vPath == null || vPath === '' ? item : getByPath(item, vPath);\n currentValue.set(val);\n query.set('');\n opened.set(false);\n onChange?.(val);\n };\n\n const open = () => {\n if (resolveValue(disabled)) return;\n opened.set(true);\n const sel = selectedItem.get();\n const lPath = resolveValue(labelPath);\n const getLabelCur = (item) =>\n lPath == null || lPath === '' ? String(item ?? '') : String(getByPath(item, lPath) ?? '');\n query.set(sel ? getLabelCur(sel) : '');\n };\n const close = () => {\n opened.set(false);\n const sel = selectedItem.get();\n const lPath = resolveValue(labelPath);\n const getLabelCur = (item) =>\n lPath == null || lPath === '' ? String(item ?? '') : String(getByPath(item, lPath) ?? '');\n query.set(sel ? getLabelCur(sel) : '');\n };\n\n const { onChange: _omitOnChange, ...restForInput } = rest;\n const inputProps = {\n ...restForInput,\n size,\n label,\n description,\n error,\n leftSection,\n rightSection,\n placeholder: resolveValue(placeholder) ?? undefined,\n disabled,\n value: displayText,\n onInput: (ev) => query.set(ev?.target?.value ?? ''),\n onFocus: open,\n onClick: open,\n onBlur: () => setTimeout(() => close(), 150),\n };\n\n const getValueForItem = (item) => {\n const vPath = resolveValue(valuePath);\n return vPath == null || vPath === '' ? item : getByPath(item, vPath);\n };\n\n const itemActiveClass = (item) =>\n after(currentValue, valuePath).compute(([v, vPath]) => {\n const getVal = (it) => (vPath == null || vPath === '' ? it : getByPath(it, vPath));\n return getVal(item) === v ? 'g-ui-autocomplete-item-active' : '';\n });\n\n const renderOption = (item) => {\n if (renderItem && typeof renderItem === 'function') {\n const node = renderItem(item);\n if (node != null)\n return Div(\n {\n className: cx('g-ui-autocomplete-item', itemActiveClass(item)),\n onClick: () => selectItem(item),\n role: 'option',\n },\n node\n );\n }\n return Div(\n {\n className: cx('g-ui-autocomplete-item', itemActiveClass(item)),\n onClick: () => selectItem(item),\n role: 'option',\n },\n after(labelPath).compute((lPath) =>\n lPath == null || lPath === '' ? String(item ?? '') : String(getByPath(item, lPath) ?? '')\n )\n );\n };\n\n return Div(\n { className: cx('g-ui-autocomplete', className, classFlag('g-ui-autocomplete-disabled', disabled)) },\n TextInput({\n ...inputProps,\n className: cx('g-ui-autocomplete-input-wrapper', inputProps.className),\n inputClassName: cx('g-ui-autocomplete-input', inputClassName),\n }),\n when(opened, () =>\n Div(\n {\n className: 'g-ui-autocomplete-dropdown',\n role: 'listbox',\n },\n ScrollArea(\n { className: 'g-ui-autocomplete-list', style: { maxHeight: '240px' } },\n list(filteredItems, (item) => renderOption(item))\n )\n )\n )\n );\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function ScrollArea(...args) {\n const { props, children } = splitPropsChildren(args, { size: 'md' });\n const { size, className, ...rest } = props;\n return Div(\n { ...rest, className: cx('g-ui-scroll-area', [size, (value) => `g-ui-scroll-area-${value}`], className) },\n children\n );\n}\n", "import { Autocomplete } from './Autocomplete.js';\n\nexport function SelectSearch(...args) {\n return Autocomplete(...args);\n}\n", "import { Div, Span, state, after } from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveValue } from '../utils.js';\nimport { DateInput } from './DateInput.js';\n\nfunction resolveDate(v) {\n const resolved = resolveValue(v);\n if (resolved instanceof Date) return resolved;\n if (resolved == null || resolved === '') return null;\n const d = new Date(resolved);\n return Number.isNaN(d.getTime()) ? null : d;\n}\n\nfunction toDatePair(value) {\n const raw = resolveValue(value);\n if (raw == null) return [null, null];\n const arr = Array.isArray(raw) ? raw : [raw];\n return [resolveDate(arr[0]), resolveDate(arr[1])];\n}\n\nfunction isSameDay(a, b) {\n if (!a || !b) return a === b;\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function RangePicker(...args) {\n const { props, rawProps } = splitPropsChildren(args, { size: 'md' });\n const { value, size, minDate, maxDate, className, placeholderMin, placeholderMax, ...rest } = props;\n const { onChange } = rawProps;\n\n const [initialStart, initialEnd] = toDatePair(value);\n const startState = state(initialStart);\n const endState = state(initialEnd);\n\n after(value).change((next) => {\n const [s, e] = toDatePair(next);\n if (isSameDay(s, startState.get()) && isSameDay(e, endState.get())) return;\n startState.set(s);\n endState.set(e);\n });\n\n const notify = () => {\n const s = startState.get();\n const e = endState.get();\n onChange?.([s ?? null, e ?? null]);\n };\n\n const setStart = (date) => {\n const end = endState.get();\n if (date && end && date > end) endState.set(date);\n startState.set(date);\n notify();\n };\n\n const setEnd = (date) => {\n const start = startState.get();\n if (date && start && date < start) startState.set(date);\n endState.set(date);\n notify();\n };\n\n return Div(\n { ...rest, className: cx('g-ui-range-picker', props.className ?? className) },\n DateInput({\n ...rest,\n size,\n value: startState,\n onChange: setStart,\n maxDate: endState,\n placeholder: resolveValue(placeholderMin) ?? undefined,\n }),\n Span({ className: 'g-ui-range-picker-separator' }, '\u2013'),\n DateInput({\n ...rest,\n size,\n value: endState,\n onChange: setEnd,\n minDate: startState,\n placeholder: resolveValue(placeholderMax) ?? undefined,\n })\n );\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Flex(...args) {\n const { props, children } = splitPropsChildren(args, { align: 'center', direction: 'row' });\n const { direction, wrap, align, justify, gap, className, ...rest } = props;\n return Div(\n {\n ...rest,\n className: cx(\n 'g-ui-flex',\n [direction, (value) => {\n if (value === 'column') return 'g-ui-flex-column';\n return 'g-ui-flex-row';\n }],\n [wrap, 'g-ui-flex-wrap'],\n [align, (value) => value && `g-ui-align-${value}`],\n [justify, (value) => value && `g-ui-justify-${value}`],\n [gap, (value) => value && `g-ui-gap-${value}`],\n className\n ),\n },\n children\n );\n}\n", "import { A, Div, Span, when, after, state } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, classFlag, resolveValue, toPx } from '../utils.js';\n\nexport function NavLink(...args) {\n const { props, rawProps, children } = splitPropsChildren(args, { variant: 'subtle', childrenOffset: 24 });\n const {\n label,\n description,\n leftSection,\n rightSection,\n active,\n disabled,\n variant,\n childrenOffset,\n opened,\n defaultOpened,\n className,\n padding,\n ...rest\n } = props;\n const { onClick, onChange } = rawProps;\n const hasChildren = children.length > 0;\n const openState = state(resolveValue(opened) ?? resolveValue(defaultOpened) ?? false);\n after(opened).change((next) => {\n const resolved = resolveValue(next);\n if (resolved == null) return;\n openState.set(!!resolved);\n });\n const childrenStyle = after(childrenOffset).compute((next) => ({\n paddingLeft: toPx(resolveValue(next ?? 24)) ?? '24px',\n }));\n\n const handleClick = (ev) => {\n if (resolveValue(disabled)) {\n ev?.preventDefault?.();\n return;\n }\n if (hasChildren) {\n const next = !openState.get();\n openState.set(next);\n onChange?.(next);\n }\n onClick?.(ev);\n };\n\n return Div(\n { className: cx('g-ui-navlink-root', className) },\n A(\n {\n ...rest,\n className: cx(\n 'g-ui-navlink',\n classVar('g-ui-navlink-variant-', variant, 'subtle'),\n classFlag('g-ui-navlink-active', active),\n classFlag('g-ui-navlink-disabled', disabled),\n classVar('g-ui-navlink-padding-', padding, 'md')\n ),\n onClick: handleClick,\n },\n when(leftSection, () => Span({ className: 'g-ui-navlink-section g-ui-navlink-left' }, leftSection)),\n Div(\n { className: 'g-ui-navlink-body' },\n when(label, () => Div({ className: 'g-ui-navlink-label' }, label)),\n when(description, () => Div({ className: 'g-ui-navlink-description' }, description))\n ),\n when(rightSection, () => Span({ className: 'g-ui-navlink-section g-ui-navlink-right' }, rightSection))\n ),\n hasChildren\n ? when(openState, () => Div({ className: 'g-ui-navlink-children', style: childrenStyle }, children))\n : null\n );\n}\n", "import { Div, when } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar } from '../utils.js';\n\nexport function Indicator(...args) {\n const { props, children } = splitPropsChildren(args, { show: true, position: 'top-right', color: 'danger', size: 'md' });\n const { show, position, color, size, className, ...rest } = props;\n return Div(\n {\n ...rest,\n className: cx(\n 'g-ui-indicator',\n classVar('g-ui-indicator-position-', position, 'top-right'),\n classVar('g-ui-indicator-color-', color, 'danger'),\n classVar('g-ui-indicator-size-', size, 'md'),\n className\n ),\n },\n children,\n when(show, () => Div({ className: 'g-ui-indicator-badge' }))\n );\n}\n", "import { Span } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Burger(...args) {\n const { props } = splitPropsChildren(args);\n const { opened, className, ...rest } = props;\n return Span(\n { ...rest, className: cx('g-ui-burger', [opened, 'g-ui-burger-open'], className) },\n Span(''),\n Span(''),\n Span('')\n );\n}\n", "import { Div, when } from '@granularjs/core';\nimport { splitPropsChildren } from '../utils.js';\nimport { Loading } from './Loading.js';\n\nexport function LoadingOverlay(...args) {\n const { props } = splitPropsChildren(args);\n const { visible, ...rest } = props;\n return when(visible, () => Div({ ...rest, className: 'g-ui-loading-overlay' }, Loading({})));\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Grid(...args) {\n const { props, children } = splitPropsChildren(args, { gap: 'md' });\n const { className, gap, ...rest } = props;\n return Div({ ...rest, className: cx('g-ui-grid-system', [gap, (value) => `g-ui-gap-${value}`], className) }, children);\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function Col(...args) {\n const { props, children } = splitPropsChildren(args, { span: 12 });\n const { span, className, ...rest } = props;\n return Div({ ...rest, className: cx([span, (value) => `g-ui-col-span-${value}`], className) }, children);\n}\n", "import { Div, Input, after, state, when, list } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, resolveValue } from '../utils.js';\n\nexport function PinInput(...args) {\n const { props, rawProps } = splitPropsChildren(args, {\n length: 4,\n size: 'md',\n type: 'alphanumeric',\n mask: false,\n placeholder: '\u25CB',\n disabled: false,\n error: false,\n oneTimeCode: false,\n });\n\n const {\n length,\n value,\n size,\n type,\n mask,\n placeholder,\n disabled,\n error,\n oneTimeCode,\n className,\n } = props;\n\n const { onChange, onComplete } = rawProps;\n\n const currentLength = state(resolveValue(length) ?? 4);\n const getLength = () => currentLength.get();\n\n after(length).change((next) => {\n const newLen = resolveValue(next) ?? 4;\n const oldLen = currentLength.get();\n if (newLen === oldLen) return;\n currentLength.set(newLen);\n const currentValues = currentState.get();\n const currentNodes = inputNodes.get();\n currentState.set(Array.from({ length: newLen }, (_, i) => currentValues[i] ?? ''));\n inputNodes.set(Array.from({ length: newLen }, (_, i) => currentNodes[i] ?? null));\n });\n\n const inputNodes = state(Array.from({ length: getLength() }, () => null));\n\n const currentState = state(\n Array.from({ length: getLength() }, (_, i) => {\n const initial = resolveValue(value);\n if (typeof initial === 'string') return initial[i] ?? '';\n if (Array.isArray(initial)) return initial[i] ?? '';\n return '';\n })\n );\n\n after(value).change((next) => {\n if (next == null) return;\n const len = getLength();\n if (typeof next === 'string') {\n currentState.set(Array.from({ length: len }, (_, i) => next[i] ?? ''));\n } else if (Array.isArray(next)) {\n currentState.set(Array.from({ length: len }, (_, i) => next[i] ?? ''));\n }\n });\n\n const getValueString = () => currentState.get().join('');\n\n const setValue = (next) => {\n currentState.set(next);\n const str = next.join('');\n onChange?.(str);\n if (next.every((v) => v !== '') && next.length === getLength()) {\n onComplete?.(str);\n }\n };\n\n const focusInput = (index) => {\n const len = getLength();\n const nodes = inputNodes.get();\n if (index >= 0 && index < len && nodes[index]) {\n nodes[index].focus();\n nodes[index].select();\n }\n };\n\n const getTypeRegex = () => {\n const t = resolveValue(type);\n if (t === 'number') return /^[0-9]$/;\n if (t instanceof RegExp) return t;\n return /^[a-zA-Z0-9]$/;\n };\n\n const handleInput = (idx, ev) => {\n const inputValue = ev.target.value;\n const regex = getTypeRegex();\n\n if (inputValue.length > 1) {\n handlePaste(idx, inputValue);\n return;\n }\n\n if (inputValue && !regex.test(inputValue)) {\n ev.target.value = currentState.get()[idx] ?? '';\n return;\n }\n\n const current = currentState.get().slice();\n current[idx] = inputValue;\n setValue(current);\n\n if (inputValue && idx < getLength() - 1) {\n focusInput(idx + 1);\n }\n };\n\n const handlePaste = (startIdx, pastedValue) => {\n const regex = getTypeRegex();\n const chars = pastedValue.split('').filter((c) => regex.test(c));\n const current = currentState.get().slice();\n const len = getLength();\n\n chars.forEach((char, i) => {\n const targetIdx = startIdx + i;\n if (targetIdx < len) {\n current[targetIdx] = char;\n }\n });\n\n setValue(current);\n\n const nextEmpty = current.findIndex((v, i) => i >= startIdx && v === '');\n if (nextEmpty >= 0) {\n focusInput(nextEmpty);\n } else {\n focusInput(Math.min(startIdx + chars.length, len - 1));\n }\n };\n\n const handleKeyDown = (idx, ev) => {\n if (ev.key === 'Backspace') {\n const current = currentState.get().slice();\n if (current[idx] === '' && idx > 0) {\n ev.preventDefault();\n current[idx - 1] = '';\n setValue(current);\n focusInput(idx - 1);\n } else if (current[idx] !== '') {\n current[idx] = '';\n setValue(current);\n }\n } else if (ev.key === 'ArrowLeft' && idx > 0) {\n ev.preventDefault();\n focusInput(idx - 1);\n } else if (ev.key === 'ArrowRight' && idx < getLength() - 1) {\n ev.preventDefault();\n focusInput(idx + 1);\n }\n };\n\n const handleFocus = (idx, ev) => {\n ev.target.select();\n };\n\n const handleContainerClick = () => {\n const current = currentState.get();\n const firstEmpty = current.findIndex((v) => v === '');\n if (firstEmpty >= 0) {\n focusInput(firstEmpty);\n } else {\n focusInput(current.length - 1);\n }\n };\n\n const inputType = after(mask).compute((m) => (resolveValue(m) ? 'password' : 'text'));\n const inputMode = after(type).compute((t) => (resolveValue(t) === 'number' ? 'numeric' : 'text'));\n const autoComplete = after(oneTimeCode).compute((o) => (resolveValue(o) ? 'one-time-code' : 'off'));\n const isDisabled = after(disabled).compute((d) => !!resolveValue(d));\n const hasError = after(error).compute((e) => !!resolveValue(e));\n\n const indices = after(currentLength).compute((len) =>\n Array.from({ length: len }, (_, i) => i)\n );\n\n const renderInput = (idx) =>\n Input({\n className: cx(\n 'g-ui-pin-input-field',\n when(hasError, () => 'g-ui-pin-input-error')\n ),\n type: inputType,\n inputMode,\n autocomplete: autoComplete,\n maxLength: 2,\n placeholder: when(isDisabled, () => '', () => placeholder),\n disabled: isDisabled,\n value: after(currentState, idx).compute(([values, i]) => values[i] ?? ''),\n node: inputNodes[idx.get()],\n onInput: (ev) => handleInput(idx.get(), ev),\n onChange: (ev) => handleInput(idx.get(), ev),\n onKeyDown: (ev) => handleKeyDown(idx.get(), ev),\n onFocus: (ev) => handleFocus(idx.get(), ev),\n });\n\n return Div(\n {\n className: cx(\n 'g-ui-pin-input',\n classVar('g-ui-input-size-', size, 'md'),\n className\n ),\n onClick: handleContainerClick,\n },\n Div(\n { className: 'g-ui-pin-input-wrapper' },\n list(indices, renderInput)\n )\n );\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function CheckboxGroup(...args) {\n const { props, children } = splitPropsChildren(args);\n const { className, ...rest } = props;\n return Div({ ...rest, className: cx('g-ui-checkbox-group', className) }, children);\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function AvatarGroup(...args) {\n const { props, children } = splitPropsChildren(args);\n const { className, ...rest } = props;\n return Div({ ...rest, className: cx('g-ui-avatar-group', className) }, children);\n}\n", "import { Div } from '@granularjs/core';\nimport { cx, splitPropsChildren } from '../utils.js';\n\nexport function BadgeGroup(...args) {\n const { props, children } = splitPropsChildren(args);\n const { className, ...rest } = props;\n return Div({ ...rest, className: cx('g-ui-badge-group', className) }, children);\n}\n", "import { Div, Span, after, context } from '@granularjs/core';\nimport { splitPropsChildren, cx, classFlag } from '../utils.js';\n\nconst sizeContext = context([]);\nconst tableContext = context({ sort: null, onSort: null });\n\nexport function GridTable(...args) {\n const { props, rawProps, children } = splitPropsChildren(args, { sizes: [], sort: null, stickyHeader: false });\n const { className, sizes: sizesProp, sort: sortProp, stickyHeader: stickyProp, ...rest } = props;\n const { onSort } = rawProps;\n\n const sizes = sizeContext.scope(sizesProp.get());\n after(sizesProp).change(v => sizes.set(v));\n\n const table = tableContext.scope({ sort: sortProp.get(), onSort: onSort || null });\n after(sortProp).change(v => table.set().sort = v);\n\n return sizes.serve(table.serve(Div({\n className: cx(\n 'g-ui-grid-table',\n classFlag('g-ui-grid-table-sticky', stickyProp),\n className\n ),\n style: {\n gridTemplateColumns: after(sizes).compute(s =>\n Array.isArray(s) ? s.join(' ') : ''\n ),\n },\n ...rest,\n }, children)));\n}\n\nGridTable.GridRow = (...args) => {\n const { props, children } = splitPropsChildren(args, {});\n const { className, header, ...rest } = props;\n\n return Div(\n {\n className: cx(\n 'g-ui-grid-table-row',\n classFlag('g-ui-grid-table-row-header', header),\n className\n ),\n ...rest,\n },\n ...children\n );\n};\n\nGridTable.GridCell = function (...args) {\n const { props, rawProps, children } = splitPropsChildren(args, {});\n const { className, sort: _sort, ...rest } = props;\n const sortKey = rawProps.sort;\n\n if (sortKey) {\n const table = tableContext.state();\n\n const direction = after(table.sort).compute(s =>\n s?.key === sortKey ? s.direction : null\n );\n\n const handleSort = () => {\n const current = table.get().sort;\n let next;\n if (current?.key === sortKey) {\n next = current.direction === 'asc'\n ? { key: sortKey, direction: 'desc' }\n : null;\n } else {\n next = { key: sortKey, direction: 'asc' };\n }\n table.set().sort = next;\n const { onSort } = table.get();\n if (onSort) onSort(next);\n };\n\n return Div(\n {\n className: cx('g-ui-grid-table-cell', 'g-ui-grid-table-cell-sortable', className),\n onClick: handleSort,\n ...rest,\n },\n children,\n Span({ className: 'g-ui-grid-table-sort-icon' },\n after(direction).compute(d =>\n d === 'asc' ? ' \u2191' : d === 'desc' ? ' \u2193' : ''\n )\n )\n );\n }\n\n return Div(\n {\n className: cx('g-ui-grid-table-cell', className),\n ...rest,\n },\n children\n );\n};", "import { Button, Div, Span, when } from '@granularjs/core';\nimport { cx, splitPropsChildren, classVar, classFlag } from '../utils.js';\n\nexport function BottomBar(...args) {\n const { props, children } = splitPropsChildren(args, { grow: true });\n const { grow, className, ...rest } = props;\n\n return Div(\n {\n ...rest,\n className: cx(\n 'g-ui-bottombar',\n classFlag('g-ui-bottombar-grow', grow),\n className\n ),\n },\n children\n );\n}\n\nBottomBar.Action = function BottomBarAction(...args) {\n const { props, rawProps, children } = splitPropsChildren(args, { variant: 'subtle' });\n const { icon, label, active, disabled, variant, className, ...rest } = props;\n const { onClick } = rawProps;\n\n return Button(\n {\n ...rest,\n className: cx(\n 'g-ui-bottombar-action',\n classVar('g-ui-bottombar-action-variant-', variant, 'subtle'),\n classFlag('g-ui-bottombar-action-active', active),\n classFlag('g-ui-bottombar-action-disabled', disabled),\n className\n ),\n onClick,\n disabled,\n },\n when(icon, () => Span({ className: 'g-ui-bottombar-action-icon' }, icon)),\n when(label, () => Span({ className: 'g-ui-bottombar-action-label' }, label)),\n children\n );\n};\n", "import {\n Div,\n Button,\n state,\n after,\n when,\n portal,\n Input,\n Label,\n Span,\n} from '@granularjs/core';\nimport { cx, splitPropsChildren, resolveValue, classVar } from '../utils.js';\nimport { Modal } from './Modal.js';\nimport { ActionIcon } from './ActionIcon.js';\nimport { Icon } from './Icon.js';\nimport { TextInput } from './TextInput.js';\nimport { Textarea } from './Textarea.js';\nimport { Checkbox } from './Checkbox.js';\nimport {\n forwardSvg,\n backwardSvg,\n closeSvg,\n plusSvg,\n editSvg,\n deleteSvg,\n calendarTodaySvg,\n} from '../theme/icons.js';\n\nconst WEEKDAY_LABELS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nconst VIEW_OPTIONS = [\n { value: 'day', label: 'Day' },\n { value: 'week', label: 'Week' },\n { value: 'month', label: 'Month' },\n];\n\nfunction toDate(v) {\n if (v instanceof Date) return v;\n if (v == null) return null;\n const d = new Date(v);\n return Number.isNaN(d.getTime()) ? null : d;\n}\n\nfunction normalizeEvent(ev) {\n const start = toDate(ev.start);\n const end = toDate(ev.end);\n if (!start || !end) return null;\n return {\n ...ev,\n id: ev.id ?? `${start.getTime()}-${ev.title ?? 'event'}`,\n title: ev.title ?? '',\n start,\n end,\n allDay: !!ev.allDay,\n description: ev.description ?? '',\n location: ev.location ?? '',\n attendees: Array.isArray(ev.attendees) ? ev.attendees : [],\n color: ev.color ?? null,\n };\n}\n\nfunction getEventsInRange(events, rangeStart, rangeEnd) {\n const start = toDate(rangeStart).getTime();\n const end = toDate(rangeEnd).getTime();\n return events\n .map(normalizeEvent)\n .filter(Boolean)\n .filter((ev) => ev.end.getTime() > start && ev.start.getTime() < end);\n}\n\nfunction getEventsForDay(events, day) {\n const d = new Date(day);\n d.setHours(0, 0, 0, 0);\n const start = d.getTime();\n d.setHours(23, 59, 59, 999);\n const end = d.getTime();\n return getEventsInRange(events, start, end);\n}\n\nfunction weekStart(date, firstDayOfWeek) {\n const d = new Date(date);\n const day = d.getDay();\n const diff = (day - firstDayOfWeek + 7) % 7;\n d.setDate(d.getDate() - diff);\n d.setHours(0, 0, 0, 0);\n return d;\n}\n\nfunction formatTime(date, locale = 'default') {\n return date.toLocaleTimeString(locale, { hour: 'numeric', minute: '2-digit', hour12: true });\n}\n\nfunction formatDate(date, locale = 'default') {\n return date.toLocaleDateString(locale, { weekday: 'short', month: 'short', day: 'numeric' });\n}\n\nfunction formatMonthYear(date, locale = 'default') {\n return date.toLocaleDateString(locale, { month: 'long', year: 'numeric' });\n}\n\nfunction formatWeekRange(weekStartDate, locale = 'default') {\n const end = new Date(weekStartDate);\n end.setDate(end.getDate() + 6);\n return `${weekStartDate.toLocaleDateString(locale, { month: 'short', day: 'numeric' })} \u2013 ${end.toLocaleDateString(locale, { month: 'short', day: 'numeric', year: 'numeric' })}`;\n}\n\nfunction timeToPct(date, dayStart, dayEnd) {\n const d = new Date(date);\n const start = new Date(d);\n start.setHours(dayStart, 0, 0, 0);\n const end = new Date(d);\n end.setHours(dayEnd, 0, 0, 0);\n const total = (dayEnd - dayStart) * 60;\n const mins = (d.getTime() - start.getTime()) / 60000;\n return Math.max(0, Math.min(1, mins / total)) * 100;\n}\n\nfunction durationPct(start, end, dayStart, dayEnd) {\n const dayStartMs = new Date(start).setHours(dayStart, 0, 0, 0);\n const dayEndMs = new Date(start).setHours(dayEnd, 0, 0, 0);\n const total = (dayEnd - dayStart) * 60;\n const s = Math.max(start.getTime(), dayStartMs);\n const e = Math.min(end.getTime(), dayEndMs);\n const mins = (e - s) / 60000;\n const top = ((s - dayStartMs) / 60000 / total) * 100;\n const height = (mins / total) * 100;\n return { top, height };\n}\n\nexport function EventCalendar(...args) {\n const { props, rawProps } = splitPropsChildren(args, {\n defaultView: 'month',\n firstDayOfWeek: 0,\n locale: 'default',\n hourSlotDuration: 30,\n minTime: 6,\n maxTime: 22,\n eventCreationColorOptions: [],\n });\n const {\n events: eventsProp = [],\n defaultView,\n firstDayOfWeek,\n locale,\n hourSlotDuration,\n minTime,\n maxTime,\n eventCreationColorOptions,\n className,\n ...rest\n } = props;\n const {\n onCreateEventRequest,\n onViewEventRequest,\n onUpdateEventRequest,\n onRemoveEventRequest,\n eventCreationEmailLookup,\n eventCreationLocationsCallback,\n eventCreationCalendarsCallback,\n onSlotClick,\n onDateRangeChange,\n } = rawProps;\n\n const viewMode = state(resolveValue(defaultView) ?? 'month');\n const currentDate = state(new Date());\n const modalState = state(null);\n const selectedEvent = state(null);\n const createDraft = state({\n title: '',\n start: null,\n end: null,\n allDay: false,\n description: '',\n location: '',\n attendees: [],\n color: null,\n });\n\n const eventsList = after(eventsProp).compute((v) => (Array.isArray(v) ? v : []));\n const viewDate = currentDate.get();\n const weekStartDate = weekStart(viewDate, resolveValue(firstDayOfWeek) ?? 0);\n const dayStart = resolveValue(minTime) ?? 6;\n const dayEnd = resolveValue(maxTime) ?? 22;\n const slotDuration = resolveValue(hourSlotDuration) ?? 30;\n\n const goPrev = () => {\n const d = new Date(currentDate.get());\n if (viewMode.get() === 'month') d.setMonth(d.getMonth() - 1);\n else if (viewMode.get() === 'week') d.setDate(d.getDate() - 7);\n else d.setDate(d.getDate() - 1);\n currentDate.set(d);\n onDateRangeChange?.({ start: d, end: d, view: viewMode.get() });\n };\n\n const goNext = () => {\n const d = new Date(currentDate.get());\n if (viewMode.get() === 'month') d.setMonth(d.getMonth() + 1);\n else if (viewMode.get() === 'week') d.setDate(d.getDate() + 7);\n else d.setDate(d.getDate() + 1);\n currentDate.set(d);\n onDateRangeChange?.({ start: d, end: d, view: viewMode.get() });\n };\n\n const goToday = () => {\n const d = new Date();\n currentDate.set(d);\n onDateRangeChange?.({ start: d, end: d, view: viewMode.get() });\n };\n\n const openCreateModal = (start, end, allDay = false) => {\n const s = start ? new Date(start) : new Date(currentDate.get());\n const e = end ? new Date(end) : new Date(s.getTime() + 60 * 60 * 1000);\n if (allDay) {\n s.setHours(0, 0, 0, 0);\n e.setHours(23, 59, 59, 999);\n }\n createDraft.set({\n title: '',\n start: s,\n end: e,\n allDay,\n description: '',\n location: '',\n attendees: [],\n color: null,\n });\n modalState.set('create');\n };\n\n const openViewModal = (event) => {\n selectedEvent.set(normalizeEvent(event));\n modalState.set('view');\n onViewEventRequest?.(event);\n };\n\n const openEditModal = () => {\n const ev = selectedEvent.get();\n if (!ev) return;\n createDraft.set({\n title: ev.title,\n start: new Date(ev.start),\n end: new Date(ev.end),\n allDay: ev.allDay,\n description: ev.description ?? '',\n location: ev.location ?? '',\n attendees: [...(ev.attendees || [])],\n color: ev.color ?? null,\n });\n modalState.set('edit');\n };\n\n const closeModal = () => {\n modalState.set(null);\n selectedEvent.set(null);\n };\n\n const handleSlotClick = (date, hour, allDay) => {\n if (onSlotClick) {\n onSlotClick({ date, hour, allDay });\n return;\n }\n const start = new Date(date);\n if (allDay) {\n start.setHours(0, 0, 0, 0);\n const end = new Date(start);\n end.setHours(23, 59, 59, 999);\n openCreateModal(start, end, true);\n } else {\n start.setHours(hour, 0, 0, 0);\n const end = new Date(start.getTime() + slotDuration * 60 * 1000);\n openCreateModal(start, end, false);\n }\n };\n\n const handleCreateSubmit = () => {\n const draft = createDraft.get();\n if (!draft.start || !draft.end) return;\n onCreateEventRequest?.(\n {\n title: draft.title,\n start: draft.start,\n end: draft.end,\n allDay: draft.allDay,\n description: draft.description,\n location: draft.location,\n attendees: draft.attendees,\n color: draft.color,\n },\n () => {\n closeModal();\n }\n );\n };\n\n const handleUpdateSubmit = () => {\n const ev = selectedEvent.get();\n const draft = createDraft.get();\n if (!ev || !draft.start || !draft.end) return;\n onUpdateEventRequest?.(\n ev,\n {\n title: draft.title,\n start: draft.start,\n end: draft.end,\n allDay: draft.allDay,\n description: draft.description,\n location: draft.location,\n attendees: draft.attendees,\n color: draft.color,\n },\n () => closeModal()\n );\n };\n\n const handleRemoveRequest = () => {\n const ev = selectedEvent.get();\n if (!ev) return;\n onRemoveEventRequest?.(ev, () => closeModal());\n };\n\n const titleLabel = after(viewMode, currentDate).compute(([view, date]) => {\n if (view === 'month') return formatMonthYear(date, resolveValue(locale));\n if (view === 'week') return formatWeekRange(weekStart(date, resolveValue(firstDayOfWeek) ?? 0), resolveValue(locale));\n return formatDate(date, resolveValue(locale));\n });\n\n const header = Div(\n { className: 'g-ui-event-calendar-header' },\n Div(\n { className: 'g-ui-event-calendar-nav-group' },\n ActionIcon(\n { size: 'sm', variant: 'subtle', onClick: goPrev, className: 'g-ui-event-calendar-nav' },\n Icon({ size: 'sm', innerHTML: backwardSvg })\n ),\n ActionIcon(\n { size: 'sm', variant: 'subtle', onClick: goNext, className: 'g-ui-event-calendar-nav' },\n Icon({ size: 'sm', innerHTML: forwardSvg })\n ),\n Button(\n { type: 'button', variant: 'subtle', size: 'sm', className: 'g-ui-event-calendar-today', onClick: goToday },\n Icon({ size: 'sm', className: 'g-ui-event-calendar-today-icon', innerHTML: calendarTodaySvg }),\n 'Today'\n )\n ),\n Div({ className: 'g-ui-event-calendar-title' }, titleLabel),\n Div(\n { className: 'g-ui-event-calendar-actions' },\n VIEW_OPTIONS.map((opt) =>\n Div(\n {\n className: cx(\n 'g-ui-event-calendar-view-option',\n after(viewMode).compute((v) => (v === opt.value ? 'g-ui-event-calendar-view-option-active' : ''))\n ),\n onClick: () => {\n viewMode.set(opt.value);\n onDateRangeChange?.({ start: currentDate.get(), end: currentDate.get(), view: opt.value });\n },\n },\n opt.label\n )\n ),\n Button(\n {\n type: 'button',\n variant: 'filled',\n size: 'sm',\n className: 'g-ui-event-calendar-create-btn',\n onClick: () => openCreateModal(currentDate.get(), null, false),\n },\n Icon({ size: 'sm', innerHTML: plusSvg }),\n 'Create'\n )\n )\n );\n\n const monthGrid = after(currentDate, eventsList, firstDayOfWeek).compute(([date, events, firstDay]) => {\n const year = date.getFullYear();\n const month = date.getMonth();\n const first = new Date(year, month, 1);\n const startDow = (first.getDay() - (firstDay ?? 0) + 7) % 7;\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const prevMonthDays = new Date(year, month, 0).getDate();\n const rows = [];\n let dayCount = 1;\n let nextMonthDay = 1;\n const totalCells = Math.ceil((startDow + daysInMonth) / 7) * 7;\n const dayCells = [];\n for (let i = 0; i < totalCells; i += 1) {\n let day;\n let isCurrentMonth;\n let dateObj;\n if (i < startDow) {\n day = prevMonthDays - startDow + i + 1;\n dateObj = new Date(year, month - 1, day);\n isCurrentMonth = false;\n } else if (dayCount <= daysInMonth) {\n day = dayCount;\n dateObj = new Date(year, month, day);\n isCurrentMonth = true;\n dayCount += 1;\n } else {\n day = nextMonthDay;\n dateObj = new Date(year, month + 1, day);\n isCurrentMonth = false;\n nextMonthDay += 1;\n }\n const dayEvents = getEventsForDay(events, dateObj);\n const isToday =\n dateObj.getDate() === new Date().getDate() &&\n dateObj.getMonth() === new Date().getMonth() &&\n dateObj.getFullYear() === new Date().getFullYear();\n dayCells.push(\n Div(\n {\n key: dateObj.getTime(),\n className: cx(\n 'g-ui-event-calendar-month-cell',\n !isCurrentMonth && 'g-ui-event-calendar-month-cell-outside',\n isToday && 'g-ui-event-calendar-month-cell-today'\n ),\n },\n Div(\n {\n className: 'g-ui-event-calendar-month-cell-header',\n onClick: () => handleSlotClick(dateObj, 0, true),\n },\n Span({ className: 'g-ui-event-calendar-month-cell-day' }, dateObj.getDate())\n ),\n Div(\n { className: 'g-ui-event-calendar-month-cell-events' },\n dayEvents.slice(0, 3).map((ev) =>\n Div(\n {\n key: ev.id,\n className: 'g-ui-event-calendar-month-event',\n style: ev.color ? { borderLeftColor: ev.color, backgroundColor: `${ev.color}20` } : {},\n onClick: (e) => {\n e.stopPropagation();\n openViewModal(ev);\n },\n },\n ev.title || '(No title)'\n )\n ),\n when(dayEvents.length > 3, () =>\n Div(\n {\n className: 'g-ui-event-calendar-month-more',\n onClick: (e) => {\n e.stopPropagation();\n openViewModal(dayEvents[3]);\n },\n },\n `+${dayEvents.length - 3} more`\n )\n )\n )\n )\n );\n }\n return dayCells;\n });\n\n const monthView = Div(\n { className: 'g-ui-event-calendar-month' },\n Div(\n { className: 'g-ui-event-calendar-weekdays' },\n WEEKDAY_LABELS.map((label) => Div({ key: label, className: 'g-ui-event-calendar-weekday' }, label))\n ),\n Div({ className: 'g-ui-event-calendar-month-grid' }, monthGrid)\n );\n\n const timeSlots = [];\n for (let h = dayStart; h < dayEnd; h += 1) {\n for (let s = 0; s < 60; s += slotDuration) {\n timeSlots.push(h + s / 60);\n }\n }\n\n const weekDays = after(currentDate, firstDayOfWeek).compute(([date, firstDay]) => {\n const start = weekStart(date, firstDay ?? 0);\n const days = [];\n for (let i = 0; i < 7; i += 1) {\n const d = new Date(start);\n d.setDate(d.getDate() + i);\n days.push(d);\n }\n return days;\n });\n\n const weekView = Div(\n { className: 'g-ui-event-calendar-week' },\n after(weekDays).compute((days) =>\n Div(\n { className: 'g-ui-event-calendar-week-days' },\n Div({ className: 'g-ui-event-calendar-week-time-col' }, ''),\n (days || []).map((d) =>\n Div(\n { key: d.getTime(), className: 'g-ui-event-calendar-week-day-col' },\n Div({ className: 'g-ui-event-calendar-week-day-header' }, formatDate(d, resolveValue(locale)))\n )\n )\n )\n ),\n Div({ className: 'g-ui-event-calendar-week-body' },\n Div(\n { className: 'g-ui-event-calendar-week-time-col' },\n timeSlots.map((h) => {\n const hour = Math.floor(h);\n const min = (h - hour) * 60;\n const label = `${hour <= 12 ? hour : hour - 12}:${min === 0 ? '00' : min} ${hour < 12 ? 'AM' : 'PM'}`;\n return Div({ key: h, className: 'g-ui-event-calendar-week-slot-label' }, label);\n })\n ),\n after(weekDays, eventsList).compute(([days, events]) => {\n if (!days || !days.length) return null;\n const rangeStart = days[0];\n const rangeEnd = new Date(days[6]);\n rangeEnd.setHours(23, 59, 59, 999);\n const inRange = getEventsInRange(events, rangeStart, rangeEnd);\n return Div(\n { className: 'g-ui-event-calendar-week-grid-cols' },\n days.map((day) =>\n Div(\n { key: day.getTime(), className: 'g-ui-event-calendar-week-day-col g-ui-event-calendar-week-day-col-body' },\n timeSlots.map((h) =>\n Div({\n key: h,\n className: 'g-ui-event-calendar-week-slot',\n onClick: () => handleSlotClick(day, h, false),\n })\n ),\n inRange\n .filter(\n (ev) =>\n !ev.allDay &&\n ev.start.getDate() === day.getDate() &&\n ev.start.getMonth() === day.getMonth() &&\n ev.start.getFullYear() === day.getFullYear()\n )\n .map((ev) => {\n const { top, height } = durationPct(ev.start, ev.end, dayStart, dayEnd);\n return Div(\n {\n key: ev.id,\n className: 'g-ui-event-calendar-week-event',\n style: {\n top: `${top}%`,\n height: `${height}%`,\n borderLeftColor: ev.color || 'var(--g-ui-primary)',\n },\n onClick: (e) => {\n e.stopPropagation();\n openViewModal(ev);\n },\n },\n Div({ className: 'g-ui-event-calendar-week-event-title' }, ev.title || '(No title)'),\n when(!ev.allDay, () =>\n Span({ className: 'g-ui-event-calendar-week-event-time' }, `${formatTime(ev.start, resolveValue(locale))} \u2013 ${formatTime(ev.end, resolveValue(locale))}`)\n )\n );\n })\n )\n )\n );\n })\n )\n );\n\n const dayView = Div(\n { className: 'g-ui-event-calendar-day' },\n Div(\n { className: 'g-ui-event-calendar-day-body' },\n Div(\n { className: 'g-ui-event-calendar-day-time-col' },\n timeSlots.map((h) => {\n const hour = Math.floor(h);\n const min = (h - hour) * 60;\n const label = `${hour <= 12 ? hour : hour - 12}:${min === 0 ? '00' : min} ${hour < 12 ? 'AM' : 'PM'}`;\n return Div({ key: h, className: 'g-ui-event-calendar-day-slot-label' }, label);\n })\n ),\n Div(\n { className: 'g-ui-event-calendar-day-slots' },\n timeSlots.map((h) =>\n Div({\n key: h,\n className: 'g-ui-event-calendar-day-slot',\n onClick: () => handleSlotClick(currentDate.get(), h, false),\n })\n ),\n after(eventsList, currentDate).compute(([events, day]) => {\n if (!day) return [];\n const dayEvs = getEventsForDay(events, day).filter((e) => !e.allDay);\n return dayEvs.map((ev) => {\n const { top, height } = durationPct(ev.start, ev.end, dayStart, dayEnd);\n return Div(\n {\n key: ev.id,\n className: 'g-ui-event-calendar-day-event',\n style: {\n top: `${top}%`,\n height: `${height}%`,\n borderLeftColor: ev.color || 'var(--g-ui-primary)',\n },\n onClick: (e) => {\n e.stopPropagation();\n openViewModal(ev);\n },\n },\n Div({ className: 'g-ui-event-calendar-day-event-title' }, ev.title || '(No title)'),\n Span({ className: 'g-ui-event-calendar-day-event-time' }, `${formatTime(ev.start, resolveValue(locale))} \u2013 ${formatTime(ev.end, resolveValue(locale))}`)\n );\n });\n })\n )\n )\n );\n\n const createEditForm = (isEdit) => {\n const draft = createDraft.get();\n const today = new Date();\n const defaultStart = draft.start || today;\n const defaultEnd = draft.end || new Date(today.getTime() + 60 * 60 * 1000);\n const titleState = state(draft.title);\n const startDateState = state(defaultStart.toISOString().slice(0, 10));\n const startTimeState = state(\n !draft.allDay && defaultStart ? defaultStart.toTimeString().slice(0, 5) : '09:00'\n );\n const endDateState = state(defaultEnd.toISOString().slice(0, 10));\n const endTimeState = state(\n !draft.allDay && defaultEnd ? defaultEnd.toTimeString().slice(0, 5) : '10:00'\n );\n const allDayState = state(draft.allDay);\n const descState = state(draft.description);\n const locationState = state(draft.location);\n const attendeesState = state(draft.attendees || []);\n const emailLookupQuery = state('');\n const emailLookupResults = state([]);\n const locationOptions = state([]);\n const locationQuery = state('');\n const colorOptions = Array.isArray(eventCreationColorOptions) ? eventCreationColorOptions : [];\n const colorState = state(draft.color);\n\n const applyDraft = () => {\n const start = new Date(startDateState.get() + 'T' + (allDayState.get() ? '00:00:00' : startTimeState.get() + ':00'));\n const end = new Date(endDateState.get() + 'T' + (allDayState.get() ? '23:59:59' : endTimeState.get() + ':00'));\n createDraft.set({\n title: titleState.get(),\n start,\n end,\n allDay: allDayState.get(),\n description: descState.get(),\n location: locationState.get(),\n attendees: attendeesState.get(),\n color: colorState.get(),\n });\n };\n\n const doEmailLookup = (query) => {\n emailLookupQuery.set(query);\n if (!eventCreationEmailLookup || !query.trim()) {\n emailLookupResults.set([]);\n return;\n }\n Promise.resolve(eventCreationEmailLookup(query.trim()))\n .then((list) => emailLookupResults.set(Array.isArray(list) ? list : []))\n .catch(() => emailLookupResults.set([]));\n };\n\n const addAttendee = (item) => {\n const current = attendeesState.get();\n if (current.some((a) => (a.email || a.id) === (item.email || item.id))) return;\n attendeesState.set([...current, { id: item.id, email: item.email ?? item.label, label: item.label }]);\n emailLookupQuery.set('');\n emailLookupResults.set([]);\n };\n\n const removeAttendee = (index) => {\n const next = [...attendeesState.get()];\n next.splice(index, 1);\n attendeesState.set(next);\n };\n\n const loadLocations = () => {\n if (!eventCreationLocationsCallback) return;\n Promise.resolve(eventCreationLocationsCallback(locationQuery.get()))\n .then((list) => locationOptions.set(Array.isArray(list) ? list : []))\n .catch(() => locationOptions.set([]));\n };\n\n return Div(\n { className: 'g-ui-event-calendar-form' },\n Div(\n { className: 'g-ui-event-calendar-form-row' },\n TextInput({\n label: 'Title',\n placeholder: 'Event title',\n value: titleState,\n onInput: (ev) => titleState.set(ev?.target?.value ?? ''),\n })\n ),\n Div(\n { className: 'g-ui-event-calendar-form-row g-ui-event-calendar-form-row-inline' },\n Checkbox({\n label: 'All day',\n checked: allDayState,\n onChange: (v) => allDayState.set(v),\n })\n ),\n Div(\n { className: 'g-ui-event-calendar-form-row g-ui-event-calendar-form-row-inline' },\n Div({ className: 'g-ui-event-calendar-form-field' },\n Label({ className: 'g-ui-event-calendar-form-label' }, 'Start'),\n Input({\n type: 'date',\n className: 'g-ui-input g-ui-input-size-md',\n value: startDateState,\n onInput: (ev) => startDateState.set(ev?.target?.value ?? ''),\n }),\n when(!allDayState, () =>\n Input({\n type: 'time',\n className: 'g-ui-input g-ui-input-size-md',\n value: startTimeState,\n onInput: (ev) => startTimeState.set(ev?.target?.value ?? ''),\n })\n )\n ),\n Div({ className: 'g-ui-event-calendar-form-field' },\n Label({ className: 'g-ui-event-calendar-form-label' }, 'End'),\n Input({\n type: 'date',\n className: 'g-ui-input g-ui-input-size-md',\n value: endDateState,\n onInput: (ev) => endDateState.set(ev?.target?.value ?? ''),\n }),\n when(!allDayState, () =>\n Input({\n type: 'time',\n className: 'g-ui-input g-ui-input-size-md',\n value: endTimeState,\n onInput: (ev) => endTimeState.set(ev?.target?.value ?? ''),\n })\n )\n )\n ),\n when(eventCreationLocationsCallback, () =>\n Div(\n { className: 'g-ui-event-calendar-form-row' },\n Label({ className: 'g-ui-event-calendar-form-label' }, 'Location'),\n TextInput({\n placeholder: 'Search or type location',\n value: locationQuery,\n onInput: (ev) => {\n locationQuery.set(ev?.target?.value ?? '');\n loadLocations();\n },\n onFocus: loadLocations,\n }),\n when(after(locationOptions).compute((o) => o && o.length > 0), () =>\n Div(\n { className: 'g-ui-event-calendar-form-suggestions' },\n locationOptions.get().map((loc) =>\n Div(\n {\n key: loc.id ?? loc.label,\n className: 'g-ui-event-calendar-form-suggestion-item',\n onClick: () => {\n locationState.set(loc.label ?? loc.id);\n locationQuery.set('');\n locationOptions.set([]);\n },\n },\n loc.label ?? loc.id\n )\n )\n )\n ),\n when(after(locationState).compute((v) => !!v), () =>\n Span({ className: 'g-ui-event-calendar-form-chip' }, locationState)\n )\n )\n ),\n when(eventCreationEmailLookup, () =>\n Div(\n { className: 'g-ui-event-calendar-form-row' },\n Label({ className: 'g-ui-event-calendar-form-label' }, 'Add guests'),\n TextInput({\n placeholder: 'Type email to search',\n value: emailLookupQuery,\n onInput: (ev) => doEmailLookup(ev?.target?.value ?? ''),\n }),\n Div(\n { className: 'g-ui-event-calendar-form-chips' },\n attendeesState.get().map((a, i) =>\n Span(\n {\n key: (a.email || a.id) + i,\n className: 'g-ui-event-calendar-form-chip g-ui-event-calendar-form-chip-removable',\n onClick: () => removeAttendee(i),\n },\n a.label || a.email || a.id,\n ' \u00D7'\n )\n )\n ),\n when(after(emailLookupResults).compute((r) => r && r.length > 0), () =>\n Div(\n { className: 'g-ui-event-calendar-form-suggestions' },\n emailLookupResults.get().map((item) =>\n Div(\n {\n key: item.id ?? item.email,\n className: 'g-ui-event-calendar-form-suggestion-item',\n onClick: () => addAttendee(item),\n },\n item.label ?? item.email ?? item.id\n )\n )\n )\n )\n )\n ),\n Div(\n { className: 'g-ui-event-calendar-form-row' },\n Textarea({\n label: 'Description',\n placeholder: 'Add description',\n value: descState,\n onInput: (ev) => descState.set(ev?.target?.value ?? ''),\n })\n ),\n when(colorOptions.length > 0, () =>\n Div(\n { className: 'g-ui-event-calendar-form-row' },\n Label({ className: 'g-ui-event-calendar-form-label' }, 'Color'),\n Div(\n { className: 'g-ui-event-calendar-form-colors' },\n colorOptions.map((opt) =>\n Div(\n {\n key: opt.value ?? opt.id ?? opt,\n className: cx(\n 'g-ui-event-calendar-form-color-swatch',\n after(colorState).compute((c) => (c === (opt.value ?? opt.id ?? opt) ? 'g-ui-event-calendar-form-color-swatch-active' : ''))\n ),\n style: { backgroundColor: opt.color ?? opt.value ?? opt },\n onClick: () => colorState.set(opt.value ?? opt.id ?? opt),\n }\n )\n )\n )\n )\n ),\n Div(\n { className: 'g-ui-event-calendar-form-actions' },\n Button({ variant: 'subtle', onClick: closeModal }, 'Cancel'),\n Button(\n {\n variant: 'filled',\n onClick: () => {\n applyDraft();\n if (isEdit) handleUpdateSubmit();\n else handleCreateSubmit();\n },\n },\n isEdit ? 'Save' : 'Create'\n )\n )\n );\n };\n\n const viewModalContent = () => {\n const ev = selectedEvent.get();\n if (!ev) return null;\n return Div(\n { className: 'g-ui-event-calendar-view-modal' },\n Div({ className: 'g-ui-event-calendar-view-modal-title' }, ev.title || '(No title)'),\n Div(\n { className: 'g-ui-event-calendar-view-modal-meta' },\n ev.allDay\n ? Span({ className: 'g-ui-event-calendar-view-modal-date' }, formatDate(ev.start, resolveValue(locale)) + (ev.start.getTime() !== ev.end.getTime() ? ` \u2013 ${formatDate(ev.end, resolveValue(locale))}` : ''))\n : Span(\n { className: 'g-ui-event-calendar-view-modal-date' },\n `${formatDate(ev.start, resolveValue(locale))} \u00B7 ${formatTime(ev.start, resolveValue(locale))} \u2013 ${formatTime(ev.end, resolveValue(locale))}`\n )\n ),\n when(ev.location, () => Div({ className: 'g-ui-event-calendar-view-modal-field' }, 'Location: ', ev.location)),\n when(ev.description, () => Div({ className: 'g-ui-event-calendar-view-modal-field' }, ev.description)),\n when(ev.attendees?.length, () =>\n Div(\n { className: 'g-ui-event-calendar-view-modal-field' },\n 'Guests: ',\n ev.attendees.map((a) => a.label || a.email || a.id).join(', ')\n )\n ),\n Div(\n { className: 'g-ui-event-calendar-view-modal-actions' },\n Button({ variant: 'subtle', size: 'sm', onClick: openEditModal }, Icon({ size: 'sm', innerHTML: editSvg }), ' Edit'),\n Button(\n { variant: 'subtle', size: 'sm', onClick: handleRemoveRequest, className: 'g-ui-event-calendar-view-modal-delete' },\n Icon({ size: 'sm', innerHTML: deleteSvg }),\n ' Delete'\n ),\n Button({ variant: 'filled', size: 'sm', onClick: closeModal }, 'Close')\n )\n );\n };\n\n return Div(\n { ...rest, className: cx('g-ui-event-calendar', className) },\n header,\n when(\n viewMode,\n (v) => v === 'month',\n () => monthView\n ),\n when(\n viewMode,\n (v) => v === 'week',\n () => weekView\n ),\n when(\n viewMode,\n (v) => v === 'day',\n () => dayView\n ),\n when(\n modalState,\n (m) => m === 'create',\n () =>\n Modal(\n {\n opened: true,\n title: 'New event',\n size: 'lg',\n onClose: closeModal,\n },\n createEditForm(false)\n )\n ),\n when(\n modalState,\n (m) => m === 'view',\n () =>\n Modal(\n {\n opened: true,\n title: 'Event',\n size: 'md',\n onClose: closeModal,\n },\n viewModalContent()\n )\n ),\n when(\n modalState,\n (m) => m === 'edit',\n () =>\n Modal(\n {\n opened: true,\n title: 'Edit event',\n size: 'lg',\n onClose: closeModal,\n },\n createEditForm(true)\n )\n )\n );\n}\n", "import { state } from '@granularjs/core';\n\nexport function useDisclosure(initial = false) {\n const opened = state(!!initial);\n return [\n opened,\n {\n open: () => opened.set(true),\n close: () => opened.set(false),\n toggle: () => opened.set(!opened.get()),\n },\n ];\n}\n", "import { ensureStyles } from './theme/styles.js';\n\nensureStyles();\n\nexport { setThemeVars, setThemeMode, getThemeMode } from './theme/theme.js';\nexport { cx, classVar, classFlag, classMap, splitPropsChildren } from './utils.js';\nexport { Button } from './components/Button.js';\nexport { Text } from './components/Text.js';\nexport { Title } from './components/Title.js';\nexport { Container } from './components/Container.js';\nexport { Stack } from './components/Stack.js';\nexport { Group } from './components/Group.js';\nexport { Card } from './components/Card.js';\nexport { Badge } from './components/Badge.js';\nexport { TextInput } from './components/TextInput.js';\nexport { Textarea } from './components/Textarea.js';\nexport { NumberInput } from './components/NumberInput.js';\nexport { Modal } from './components/Modal.js';\nexport { Loading } from './components/Loading.js';\nexport { Checkbox } from './components/Checkbox.js';\nexport { Switch } from './components/Switch.js';\nexport { Select } from './components/Select.js';\nexport { Tabs } from './components/Tabs.js';\nexport { Table } from './components/Table.js';\nexport { Accordion } from './components/Accordion.js';\nexport { Tooltip } from './components/Tooltip.js';\nexport { Menu } from './components/Menu.js';\nexport { Drawer } from './components/Drawer.js';\nexport { Notification } from './components/Notification.js';\nexport { Divider } from './components/Divider.js';\nexport { Paper } from './components/Paper.js';\nexport { Alert } from './components/Alert.js';\nexport { Avatar } from './components/Avatar.js';\nexport { Kbd } from './components/Kbd.js';\nexport { Code } from './components/Code.js';\nexport { Blockquote } from './components/Blockquote.js';\nexport { SimpleGrid } from './components/SimpleGrid.js';\nexport { List } from './components/List.js';\nexport { Anchor } from './components/Anchor.js';\nexport { Image } from './components/Image.js';\nexport { Icon } from './components/Icon.js';\nexport { Progress } from './components/Progress.js';\nexport { Slider } from './components/Slider.js';\nexport { Skeleton } from './components/Skeleton.js';\nexport { Chip } from './components/Chip.js';\nexport { SegmentedControl } from './components/SegmentedControl.js';\nexport { Pagination } from './components/Pagination.js';\nexport { Radio } from './components/Radio.js';\nexport { RadioGroup } from './components/RadioGroup.js';\nexport { Breadcrumbs } from './components/Breadcrumbs.js';\nexport { Center } from './components/Center.js';\nexport { Space } from './components/Space.js';\nexport { Collapse } from './components/Collapse.js';\nexport { ActionIcon } from './components/ActionIcon.js';\nexport { Popover } from './components/Popover.js';\nexport { HoverCard } from './components/HoverCard.js';\nexport { Affix } from './components/Affix.js';\nexport { Fieldset } from './components/Fieldset.js';\nexport { AppBar } from './components/AppBar.js';\nexport { Sidebar } from './components/Sidebar.js';\nexport { Timeline } from './components/Timeline.js';\nexport { Stepper } from './components/Stepper.js';\nexport { Rating } from './components/Rating.js';\nexport { Tag } from './components/Tag.js';\nexport { Calendar } from './components/Calendar.js';\nexport { MultiSelect } from './components/MultiSelect.js';\nexport { ToastStack } from './components/ToastStack.js';\nexport { DatePicker } from './components/DatePicker.js';\nexport { Notifications } from './components/Notifications.js';\nexport { RangeSlider } from './components/RangeSlider.js';\nexport { DateInput } from './components/DateInput.js';\nexport { NumberField } from './components/NumberField.js';\nexport { Popper } from './components/Popper.js';\nexport { PasswordInput } from './components/PasswordInput.js';\nexport { SearchInput } from './components/SearchInput.js';\nexport { CopyButton } from './components/CopyButton.js';\nexport { ProgressRing } from './components/ProgressRing.js';\nexport { Toast } from './components/Toast.js';\nexport { Autocomplete } from './components/Autocomplete.js';\nexport { SelectSearch } from './components/SelectSearch.js';\nexport { SwitchGroup } from './components/SwitchGroup.js';\nexport { RangePicker } from './components/RangePicker.js';\nexport { Flex } from './components/Flex.js';\nexport { NavLink } from './components/NavLink.js';\nexport { Indicator } from './components/Indicator.js';\nexport { Burger } from './components/Burger.js';\nexport { LoadingOverlay } from './components/LoadingOverlay.js';\nexport { Grid } from './components/Grid.js';\nexport { Col } from './components/Col.js';\nexport { ScrollArea } from './components/ScrollArea.js';\nexport { PinInput } from './components/PinInput.js';\nexport { CheckboxGroup } from './components/CheckboxGroup.js';\nexport { AvatarGroup } from './components/AvatarGroup.js';\nexport { BadgeGroup } from './components/BadgeGroup.js';\nexport { GridTable } from './components/GridTable.js';\nexport { BottomBar } from './components/BottomBar.js';\nexport { EventCalendar } from './components/EventCalendar.js';\nexport { useDisclosure } from './hooks/useDisclosure.js';\n\n"],
|
|
5
|
+
"mappings": ";AAAA,IAAM,WAAW;AAEjB,IAAM,aAAa,IAAI,IAAI,2BAA2B,YAAY,GAAG,EAAE;AACvE,IAAM,aAAa,IAAI,IAAI,2BAA2B,YAAY,GAAG,EAAE;AACvE,IAAM,aAAa,IAAI,IAAI,2BAA2B,YAAY,GAAG,EAAE;AACvE,IAAM,aAAa,IAAI,IAAI,2BAA2B,YAAY,GAAG,EAAE;AAEvE,IAAM,WAAW,IAAI,IAAI,yBAAyB,YAAY,GAAG,EAAE;AACnE,IAAM,WAAW,IAAI,IAAI,yBAAyB,YAAY,GAAG,EAAE;AACnE,IAAM,WAAW,IAAI,IAAI,yBAAyB,YAAY,GAAG,EAAE;AACnE,IAAM,WAAW,IAAI,IAAI,yBAAyB,YAAY,GAAG,EAAE;AAEnE,IAAM,WAAW,IAAI,IAAI,2BAA2B,YAAY,GAAG,EAAE;AACrE,IAAM,WAAW,IAAI,IAAI,2BAA2B,YAAY,GAAG,EAAE;AACrE,IAAM,WAAW,IAAI,IAAI,2BAA2B,YAAY,GAAG,EAAE;AACrE,IAAM,WAAW,IAAI,IAAI,2BAA2B,YAAY,GAAG,EAAE;AAErE,IAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAME,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQV,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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",
|
|
6
|
+
"names": ["map", "after", "after", "disabled", "loading", "Span", "Span", "Tag", "Div", "Div", "Div", "Div", "Div", "when", "after", "Span", "Div", "when", "after", "Span", "Span", "Div", "Span", "when", "after", "isState", "isState", "after", "Div", "when", "Span", "Div", "Span", "when", "after", "state", "state", "value", "clampValue", "sign", "after", "Div", "Span", "Div", "HtmlButton", "when", "after", "after", "when", "Div", "HtmlButton", "Div", "Span", "after", "when", "after", "when", "Div", "Span", "Div", "Input", "Label", "Span", "when", "state", "after", "state", "after", "Label", "Input", "when", "Div", "Span", "Input", "Label", "Span", "when", "after", "state", "Div", "state", "after", "after", "Div", "state", "after", "value", "Label", "Input", "when", "Span", "Div", "Span", "when", "state", "after", "Span", "Span", "state", "after", "Div", "when", "Span", "Button", "Div", "state", "after", "list", "when", "state", "after", "style", "Div", "list", "Button", "when", "list", "when", "after", "after", "when", "list", "row", "Div", "state", "when", "after", "state", "after", "Div", "when", "Span", "Span", "Div", "when", "after", "state", "portal", "state", "after", "Div", "when", "portal", "Div", "portal", "when", "when", "portal", "Div", "Button", "Div", "Span", "when", "after", "after", "Div", "when", "Span", "Button", "Div", "when", "Div", "when", "Div", "Div", "Button", "Div", "Span", "after", "when", "after", "title", "icon", "Div", "when", "Span", "Button", "Div", "when", "Div", "when", "Span", "Span", "Div", "Div", "Div", "Span", "after", "when", "isSignal", "isState", "isStatePath", "isComputed", "after", "Span", "isSignal", "isState", "isStatePath", "isComputed", "when", "Div", "Img", "Img", "Div", "Div", "Div", "after", "state", "when", "list", "state", "after", "Div", "when", "list", "Div", "after", "after", "Div", "Button", "after", "state", "state", "after", "Button", "Div", "after", "state", "list", "state", "after", "Div", "list", "Button", "Div", "state", "after", "state", "after", "totalValue", "Div", "Button", "Div", "Input", "Label", "Span", "when", "after", "state", "Div", "context", "after", "context", "after", "Div", "state", "after", "Label", "Input", "when", "Span", "Div", "Span", "Span", "Div", "Div", "Div", "Div", "Div", "when", "when", "Div", "Button", "Button", "Div", "when", "after", "state", "state", "after", "Div", "when", "Div", "Div", "Div", "Div", "when", "when", "Div", "Div", "Div", "portal", "after", "isSignal", "isState", "isStatePath", "state", "when", "when", "state", "after", "open", "blur", "size", "position", "className", "portal", "Div", "minWidth", "Div", "when", "list", "after", "resolve", "state", "Img", "Span", "list", "after", "resolve", "state", "mode", "active", "progress", "elapsedMs", "stepDurationsMs", "totalDurationMs", "items", "Div", "when", "Span", "Img", "Div", "list", "Div", "list", "Span", "after", "state", "state", "after", "Span", "Span", "Span", "Button", "Div", "state", "after", "resolveDate", "state", "after", "Div", "Button", "Div", "Span", "Input", "when", "after", "state", "state", "after", "list", "Div", "Span", "when", "Input", "Div", "when", "list", "portal", "Div", "Button", "when", "state", "state", "when", "Div", "Button", "portal", "Div", "list", "Div", "when", "after", "after", "list", "Div", "Div", "after", "state", "when", "state", "list", "after", "Div", "when", "state", "after", "resolveDate", "isSameDay", "formatDate", "state", "after", "Div", "when", "after", "state", "state", "after", "Div", "when", "Button", "after", "when", "state", "state", "after", "Button", "when", "Span", "Div", "Div", "Button", "after", "when", "state", "after", "Button", "when", "Div", "after", "resolve", "after", "Div", "resolve", "Div", "state", "after", "list", "when", "Div", "Div", "state", "after", "Div", "when", "list", "Div", "Span", "state", "after", "state", "after", "Div", "Span", "Div", "Div", "A", "Div", "Span", "when", "after", "state", "state", "after", "Div", "A", "when", "Span", "Div", "when", "Div", "when", "Span", "Span", "Div", "when", "when", "Div", "Div", "Div", "Div", "Div", "Div", "Input", "after", "state", "when", "list", "state", "after", "Input", "when", "Div", "list", "Div", "Div", "Div", "Div", "Div", "Div", "Div", "Span", "after", "context", "context", "after", "Div", "Span", "Button", "Div", "Span", "when", "Div", "Button", "when", "Span", "Div", "Button", "state", "after", "when", "portal", "Input", "Label", "Span", "state", "after", "Div", "Button", "Span", "when", "weekDays", "list", "Label", "Input", "state"]
|
|
7
|
+
}
|