{"id":14530309,"url":"https://github.com/epicarchitect/epic-calendar","last_synced_at":"2025-09-02T01:32:11.178Z","repository":{"id":154178716,"uuid":"628392697","full_name":"epicarchitect/epic-calendar","owner":"epicarchitect","description":"Compose Multiplatform library for displaying epic calendars (unstable, not recommended, please dont use)","archived":false,"fork":false,"pushed_at":"2024-10-18T08:59:07.000Z","size":15075,"stargazers_count":103,"open_issues_count":6,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-19T10:27:03.486Z","etag":null,"topics":["android","android-calendar","calendar","compose","compose-multiplatform","datepicker","kotlin","library","multiplatform","rangedatepicker"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/epicarchitect.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-15T20:03:14.000Z","updated_at":"2024-10-18T14:07:48.000Z","dependencies_parsed_at":"2024-10-20T09:17:48.800Z","dependency_job_id":null,"html_url":"https://github.com/epicarchitect/epic-calendar","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicarchitect%2Fepic-calendar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicarchitect%2Fepic-calendar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicarchitect%2Fepic-calendar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicarchitect%2Fepic-calendar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/epicarchitect","download_url":"https://codeload.github.com/epicarchitect/epic-calendar/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231732276,"owners_count":18418178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-calendar","calendar","compose","compose-multiplatform","datepicker","kotlin","library","multiplatform","rangedatepicker"],"created_at":"2024-09-05T00:01:06.379Z","updated_at":"2024-12-29T11:30:45.888Z","avatar_url":"https://github.com/epicarchitect.png","language":"Kotlin","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# Epic Calendar\n\nCompose Multiplatform library for displaying epic calendars.\n\n### ATTENTION\n\nThis library is super experimental!\n\n![epic-calendar](demo.gif)\n\n### Kotlin Multiplatform supported targets\n\n- android\n- ios\n- jvm\n- js\n\n### Dependencies\n\nThe library is published on MavenCentral.\n\n```Kotlin\ndependencies {\n    commonMainImplementation(\"io.github.epicarchitect:epic-calendar-compose:1.0.8\")\n}\n```\n\n### Basis calendar setup\n\n```kotlin\nBasisEpicCalendar(\n    state = rememberBasisEpicCalendarState(\n        config = rememberBasisEpicCalendarConfig(\n            rowsSpacerHeight = 4.dp,\n            dayOfWeekViewHeight = 40.dp,\n            dayOfMonthViewHeight = 40.dp,\n            columnWidth = 40.dp,\n            dayOfWeekViewShape = RoundedCornerShape(16.dp),\n            dayOfMonthViewShape = RoundedCornerShape(16.dp),\n            contentPadding = PaddingValues(0.dp),\n            contentColor = Color.Unspecified,\n            displayDaysOfAdjacentMonths = true,\n            displayDaysOfWeek = true\n        )\n    )\n)\n```\n\nIf you want to change config dynamically, use `rememberMutableBasisEpicCalendarConfig()`.\nIf you want to change state dynamically, use `rememberMutableBasisEpicCalendarState()`.\n\n### Pager calendar setup\n\n```kotlin\nEpicCalendarPager(\n    state = rememberEpicCalendarPagerState(\n        config = rememberEpicCalendarPagerConfig(\n            basisConfig = rememberBasisEpicCalendarConfig(\n                contentColor = Color.Red\n            )\n        )\n    )\n)\n```\n\nThe `EpicCalendarPager` is based on a `BasisEpicCalendar` so it accepts a `basisConfig`,\nyou can pass it using `rememberEpicCalendarPagerConfig`.\nSo you can customize the appearance using `rememberBasisEpicCalendarConfig`.\n\n### Date picker setup\n\n```kotlin\nEpicDatePicker(\n    state = rememberEpicDatePickerState(\n        config = rememberEpicDatePickerConfig(\n            pagerConfig = rememberEpicCalendarPagerConfig(\n                basisConfig = rememberBasisEpicCalendarConfig(\n                    displayDaysOfAdjacentMonths = false\n                )\n            ),\n            selectionContentColor = MaterialTheme.colorScheme.onPrimary,\n            selectionContainerColor = MaterialTheme.colorScheme.primary\n        )\n    )\n)\n```\n\nThe `EpicDatePicker` is based on a `EpicCalendarPager` so it accepts a `pagerConfig`,\nyou can pass it using `rememberEpicDatePickerConfig`.\n\n### Date picker selection mode\n\nDate picker has 3 features to pick dates:\n\n- Single date selection\n- Multiple date selection\n- Date range selection\n\n```kotlin\nEpicDatePicker(\n    state = rememberEpicDatePickerState(\n        // for range\n        selectionMode = EpicDatePickerState.SelectionMode.Range,\n        // or for single date\n        selectionMode = EpicDatePickerState.SelectionMode.Single(),\n        // or for multiselect\n        selectionMode = EpicDatePickerState.SelectionMode.Single(maxSize = 5)\n    )\n)\n```\n\nSelected dates can be obtained from `state.selectedDates`.\n\n### Draw ranges\n\nTo draw ranges use `Modifier.drawEpicRanges(ranges, color)`\nfrom `io.github.epicarchitect:calendar-compose-ranges`.\n\n```Kotlin\nval myRanges: List\u003cClosedRange\u003ckotlinx.datetime.LocalDate\u003e\u003e\nval myRangeColor: androidx.compose.ui.graphics.Color\n\n// for simple BasisEpicCalendar\nBasisEpicCalendar(\n    modifier = Modifier.drawEpicRanges(\n        ranges = myRanges,\n        color = myRangeColor\n    )\n)\n\n// and for pager\nEpicCalendarPager(\n    pageModifier = { page -\u003e\n        Modifier.drawEpicRanges(\n            ranges = myRanges,\n            color = myRangeColor\n        )\n    }\n)\n```\n\n### Provide setup globally\n\nAt the moment this is a very experimental thing,\nbut you can pass the default settings using\n`LocalBasisEpicCalendarConfig`, `LocalEpicCalendarPagerConfig`, `LocalEpicDatePickerConfig`\n\n```kotlin\nval defaultBasisConfig = defaultBasisEpicCalendarConfig().copy(\n    contentPadding = PaddingValues(horizontal = 16.dp),\n    displayDaysOfAdjacentMonths = false,\n    displayDaysOfWeek = false,\n    dayOfMonthViewShape = RoundedCornerShape(8.dp),\n    rowsSpacerHeight = 2.dp\n)\nval defaultPagerConfig = defaultEpicCalendarPagerConfig().copy(\n    basisConfig = defaultBasisConfig\n)\nval defaultDatePickerConfig = defaultEpicDatePickerConfig().copy(\n    pagerConfig = defaultPagerConfig,\n    selectionContainerColor = MaterialTheme.colorScheme.primary,\n    selectionContentColor = MaterialTheme.colorScheme.onPrimary\n)\nCompositionLocalProvider(\n    LocalBasisEpicCalendarConfig provides defaultBasisConfig,\n    LocalEpicCalendarPagerConfig provides defaultPagerConfig,\n    LocalEpicDatePickerConfig provides defaultDatePickerConfig\n) {\n    YourApplicationThatUsesEpicCalendars()\n}\n```\n\n### Samples\n\nMore examples can be found in the [sample directory](sample).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepicarchitect%2Fepic-calendar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fepicarchitect%2Fepic-calendar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepicarchitect%2Fepic-calendar/lists"}