├── .gitignore ├── .idea ├── .gitignore ├── JetpackComposePro.iml ├── misc.xml ├── modules.xml └── vcs.xml ├── .vscode ├── extensions.json └── launch.json ├── README.md ├── Security.md ├── astro.config.mjs ├── package-lock.json ├── package.json ├── public └── favicon.svg ├── src ├── assets │ ├── alertDialog │ │ ├── alertDialog-header-ExampleMaterial2.webp │ │ └── alertDialog-header-ExampleMaterial3.webp │ ├── appbars │ │ ├── bottomappbar │ │ │ ├── bottomappbar-header-material-3.png │ │ │ └── bottomappbar-header-material.png │ │ └── topappbar │ │ │ ├── topappbar-header-material-3.webp │ │ │ ├── topappbar-header-material.webp │ │ │ ├── topappbar-sample-material-3.webp │ │ │ └── topappbar-sample-material.webp │ ├── badges │ │ ├── badge │ │ │ └── badge-header-material-3.png │ │ └── badgedbox │ │ │ ├── badgedbox-header-material-3.png │ │ │ └── badgedbox-header-material.png │ ├── bottomNavigation │ │ ├── bottomnavigation-header-material-3-example.png │ │ ├── bottomnavigation-header-material-3.png │ │ ├── bottomnavigation-header-material-example.png │ │ └── bottomnavigation-header-material.png │ ├── buttons │ │ ├── button │ │ │ ├── button-header-material-3.png │ │ │ └── button-header-material.png │ │ ├── elevatedbutton │ │ │ └── button-header-material-3.png │ │ ├── extendedfloatingactionbutton │ │ │ ├── button-header-material-3.png │ │ │ └── button-header-material.png │ │ ├── filledtonalbutton │ │ │ └── button-header-material-3.png │ │ ├── floatingactionbutton │ │ │ ├── button-header-material-3.png │ │ │ └── button-header-material.png │ │ ├── iconbutton │ │ │ ├── iconbutton-m-default.webp │ │ │ ├── iconbutton-m3-default.webp │ │ │ ├── iconbutton-sample.webp │ │ │ └── iconbutton3-sample.webp │ │ ├── largefloatingactionbutton │ │ │ └── button-header-material-3.png │ │ ├── outlinedbutton │ │ │ ├── button-header-material-3.png │ │ │ └── button-header-material.png │ │ ├── radiobutton │ │ │ ├── button-header-material-3-example-1.png │ │ │ ├── button-header-material-3.png │ │ │ ├── button-header-material-example-1.png │ │ │ └── button-header-material.png │ │ ├── smallfloatingactionbutton │ │ │ └── button-header-material-3.png │ │ └── textbutton │ │ │ ├── button-header-material-3.png │ │ │ └── button-header-material.png │ ├── cards │ │ ├── elevatedCard │ │ │ ├── card-elevated.png │ │ │ └── elevatedCard.svg │ │ └── outlined-card │ │ │ ├── card-outlined-custom.webp │ │ │ └── card-outlined.webp │ ├── carousel │ │ ├── carousel │ │ │ ├── horizontal-pager-con-controles.gif │ │ │ ├── horizontal-pager-con-indicadores.gif │ │ │ └── horizontal-pager-simple.gif │ │ ├── horizontalmultibrowsecarousel │ │ │ └── horizontal-multi-browse-carousel.gif │ │ └── horizontaluncontainedcarousel │ │ │ └── horizontal-uncontained-carousel.gif │ ├── checkbox │ │ ├── checkbox-example-material-3.png │ │ ├── checkbox-example-material.png │ │ ├── checkbox-header-material-3.png │ │ └── checkbox-header-material.png │ ├── chip │ │ ├── assist-chip │ │ │ └── chip-assist-material-3-example.webp │ │ ├── filter-chip │ │ │ └── chip-filter-material-3-example.webp │ │ ├── input-chip │ │ │ └── chip-input-material-3-example.webp │ │ └── suggestion-chip │ │ │ └── chip-suggestion-material-3-example.webp │ ├── houston.webp │ ├── indicators │ │ ├── circularProgressIndicator │ │ │ ├── circular-progress-indicator-determinate-material-3.gif │ │ │ ├── circular-progress-indicator-determinate-material.gif │ │ │ ├── circular-progress-indicator-header-material-3.gif │ │ │ ├── circular-progress-indicator-header-material.gif │ │ │ ├── circular-progress-indicator-indeterminate-material-3.gif │ │ │ └── circular-progress-indicator-indeterminate-material.gif │ │ └── linearProgressIdicator │ │ │ ├── example_m2_end.webp │ │ │ ├── example_m2_indeterminate.webp │ │ │ ├── example_m2_start.webp │ │ │ ├── example_m3_end.webp │ │ │ ├── example_m3_indeterminate.webp │ │ │ ├── example_m3_start.webp │ │ │ ├── lpi_m2.webp │ │ │ └── lpi_m3.webp │ ├── jetpackcomposelogo.png │ ├── lazy-column │ │ ├── lazy_column_example.png │ │ ├── lazy_column_foundation.png │ │ └── lazy_column_header_example.png │ ├── lists │ │ ├── lazyrow │ │ │ ├── lazyRow.png │ │ │ ├── lazyRowIidexedItems.png │ │ │ ├── lazyRowItem.png │ │ │ └── lazyRowItems.png │ │ └── list-item │ │ │ ├── listItem_material3.png │ │ │ ├── material3item.png │ │ │ └── materialListItem.png │ ├── menus │ │ ├── dropdown-menu │ │ │ ├── dropdown-menu-material.png │ │ │ └── dropdown-menu-material3.png │ │ ├── dropdownMenuItem │ │ │ ├── DropdownMenu-Material.png │ │ │ ├── DropdownMenu-Material3.png │ │ │ ├── DropdownMenuItem-Material.png │ │ │ └── DropdownMenuItem-Material3.png │ │ └── dropdownmenu │ │ │ ├── Material3.png │ │ │ ├── Material31.png │ │ │ ├── MaterialDesign1.png │ │ │ └── MaterialDesignCut.png │ ├── opencomposelogo.png │ ├── outlinedtextfield │ │ ├── outlinedtextfield-header.webp │ │ └── outlinedtextfield3-header.webp │ ├── pickers │ │ ├── datepicker │ │ │ ├── date-picker-material-3-example.png │ │ │ └── date-picker.png │ │ └── timePicker │ │ │ ├── timePicker_m3.webp │ │ │ └── timePicker_m3_example.webp │ ├── sheets │ │ ├── header-m2-example.webp │ │ ├── header-m3-example.webp │ │ ├── m2-example.webp │ │ ├── m3-example.webp │ │ ├── side-sheet-material.webp │ │ └── side-sheet-material3.webp │ ├── sliders │ │ └── range-sliders │ │ │ ├── range-slider-material3.png │ │ │ └── range-slider.png │ ├── snackbar │ │ ├── example_snackbar_custom_m2_end.webp │ │ ├── example_snackbar_custom_m2_start.webp │ │ ├── example_snackbar_custom_m3_end.webp │ │ ├── example_snackbar_custom_m3_start.webp │ │ ├── example_snackbar_default_m2_end.webp │ │ ├── example_snackbar_default_m2_start.webp │ │ ├── example_snackbar_default_m3_end.webp │ │ ├── example_snackbar_default_m3_start.webp │ │ ├── snackbar_m2.webp │ │ └── snackbar_m3.webp │ ├── swipes │ │ ├── swipe-refresh │ │ │ ├── swipe-refresh-material-3.webp │ │ │ └── swipe-refresh-material.webp │ │ └── swipe-to-dismiss │ │ │ ├── swipe-to-dismiss-material-3.webp │ │ │ └── swipe-to-dismiss-material.webp │ ├── switch │ │ ├── switch-custom.webp │ │ ├── switch-default-m2.webp │ │ ├── switch-default.webp │ │ ├── switch-header.webp │ │ └── switch-structure.webp │ ├── tab │ │ ├── tab-material-primary.webp │ │ ├── tab-material-secondary.webp │ │ ├── tab-material3-primary.webp │ │ └── tab-material3-secondary.webp │ ├── tabs │ │ └── tabrow │ │ │ ├── tab-row-header-material-3.jpg │ │ │ └── tab-row-header-material.jpg │ ├── text │ │ └── text │ │ │ ├── text-plain-material-3.png │ │ │ ├── text-plain-red-italic-bold-material-3.png │ │ │ ├── text-plain-red-italic-bold.png │ │ │ ├── text-plain-underline-center-maxlines-ellipsis-material-3.png │ │ │ ├── text-plain-underline-center-maxlines-ellipsis.png │ │ │ └── text-plain.png │ └── textfield │ │ ├── filledtextfield-header.webp │ │ ├── filledtextfield3-header.webp │ │ ├── textfield-example1.webp │ │ ├── textfield-example2.webp │ │ ├── textfield-example3.webp │ │ ├── textfield-example4.webp │ │ ├── textfield-example5.webp │ │ ├── textfield-example5_BIS.webp │ │ ├── textfield3-example1.webp │ │ ├── textfield3-example2.webp │ │ ├── textfield3-example3.webp │ │ ├── textfield3-example4.webp │ │ ├── textfield3-example5.webp │ │ └── textfield3-example5_BIS.webp ├── collaborations │ ├── info.md │ ├── preguntas-comunidad.md │ ├── propuestas.md │ ├── template.mdx │ └── todos.md ├── components │ └── ExpandLinkCard.astro ├── content │ ├── config.ts │ ├── docs │ │ ├── app-bars │ │ │ ├── bottom-app-bar.mdx │ │ │ ├── bottom-navigation.mdx │ │ │ └── top-app-bar.mdx │ │ ├── badges │ │ │ ├── badge.mdx │ │ │ └── badged-box.mdx │ │ ├── buttons │ │ │ ├── button.mdx │ │ │ ├── elevated-button.mdx │ │ │ ├── extended-floating-action-button.mdx │ │ │ ├── filled-tonal-button.mdx │ │ │ ├── floating-action-button.mdx │ │ │ ├── icon-button.mdx │ │ │ ├── large-floating-action-button.mdx │ │ │ ├── outlined-button.mdx │ │ │ ├── radio-button.mdx │ │ │ ├── small-floating-action-button.mdx │ │ │ └── text-button.mdx │ │ ├── cards │ │ │ ├── ElevatedCard.mdx │ │ │ ├── card-outlined.mdx │ │ │ └── card.mdx │ │ ├── carousel │ │ │ ├── carousel.mdx │ │ │ ├── horizontalMultiBrowseCarousel.mdx │ │ │ └── horizontalUncontainedCarousel.mdx │ │ ├── checkbox │ │ │ └── checkbox.mdx │ │ ├── chips │ │ │ ├── assist-chip.mdx │ │ │ ├── filter-chip.mdx │ │ │ ├── input-chip.mdx │ │ │ └── suggestion-chip.mdx │ │ ├── dialogs │ │ │ └── alert-dialog.mdx │ │ ├── divider │ │ │ └── divider.md │ │ ├── home │ │ │ └── guide.mdx │ │ ├── index.mdx │ │ ├── lists │ │ │ ├── lazy-column.mdx │ │ │ ├── lazy-row.mdx │ │ │ └── list-item.mdx │ │ ├── menus │ │ │ ├── dropdown-menu-item.mdx │ │ │ └── dropdown-menu.mdx │ │ ├── pickers │ │ │ ├── date-picker.mdx │ │ │ └── time-picker.mdx │ │ ├── previews │ │ │ └── preview.mdx │ │ ├── progress-indicator │ │ │ ├── circular-progress-indicator.mdx │ │ │ └── linear-progress-indicator.mdx │ │ ├── reference │ │ │ └── example.md │ │ ├── sheets │ │ │ ├── bottom-sheet.mdx │ │ │ └── side-sheet.mdx │ │ ├── sliders │ │ │ ├── section-slider.mdx │ │ │ └── slider.md │ │ ├── snackbar │ │ │ └── snackbar.mdx │ │ ├── swipes │ │ │ ├── swipe-refresh.mdx │ │ │ └── swipe-to-dismiss.mdx │ │ ├── switch │ │ │ └── switch.mdx │ │ ├── tabs │ │ │ ├── tab.mdx │ │ │ └── tabrow.mdx │ │ ├── text-fields │ │ │ ├── outlined-text-field.mdx │ │ │ └── text-field.mdx │ │ ├── text │ │ │ └── text.mdx │ │ └── tooltips │ │ │ └── plain-tooltip.md │ └── i18n │ │ └── .gitkeep ├── env.d.ts └── styles │ └── smoothscroll.css └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | # generated types 4 | .astro/ 5 | 6 | # dependencies 7 | node_modules/ 8 | 9 | # logs 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | pnpm-debug.log* 14 | 15 | 16 | # environment variables 17 | .env 18 | .env.production 19 | 20 | # macOS-specific files 21 | .DS_Store 22 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/JetpackComposePro.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["astro-build.astro-vscode"], 3 | "unwantedRecommendations": [] 4 | } 5 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "command": "./node_modules/.bin/astro dev", 6 | "name": "Development server", 7 | "request": "launch", 8 | "type": "node-terminal" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Composepedia 2 | Version 3 | 4 | Proyecto por y para la comunidad donde intentamos ser la mayor base de datos _open source_ que te permita utilizar y entender cada uno de los componentes de _Jetpack Compose_. 5 | 6 | ## 🌐 Web 7 | 8 | Puedes ver nuestro proyecto desplegado en la web: [OpenCompose.pro](https://www.jetpackcompose.pro/ "OpenCompose") 9 | 10 | ## 🚀 Estructura del proyecto 11 | 12 | El proyecto está hecho con Astro y nuestra estructura actual es: 13 | 14 | ``` 15 | . 16 | ├── public/ 17 | ├── src/ 18 | │ ├── assets/ 19 | │ ├── collaborations/ 20 | │ ├── content/ 21 | │ │ ├── docs/ 22 | │ │ │ ├── **componentes** 23 | │ │ └── config.ts 24 | │ └── env.d.ts 25 | ├── astro.config.mjs 26 | ├── package.json 27 | └── tsconfig.json 28 | ``` 29 | 30 | ## 🛠 Colabora 31 | 32 | Actualmente estamos en una fase muy inicial y todo ayuda se agradece. Para colaborar es muy sencillo. Lo primero que debes hacer es ir a las [issues](https://github.com/ArisGuimera/JetpackComposePro/issues) y asignarte la que te interese desarrollar. También dispones de un [**Template de componentes**](https://github.com/ArisGuimera/JetpackComposePro/blob/master/src/collaborations/template.mdx) para seguir el patrón de la web y que te sea lo más sencillo posible. 33 | 34 | ### Información necesaria 35 | 36 | | Command | Action | 37 | | :------------------------ | :----------------------------------------------- | 38 | | `npm install` | Instala las dependencias | 39 | | `npm run dev` | Inicial el servidor en `localhost:4321` | 40 | | `npm run preview` | Preview de tu build, hazlo antes de hacer PR | 41 | 42 | - Todos los componentes serán formato `.mdx` 43 | - Las imágenes irán en `src/assets/nombreDelComponente`. 44 | 45 | ## 👀 ¿Quieres estar actualizado/a? 46 | 47 | Únete al [discord de la comunidad](https://bit.ly/3bmeQvm) donde tenemos un canal para hablar del proyecto (`🧱-composepedia`). 48 | 49 | ## 👨‍💻 Colaboradores 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /Security.md: -------------------------------------------------------------------------------- 1 | # Política de Seguridad 2 | 3 | ## Versiones Soportadas 4 | 5 | Esta sección describe las versiones de nuestro proyecto "JetpackComposePro" con Astro, impulsado por MDX con el tema Starlight, que actualmente reciben actualizaciones de seguridad. 6 | 7 | | Versión | Soportada | 8 | | ------- | ------------------- | 9 | | 1.0.x | :white_check_mark: | 10 | | < 1.0 | :x: | 11 | 12 | ## Reportar una Vulnerabilidad 13 | 14 | Para informar una vulnerabilidad de seguridad en nuestro proyecto Astro, una base de datos dinámica para composables de Jetpack Compose presentada como una wiki, sigue estas pautas. 15 | 16 | ### Dónde Reportar 17 | 18 | Por favor, reporta vulnerabilidades de seguridad a nuestro equipo de seguridad enviando un correo electrónico a [aris.guimera@gmail.com](mailto:aris.guimera@gmail.com). Evita la divulgación pública de problemas de seguridad. 19 | 20 | ### Expectativas 21 | 22 | - Reconocimiento de tu informe dentro de las 24 horas. 23 | - Actualizaciones regulares sobre el progreso de la vulnerabilidad reportada. 24 | - Las vulnerabilidades aceptadas se abordarán de inmediato, con correcciones incluidas en la próxima versión de parche. 25 | - Si se rechaza una vulnerabilidad, proporcionaremos razones detalladas de la decisión. 26 | 27 | ### Actualizaciones de Seguridad 28 | 29 | Las actualizaciones que aborden vulnerabilidades aceptadas se incorporarán en la próxima versión de parche. El cronograma de lanzamiento puede variar según la gravedad y complejidad del problema reportado. 30 | 31 | ### Divulgación Responsable 32 | 33 | Apreciamos la divulgación responsable de vulnerabilidades. Por favor, evita divulgar públicamente el problema hasta que hayamos tenido tiempo suficiente para abordarlo. 34 | 35 | ¡Gracias por tu contribución a la seguridad de nuestro proyecto! 36 | -------------------------------------------------------------------------------- /astro.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "astro/config"; 2 | import starlight from "@astrojs/starlight"; 3 | 4 | // https://astro.build/config 5 | export default defineConfig({ 6 | site: 'https://www.jetpackcompose.pro', 7 | integrations: [ 8 | starlight({ 9 | head: [ 10 | { 11 | tag: "script", 12 | attrs: { 13 | src: "https://www.googletagmanager.com/gtag/js", 14 | "data-gtag-id": "G-WPBWX9JW9W", 15 | defer: true, 16 | }, 17 | }, 18 | { 19 | tag: "script", 20 | content: ` 21 | window.dataLayer = window.dataLayer || []; 22 | function gtag(){dataLayer.push(arguments);} 23 | gtag('js', new Date()); 24 | gtag('config', 'G-WPBWX9JW9W');`, 25 | }, 26 | ], 27 | expressiveCode: { 28 | themes: ["github-dark-dimmed", "solarized-light"], 29 | //Temas de syntax highlighting (Bloques de código) 30 | styleOverrides: { 31 | borderRadius: "0.5rem", //Bordes redondeados en los bloques de código 32 | }, 33 | }, 34 | 35 | customCss: [ 36 | "./src/styles/smoothscroll.css", //Para que el scroll sea suave entre secciones 37 | ], 38 | 39 | title: "OpenCompose", 40 | locales: { 41 | root: { 42 | label: "Español", 43 | lang: "es", 44 | }, 45 | }, 46 | description: 47 | "La mayor base de datos de Jetpack Compose de habla hispana.", 48 | editLink: { 49 | baseUrl: 50 | "https://github.com/ArisGuimera/JetpackComposePro/blob/master/", 51 | }, 52 | social: { 53 | github: "https://github.com/ArisGuimera/JetpackComposePro", 54 | youtube: "https://youtube.com/@aristidevs", 55 | discord: "https://bit.ly/3bmeQvm", 56 | twitter: "https://x.com/aristidevs", 57 | linkedin: "https://www.linkedin.com/in/aristides-guimera-orozco/", 58 | twitch: "https://www.twitch.tv/aristidevs", 59 | }, 60 | sidebar: [ 61 | { 62 | label: "Primeros pasos", 63 | items:[ 64 | {label: 'Información General', link:'/home/guide'} 65 | ], 66 | }, 67 | { 68 | label: "Previews", 69 | autogenerate: { 70 | directory: "previews" 71 | } 72 | }, 73 | { 74 | label: "App bars", 75 | autogenerate: { 76 | directory: "app-bars", 77 | }, 78 | }, 79 | { 80 | label: "Badges", 81 | autogenerate: { 82 | directory: "badges", 83 | }, 84 | }, 85 | { 86 | label: "Buttons", 87 | autogenerate: { 88 | directory: "buttons", 89 | }, 90 | }, 91 | { 92 | label: "Cards", 93 | autogenerate: { 94 | directory: "cards", 95 | }, 96 | }, 97 | { 98 | label: "Carousel", 99 | autogenerate: { 100 | directory: "carousel", 101 | }, 102 | }, 103 | { 104 | label: "Checkbox", 105 | autogenerate: { 106 | directory: "checkbox", 107 | }, 108 | }, 109 | { 110 | label: "Chips", 111 | autogenerate: { 112 | directory: "chips", 113 | }, 114 | }, 115 | { 116 | label: "Pickers", 117 | autogenerate: { 118 | directory: "pickers", 119 | }, 120 | }, 121 | { 122 | label: "Dialogs", 123 | autogenerate: { 124 | directory: "dialogs", 125 | }, 126 | }, 127 | { 128 | label: "Divider", 129 | autogenerate: { 130 | directory: "divider", 131 | }, 132 | }, 133 | { 134 | label: "Lists", 135 | autogenerate: { 136 | directory: "lists", 137 | }, 138 | }, 139 | { 140 | label: "Menú", 141 | autogenerate: { 142 | directory: "menus", 143 | }, 144 | }, 145 | { 146 | label: "Progress indicator", 147 | autogenerate: { 148 | directory: "progress-indicator", 149 | }, 150 | }, 151 | { 152 | label: "Sheets", 153 | autogenerate: { 154 | directory: "sheets", 155 | }, 156 | }, 157 | { 158 | label: "Sliders", 159 | autogenerate: { 160 | directory: "sliders", 161 | }, 162 | }, 163 | { 164 | label: "Snackbar", 165 | autogenerate: { 166 | directory: "snackbar", 167 | }, 168 | }, 169 | { 170 | label: "Swipes", 171 | autogenerate: { 172 | directory: "swipes", 173 | }, 174 | }, 175 | { 176 | label: "Switch", 177 | autogenerate: { 178 | directory: "switch", 179 | }, 180 | }, 181 | { 182 | label: "Tabs", 183 | autogenerate: { 184 | directory: "tabs", 185 | }, 186 | }, 187 | { 188 | label: "Text", 189 | autogenerate: { 190 | directory: "text", 191 | }, 192 | }, 193 | { 194 | label: "Text fields", 195 | autogenerate: { 196 | directory: "text-fields", 197 | }, 198 | }, 199 | { 200 | label: "ToolTips", 201 | autogenerate: { 202 | directory: "tooltips", 203 | }, 204 | }, 205 | ], 206 | }), 207 | ], 208 | }); 209 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fast-force", 3 | "type": "module", 4 | "version": "0.0.1", 5 | "scripts": { 6 | "dev": "astro dev", 7 | "start": "astro dev", 8 | "build": "astro build", 9 | "preview": "astro preview", 10 | "astro": "astro" 11 | }, 12 | "dependencies": { 13 | "@astrojs/check": "0.4.1", 14 | "@astrojs/starlight": "0.15.4", 15 | "astro": "4.1.1", 16 | "sharp": "0.32.6" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /public/favicon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/alertDialog/alertDialog-header-ExampleMaterial2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/alertDialog/alertDialog-header-ExampleMaterial2.webp -------------------------------------------------------------------------------- /src/assets/alertDialog/alertDialog-header-ExampleMaterial3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/alertDialog/alertDialog-header-ExampleMaterial3.webp -------------------------------------------------------------------------------- /src/assets/appbars/bottomappbar/bottomappbar-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/appbars/bottomappbar/bottomappbar-header-material-3.png -------------------------------------------------------------------------------- /src/assets/appbars/bottomappbar/bottomappbar-header-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/appbars/bottomappbar/bottomappbar-header-material.png -------------------------------------------------------------------------------- /src/assets/appbars/topappbar/topappbar-header-material-3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/appbars/topappbar/topappbar-header-material-3.webp -------------------------------------------------------------------------------- /src/assets/appbars/topappbar/topappbar-header-material.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/appbars/topappbar/topappbar-header-material.webp -------------------------------------------------------------------------------- /src/assets/appbars/topappbar/topappbar-sample-material-3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/appbars/topappbar/topappbar-sample-material-3.webp -------------------------------------------------------------------------------- /src/assets/appbars/topappbar/topappbar-sample-material.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/appbars/topappbar/topappbar-sample-material.webp -------------------------------------------------------------------------------- /src/assets/badges/badge/badge-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/badges/badge/badge-header-material-3.png -------------------------------------------------------------------------------- /src/assets/badges/badgedbox/badgedbox-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/badges/badgedbox/badgedbox-header-material-3.png -------------------------------------------------------------------------------- /src/assets/badges/badgedbox/badgedbox-header-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/badges/badgedbox/badgedbox-header-material.png -------------------------------------------------------------------------------- /src/assets/bottomNavigation/bottomnavigation-header-material-3-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/bottomNavigation/bottomnavigation-header-material-3-example.png -------------------------------------------------------------------------------- /src/assets/bottomNavigation/bottomnavigation-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/bottomNavigation/bottomnavigation-header-material-3.png -------------------------------------------------------------------------------- /src/assets/bottomNavigation/bottomnavigation-header-material-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/bottomNavigation/bottomnavigation-header-material-example.png -------------------------------------------------------------------------------- /src/assets/bottomNavigation/bottomnavigation-header-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/bottomNavigation/bottomnavigation-header-material.png -------------------------------------------------------------------------------- /src/assets/buttons/button/button-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/button/button-header-material-3.png -------------------------------------------------------------------------------- /src/assets/buttons/button/button-header-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/button/button-header-material.png -------------------------------------------------------------------------------- /src/assets/buttons/elevatedbutton/button-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/elevatedbutton/button-header-material-3.png -------------------------------------------------------------------------------- /src/assets/buttons/extendedfloatingactionbutton/button-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/extendedfloatingactionbutton/button-header-material-3.png -------------------------------------------------------------------------------- /src/assets/buttons/extendedfloatingactionbutton/button-header-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/extendedfloatingactionbutton/button-header-material.png -------------------------------------------------------------------------------- /src/assets/buttons/filledtonalbutton/button-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/filledtonalbutton/button-header-material-3.png -------------------------------------------------------------------------------- /src/assets/buttons/floatingactionbutton/button-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/floatingactionbutton/button-header-material-3.png -------------------------------------------------------------------------------- /src/assets/buttons/floatingactionbutton/button-header-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/floatingactionbutton/button-header-material.png -------------------------------------------------------------------------------- /src/assets/buttons/iconbutton/iconbutton-m-default.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/iconbutton/iconbutton-m-default.webp -------------------------------------------------------------------------------- /src/assets/buttons/iconbutton/iconbutton-m3-default.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/iconbutton/iconbutton-m3-default.webp -------------------------------------------------------------------------------- /src/assets/buttons/iconbutton/iconbutton-sample.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/iconbutton/iconbutton-sample.webp -------------------------------------------------------------------------------- /src/assets/buttons/iconbutton/iconbutton3-sample.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/iconbutton/iconbutton3-sample.webp -------------------------------------------------------------------------------- /src/assets/buttons/largefloatingactionbutton/button-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/largefloatingactionbutton/button-header-material-3.png -------------------------------------------------------------------------------- /src/assets/buttons/outlinedbutton/button-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/outlinedbutton/button-header-material-3.png -------------------------------------------------------------------------------- /src/assets/buttons/outlinedbutton/button-header-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/outlinedbutton/button-header-material.png -------------------------------------------------------------------------------- /src/assets/buttons/radiobutton/button-header-material-3-example-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/radiobutton/button-header-material-3-example-1.png -------------------------------------------------------------------------------- /src/assets/buttons/radiobutton/button-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/radiobutton/button-header-material-3.png -------------------------------------------------------------------------------- /src/assets/buttons/radiobutton/button-header-material-example-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/radiobutton/button-header-material-example-1.png -------------------------------------------------------------------------------- /src/assets/buttons/radiobutton/button-header-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/radiobutton/button-header-material.png -------------------------------------------------------------------------------- /src/assets/buttons/smallfloatingactionbutton/button-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/smallfloatingactionbutton/button-header-material-3.png -------------------------------------------------------------------------------- /src/assets/buttons/textbutton/button-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/textbutton/button-header-material-3.png -------------------------------------------------------------------------------- /src/assets/buttons/textbutton/button-header-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/buttons/textbutton/button-header-material.png -------------------------------------------------------------------------------- /src/assets/cards/elevatedCard/card-elevated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/cards/elevatedCard/card-elevated.png -------------------------------------------------------------------------------- /src/assets/cards/outlined-card/card-outlined-custom.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/cards/outlined-card/card-outlined-custom.webp -------------------------------------------------------------------------------- /src/assets/cards/outlined-card/card-outlined.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/cards/outlined-card/card-outlined.webp -------------------------------------------------------------------------------- /src/assets/carousel/carousel/horizontal-pager-con-controles.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/carousel/carousel/horizontal-pager-con-controles.gif -------------------------------------------------------------------------------- /src/assets/carousel/carousel/horizontal-pager-con-indicadores.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/carousel/carousel/horizontal-pager-con-indicadores.gif -------------------------------------------------------------------------------- /src/assets/carousel/carousel/horizontal-pager-simple.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/carousel/carousel/horizontal-pager-simple.gif -------------------------------------------------------------------------------- /src/assets/carousel/horizontalmultibrowsecarousel/horizontal-multi-browse-carousel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/carousel/horizontalmultibrowsecarousel/horizontal-multi-browse-carousel.gif -------------------------------------------------------------------------------- /src/assets/carousel/horizontaluncontainedcarousel/horizontal-uncontained-carousel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/carousel/horizontaluncontainedcarousel/horizontal-uncontained-carousel.gif -------------------------------------------------------------------------------- /src/assets/checkbox/checkbox-example-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/checkbox/checkbox-example-material-3.png -------------------------------------------------------------------------------- /src/assets/checkbox/checkbox-example-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/checkbox/checkbox-example-material.png -------------------------------------------------------------------------------- /src/assets/checkbox/checkbox-header-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/checkbox/checkbox-header-material-3.png -------------------------------------------------------------------------------- /src/assets/checkbox/checkbox-header-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/checkbox/checkbox-header-material.png -------------------------------------------------------------------------------- /src/assets/chip/assist-chip/chip-assist-material-3-example.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/chip/assist-chip/chip-assist-material-3-example.webp -------------------------------------------------------------------------------- /src/assets/chip/filter-chip/chip-filter-material-3-example.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/chip/filter-chip/chip-filter-material-3-example.webp -------------------------------------------------------------------------------- /src/assets/chip/input-chip/chip-input-material-3-example.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/chip/input-chip/chip-input-material-3-example.webp -------------------------------------------------------------------------------- /src/assets/chip/suggestion-chip/chip-suggestion-material-3-example.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/chip/suggestion-chip/chip-suggestion-material-3-example.webp -------------------------------------------------------------------------------- /src/assets/houston.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/houston.webp -------------------------------------------------------------------------------- /src/assets/indicators/circularProgressIndicator/circular-progress-indicator-determinate-material-3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/circularProgressIndicator/circular-progress-indicator-determinate-material-3.gif -------------------------------------------------------------------------------- /src/assets/indicators/circularProgressIndicator/circular-progress-indicator-determinate-material.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/circularProgressIndicator/circular-progress-indicator-determinate-material.gif -------------------------------------------------------------------------------- /src/assets/indicators/circularProgressIndicator/circular-progress-indicator-header-material-3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/circularProgressIndicator/circular-progress-indicator-header-material-3.gif -------------------------------------------------------------------------------- /src/assets/indicators/circularProgressIndicator/circular-progress-indicator-header-material.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/circularProgressIndicator/circular-progress-indicator-header-material.gif -------------------------------------------------------------------------------- /src/assets/indicators/circularProgressIndicator/circular-progress-indicator-indeterminate-material-3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/circularProgressIndicator/circular-progress-indicator-indeterminate-material-3.gif -------------------------------------------------------------------------------- /src/assets/indicators/circularProgressIndicator/circular-progress-indicator-indeterminate-material.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/circularProgressIndicator/circular-progress-indicator-indeterminate-material.gif -------------------------------------------------------------------------------- /src/assets/indicators/linearProgressIdicator/example_m2_end.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/linearProgressIdicator/example_m2_end.webp -------------------------------------------------------------------------------- /src/assets/indicators/linearProgressIdicator/example_m2_indeterminate.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/linearProgressIdicator/example_m2_indeterminate.webp -------------------------------------------------------------------------------- /src/assets/indicators/linearProgressIdicator/example_m2_start.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/linearProgressIdicator/example_m2_start.webp -------------------------------------------------------------------------------- /src/assets/indicators/linearProgressIdicator/example_m3_end.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/linearProgressIdicator/example_m3_end.webp -------------------------------------------------------------------------------- /src/assets/indicators/linearProgressIdicator/example_m3_indeterminate.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/linearProgressIdicator/example_m3_indeterminate.webp -------------------------------------------------------------------------------- /src/assets/indicators/linearProgressIdicator/example_m3_start.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/linearProgressIdicator/example_m3_start.webp -------------------------------------------------------------------------------- /src/assets/indicators/linearProgressIdicator/lpi_m2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/linearProgressIdicator/lpi_m2.webp -------------------------------------------------------------------------------- /src/assets/indicators/linearProgressIdicator/lpi_m3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/indicators/linearProgressIdicator/lpi_m3.webp -------------------------------------------------------------------------------- /src/assets/jetpackcomposelogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/jetpackcomposelogo.png -------------------------------------------------------------------------------- /src/assets/lazy-column/lazy_column_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/lazy-column/lazy_column_example.png -------------------------------------------------------------------------------- /src/assets/lazy-column/lazy_column_foundation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/lazy-column/lazy_column_foundation.png -------------------------------------------------------------------------------- /src/assets/lazy-column/lazy_column_header_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/lazy-column/lazy_column_header_example.png -------------------------------------------------------------------------------- /src/assets/lists/lazyrow/lazyRow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/lists/lazyrow/lazyRow.png -------------------------------------------------------------------------------- /src/assets/lists/lazyrow/lazyRowIidexedItems.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/lists/lazyrow/lazyRowIidexedItems.png -------------------------------------------------------------------------------- /src/assets/lists/lazyrow/lazyRowItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/lists/lazyrow/lazyRowItem.png -------------------------------------------------------------------------------- /src/assets/lists/lazyrow/lazyRowItems.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/lists/lazyrow/lazyRowItems.png -------------------------------------------------------------------------------- /src/assets/lists/list-item/listItem_material3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/lists/list-item/listItem_material3.png -------------------------------------------------------------------------------- /src/assets/lists/list-item/material3item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/lists/list-item/material3item.png -------------------------------------------------------------------------------- /src/assets/lists/list-item/materialListItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/lists/list-item/materialListItem.png -------------------------------------------------------------------------------- /src/assets/menus/dropdown-menu/dropdown-menu-material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/menus/dropdown-menu/dropdown-menu-material.png -------------------------------------------------------------------------------- /src/assets/menus/dropdown-menu/dropdown-menu-material3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/menus/dropdown-menu/dropdown-menu-material3.png -------------------------------------------------------------------------------- /src/assets/menus/dropdownMenuItem/DropdownMenu-Material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/menus/dropdownMenuItem/DropdownMenu-Material.png -------------------------------------------------------------------------------- /src/assets/menus/dropdownMenuItem/DropdownMenu-Material3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/menus/dropdownMenuItem/DropdownMenu-Material3.png -------------------------------------------------------------------------------- /src/assets/menus/dropdownMenuItem/DropdownMenuItem-Material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/menus/dropdownMenuItem/DropdownMenuItem-Material.png -------------------------------------------------------------------------------- /src/assets/menus/dropdownMenuItem/DropdownMenuItem-Material3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/menus/dropdownMenuItem/DropdownMenuItem-Material3.png -------------------------------------------------------------------------------- /src/assets/menus/dropdownmenu/Material3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/menus/dropdownmenu/Material3.png -------------------------------------------------------------------------------- /src/assets/menus/dropdownmenu/Material31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/menus/dropdownmenu/Material31.png -------------------------------------------------------------------------------- /src/assets/menus/dropdownmenu/MaterialDesign1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/menus/dropdownmenu/MaterialDesign1.png -------------------------------------------------------------------------------- /src/assets/menus/dropdownmenu/MaterialDesignCut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/menus/dropdownmenu/MaterialDesignCut.png -------------------------------------------------------------------------------- /src/assets/opencomposelogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/opencomposelogo.png -------------------------------------------------------------------------------- /src/assets/outlinedtextfield/outlinedtextfield-header.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/outlinedtextfield/outlinedtextfield-header.webp -------------------------------------------------------------------------------- /src/assets/outlinedtextfield/outlinedtextfield3-header.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/outlinedtextfield/outlinedtextfield3-header.webp -------------------------------------------------------------------------------- /src/assets/pickers/datepicker/date-picker-material-3-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/pickers/datepicker/date-picker-material-3-example.png -------------------------------------------------------------------------------- /src/assets/pickers/datepicker/date-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/pickers/datepicker/date-picker.png -------------------------------------------------------------------------------- /src/assets/pickers/timePicker/timePicker_m3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/pickers/timePicker/timePicker_m3.webp -------------------------------------------------------------------------------- /src/assets/pickers/timePicker/timePicker_m3_example.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/pickers/timePicker/timePicker_m3_example.webp -------------------------------------------------------------------------------- /src/assets/sheets/header-m2-example.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/sheets/header-m2-example.webp -------------------------------------------------------------------------------- /src/assets/sheets/header-m3-example.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/sheets/header-m3-example.webp -------------------------------------------------------------------------------- /src/assets/sheets/m2-example.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/sheets/m2-example.webp -------------------------------------------------------------------------------- /src/assets/sheets/m3-example.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/sheets/m3-example.webp -------------------------------------------------------------------------------- /src/assets/sheets/side-sheet-material.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/sheets/side-sheet-material.webp -------------------------------------------------------------------------------- /src/assets/sheets/side-sheet-material3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/sheets/side-sheet-material3.webp -------------------------------------------------------------------------------- /src/assets/sliders/range-sliders/range-slider-material3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/sliders/range-sliders/range-slider-material3.png -------------------------------------------------------------------------------- /src/assets/sliders/range-sliders/range-slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/sliders/range-sliders/range-slider.png -------------------------------------------------------------------------------- /src/assets/snackbar/example_snackbar_custom_m2_end.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/snackbar/example_snackbar_custom_m2_end.webp -------------------------------------------------------------------------------- /src/assets/snackbar/example_snackbar_custom_m2_start.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/snackbar/example_snackbar_custom_m2_start.webp -------------------------------------------------------------------------------- /src/assets/snackbar/example_snackbar_custom_m3_end.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/snackbar/example_snackbar_custom_m3_end.webp -------------------------------------------------------------------------------- /src/assets/snackbar/example_snackbar_custom_m3_start.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/snackbar/example_snackbar_custom_m3_start.webp -------------------------------------------------------------------------------- /src/assets/snackbar/example_snackbar_default_m2_end.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/snackbar/example_snackbar_default_m2_end.webp -------------------------------------------------------------------------------- /src/assets/snackbar/example_snackbar_default_m2_start.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/snackbar/example_snackbar_default_m2_start.webp -------------------------------------------------------------------------------- /src/assets/snackbar/example_snackbar_default_m3_end.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/snackbar/example_snackbar_default_m3_end.webp -------------------------------------------------------------------------------- /src/assets/snackbar/example_snackbar_default_m3_start.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/snackbar/example_snackbar_default_m3_start.webp -------------------------------------------------------------------------------- /src/assets/snackbar/snackbar_m2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/snackbar/snackbar_m2.webp -------------------------------------------------------------------------------- /src/assets/snackbar/snackbar_m3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/snackbar/snackbar_m3.webp -------------------------------------------------------------------------------- /src/assets/swipes/swipe-refresh/swipe-refresh-material-3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/swipes/swipe-refresh/swipe-refresh-material-3.webp -------------------------------------------------------------------------------- /src/assets/swipes/swipe-refresh/swipe-refresh-material.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/swipes/swipe-refresh/swipe-refresh-material.webp -------------------------------------------------------------------------------- /src/assets/swipes/swipe-to-dismiss/swipe-to-dismiss-material-3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/swipes/swipe-to-dismiss/swipe-to-dismiss-material-3.webp -------------------------------------------------------------------------------- /src/assets/swipes/swipe-to-dismiss/swipe-to-dismiss-material.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/swipes/swipe-to-dismiss/swipe-to-dismiss-material.webp -------------------------------------------------------------------------------- /src/assets/switch/switch-custom.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/switch/switch-custom.webp -------------------------------------------------------------------------------- /src/assets/switch/switch-default-m2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/switch/switch-default-m2.webp -------------------------------------------------------------------------------- /src/assets/switch/switch-default.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/switch/switch-default.webp -------------------------------------------------------------------------------- /src/assets/switch/switch-header.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/switch/switch-header.webp -------------------------------------------------------------------------------- /src/assets/switch/switch-structure.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/switch/switch-structure.webp -------------------------------------------------------------------------------- /src/assets/tab/tab-material-primary.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/tab/tab-material-primary.webp -------------------------------------------------------------------------------- /src/assets/tab/tab-material-secondary.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/tab/tab-material-secondary.webp -------------------------------------------------------------------------------- /src/assets/tab/tab-material3-primary.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/tab/tab-material3-primary.webp -------------------------------------------------------------------------------- /src/assets/tab/tab-material3-secondary.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/tab/tab-material3-secondary.webp -------------------------------------------------------------------------------- /src/assets/tabs/tabrow/tab-row-header-material-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/tabs/tabrow/tab-row-header-material-3.jpg -------------------------------------------------------------------------------- /src/assets/tabs/tabrow/tab-row-header-material.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/tabs/tabrow/tab-row-header-material.jpg -------------------------------------------------------------------------------- /src/assets/text/text/text-plain-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/text/text/text-plain-material-3.png -------------------------------------------------------------------------------- /src/assets/text/text/text-plain-red-italic-bold-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/text/text/text-plain-red-italic-bold-material-3.png -------------------------------------------------------------------------------- /src/assets/text/text/text-plain-red-italic-bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/text/text/text-plain-red-italic-bold.png -------------------------------------------------------------------------------- /src/assets/text/text/text-plain-underline-center-maxlines-ellipsis-material-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/text/text/text-plain-underline-center-maxlines-ellipsis-material-3.png -------------------------------------------------------------------------------- /src/assets/text/text/text-plain-underline-center-maxlines-ellipsis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/text/text/text-plain-underline-center-maxlines-ellipsis.png -------------------------------------------------------------------------------- /src/assets/text/text/text-plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/text/text/text-plain.png -------------------------------------------------------------------------------- /src/assets/textfield/filledtextfield-header.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/filledtextfield-header.webp -------------------------------------------------------------------------------- /src/assets/textfield/filledtextfield3-header.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/filledtextfield3-header.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield-example1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield-example1.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield-example2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield-example2.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield-example3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield-example3.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield-example4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield-example4.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield-example5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield-example5.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield-example5_BIS.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield-example5_BIS.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield3-example1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield3-example1.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield3-example2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield3-example2.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield3-example3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield3-example3.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield3-example4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield3-example4.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield3-example5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield3-example5.webp -------------------------------------------------------------------------------- /src/assets/textfield/textfield3-example5_BIS.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/assets/textfield/textfield3-example5_BIS.webp -------------------------------------------------------------------------------- /src/collaborations/info.md: -------------------------------------------------------------------------------- 1 | - Link del "FIGMA" : https://excalidraw.com/#json=x21rgKODaqCmrce1hLWTU,6B3Hac4sKj3zLubEhWiVtA -------------------------------------------------------------------------------- /src/collaborations/preguntas-comunidad.md: -------------------------------------------------------------------------------- 1 | - ¿Switch y checkbox juntos? - NO 2 | - Decidir la forma de añadir nombres tipo (App bar) o (App Bar) - App Bar (PascalCase) 3 | - Nombres de los componentes en ingles o español - INGLES 4 | 5 | - ### Otros diseños -------------------------------------------------------------------------------- /src/collaborations/propuestas.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/collaborations/propuestas.md -------------------------------------------------------------------------------- /src/collaborations/template.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: [Nombre del componente] 3 | description: Aprende a usar el composable [Nombre del componente] en Jetpack Compose. 4 | --- 5 | 6 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 7 | 8 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 9 | 10 | ![Imagen del componente [Nombre del componente]](../../../assets/badgedbox/badgedbox-header.webp) 11 | 12 | [Breve descripción del componente] 13 | 14 | ## Implementación 15 | 16 | ### Definición del componente 17 | 18 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 19 | 20 | 21 | 22 | 23 | ```kotlin frame="terminal" 24 | @Composable 25 | fun Text( 26 | text: String, 27 | modifier: Modifier = Modifier, 28 | color: Color = Color.Unspecified, 29 | fontSize: TextUnit = TextUnit.Unspecified, 30 | ) 31 | ``` 32 | 33 | - text: Texto a mostrar en el componente. 34 | - modifier: Modificador que implementará el composable. 35 | - color: Color del texto. 36 | - fontSize: Tamaño del texto (representado en `.sp`) 37 | 38 | 39 | 40 | 41 | ```kotlin frame="terminal" 42 | @Composable 43 | fun Text( 44 | text: String, 45 | modifier: Modifier = Modifier, 46 | color: Color = Color.Unspecified, 47 | fontSize: TextUnit = TextUnit.Unspecified, 48 | ) 49 | ``` 50 | 51 | - text: Texto a mostrar en el componente. 52 | - modifier: Modificador que implementará el composable. 53 | - color: Color del texto. 54 | - fontSize: Tamaño del texto (representado en `.sp`) 55 | 56 | 57 | 58 | 59 | [comment]: <> (No modifiques el tip) 60 | 61 | :::tip[Fuente] 62 | Puedes acceder a la documentación oficial de Google 63 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 64 | ::: 65 | 66 | ### Ejemplos 67 | 68 | 69 | 70 | 71 | ```kotlin frame="terminal" 72 | @Composable 73 | fun Text( 74 | text: String, 75 | modifier: Modifier = Modifier, 76 | color: Color = Color.Unspecified, 77 | fontSize: TextUnit = TextUnit.Unspecified, 78 | ) 79 | ``` 80 | 81 | 82 | 83 | 84 | ```kotlin frame="terminal" 85 | @Composable 86 | fun Text( 87 | text: String, 88 | modifier: Modifier = Modifier, 89 | color: Color = Color.Unspecified, 90 | fontSize: TextUnit = TextUnit.Unspecified, 91 | ) 92 | ``` 93 | 94 | 95 | -------------------------------------------------------------------------------- /src/collaborations/todos.md: -------------------------------------------------------------------------------- 1 | - COMPONENTE IMAGENES (TOP PRIORITARIO) 2 | - DECIDIR TITULO WEB 3 | - COMPLETAR HOME 4 | - ¿Qué metemos en la primera pantalla¿ 5 | - Renombrar el proyecto (fast-force) a otro que decidamos 6 | - Hacer un template guay para este fichero y el de propuestas 7 | - Buscar componente de lista bonito 8 | - Actualizar el readme 9 | - Habilitar el mapa del sitio 10 | - Sección librerías/Composables de terceros - Preparar un template - o meterlo en la misma sección con tags y warnings 11 | -------------------------------------------------------------------------------- /src/components/ExpandLinkCard.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import dialogIMG from "../assets/alertDialog/alertDialog-header-ExampleMaterial3.webp"; 3 | import chipIMG from "../assets/chip/assist-chip/chip-assist-material-3-example.webp"; 4 | import buttonIMG from "../assets/buttons/button/button-header-material-3.png"; 5 | import appBarIMG from "../assets/appbars/bottomappbar/bottomappbar-header-material-3.png"; 6 | import badgeIMG from "../assets/badges/badge/badge-header-material-3.png"; 7 | import switchIMG from "../assets/switch/switch-header.webp"; 8 | import textFieldIMG from "../assets/outlinedtextfield/outlinedtextfield3-header.webp"; 9 | import textIMG from "../assets/text/text/text-plain-material-3.png"; 10 | import bottomSheetIMG from "../assets/sheets/header-m3-example.webp"; 11 | import checkBoxIMG from "../assets/checkbox/checkbox-header-material-3.png"; 12 | 13 | interface Props { 14 | title: string; 15 | description?: string; 16 | } 17 | 18 | const { title, description, ...attributes } = Astro.props; 19 | 20 | const imageMapping: { [key: string]: string } = { 21 | "Dialogs": dialogIMG.src, 22 | "Chips": chipIMG.src, 23 | "Buttons": buttonIMG.src, 24 | "App Bars": appBarIMG.src, 25 | "Badges": badgeIMG.src, 26 | "Switch": switchIMG.src, 27 | "Texts Fields": textFieldIMG.src, 28 | "Texts": textIMG.src, 29 | "Sheets": bottomSheetIMG.src, 30 | "Checkbox": checkBoxIMG.src 31 | }; 32 | 33 | const imagePath = imageMapping[title] 34 | --- 35 | 36 |
37 | 38 | 39 | 40 | 41 | {description && } 42 | { 43 | imagePath && ( 44 | 45 | {" "} 46 | {`Image 47 | 48 | ) 49 | } 50 | {/* Nueva línea para mostrar la imagen */} 51 | 52 | 53 |
54 | 55 | -------------------------------------------------------------------------------- /src/content/config.ts: -------------------------------------------------------------------------------- 1 | import { defineCollection } from 'astro:content'; 2 | import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; 3 | 4 | export const collections = { 5 | docs: defineCollection({ schema: docsSchema() }), 6 | i18n: defineCollection({ type: 'data', schema: i18nSchema() }), 7 | }; 8 | -------------------------------------------------------------------------------- /src/content/docs/badges/badge.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Badge 3 | description: Aprende a usar el composable Badge en Jetpack Compose. 4 | --- 5 | 6 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 7 | 8 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 9 | 10 | | Material 3| 11 | | :------: | 12 | ![Imagen del componente Badge](../../../assets/badges/badge/badge-header-material-3.png) 13 | 14 | `Badge` contiene información dinámica como notificaciones o productos de un carrito. Su contenido debería ser un icono o un texto muy corto, como por ejemplo un número. 15 | 16 | ## Implementación 17 | 18 | ### Definición del componente 19 | 20 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 21 | 22 | 23 | 24 | 25 | ```kotlin frame="terminal" 26 | @ExperimentalMaterial3Api 27 | @Composable 28 | fun Badge( 29 | modifier: Modifier = Modifier, 30 | containerColor: Color = BadgeDefaults.containerColor, 31 | contentColor: Color = contentColorFor(containerColor), 32 | content: @Composable (RowScope.() -> Unit)? = null, 33 | ) 34 | ``` 35 | Atributo | Descripción 36 | ------ | ----------- 37 | modifier | Modificador que implementará el composable. 38 | containerColor | El color del fondo del componente. 39 | contentColor | Color del contenido. 40 | content | Contenido a mostrar dentro del `Badge` (_Opcional_). 41 | 42 | 43 | 44 | 45 | [comment]: <> (No modifiques el tip) 46 | 47 | :::tip[Fuente] 48 | Puedes acceder a la documentación oficial de Google 49 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 50 | ::: 51 | 52 | ### Ejemplos 53 | 54 | 55 | 56 | 57 |
![Imagen del componente Badge](../../../assets/badges/badge/badge-header-material-3.png)
58 | 59 | ```kotlin frame="terminal" 60 | @OptIn(ExperimentalMaterial3Api::class) 61 | @Composable 62 | fun BadgeExample() { 63 | Badge( 64 | modifier = Modifier.padding(16.dp), 65 | containerColor = Color.Red, 66 | contentColor = Color.White, 67 | content = { Text("1") }, 68 | ) 69 | } 70 | ``` 71 | 72 |
73 |
-------------------------------------------------------------------------------- /src/content/docs/badges/badged-box.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: BadgedBox 3 | description: Aprende a usar el composable BadgedBox en Jetpack Compose. 4 | sidebar: 5 | badge: 6 | text: Nuevo 7 | variant: tip 8 | --- 9 | 10 | import { Tabs, TabItem } from "@astrojs/starlight/components"; 11 | 12 | | Material| Material 3| 13 | | :----------------: | :------: | 14 | ![Imagen del componente BadgedBox](../../../assets/badges/badgedbox/badgedbox-header-material.png)|![Imagen del componente BadgedBox](../../../assets/badges/badgedbox/badgedbox-header-material-3.png) 15 | 16 | `BadgedBox` es el componente que nos permitirá gestionar de una forma sencilla la clásica vista de notificaciones. Su implementación es muy fácil y personalizable por lo que podemos usarlo tanto para avisar al usuario de alguna novedad o como por ejemplo para mostrar el clásico carrito de compra con el número de productos. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | 23 | 24 | 25 | ```kotlin frame="terminal" 26 | @Composable 27 | fun BadgeBox( 28 | modifier: Modifier = Modifier, 29 | backgroundColor: Color = MaterialTheme.colors.error, 30 | contentColor: Color = contentColorFor(backgroundColor), 31 | badgeContent: @Composable (RowScope.() -> Unit)? = null, 32 | content: @Composable BoxScope.() -> Unit, 33 | ) 34 | ``` 35 | 36 | Atributo | Descripción 37 | ------ | ----------- 38 | modifier | Modificador que implementará el composable (_Opcional_). 39 | backgroundColor | El color del fondo del componente. 40 | contentColor | Color del contenido. 41 | badgeContent | El contenido a mostrar en el `badge`. 42 | content | Contenido que tendrá el badge en la parte superior. 43 | 44 | 45 | 46 | 47 | 48 | ```kotlin frame="terminal" 49 | @ExperimentalMaterial3Api 50 | @Composable 51 | fun BadgedBox( 52 | badge: @Composable BoxScope.() -> Unit, 53 | modifier: Modifier = Modifier, 54 | content: @Composable BoxScope.() -> Unit, 55 | ) 56 | ``` 57 | 58 | - **badge**: El badged a mostrar - normalmente se usa un componente [Badge](/badges/badge/). 59 | - **modifier**: Modificador que implementará el composable (_Opcional_). 60 | - **content**: Contenido que tendrá el badge en la parte superior. 61 | 62 | 63 | 64 | 65 | 66 | :::tip[Fuente] 67 | Puedes acceder a la documentación oficial de Google 68 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 69 | ::: 70 | 71 | ### Ejemplos 72 | 73 | 74 | 75 | 76 |
![Imagen del componente BadgedBox](../../../assets/badges/badgedbox/badgedbox-header-material.png)
77 | 78 | ```kotlin frame="terminal" 79 | @OptIn(ExperimentalMaterialApi::class) 80 | @Composable 81 | fun BadgedBoxExample() { 82 | Box(Modifier.size(100.dp), contentAlignment = Alignment.Center) { 83 | BadgeBox(content = { 84 | Icon( 85 | Icons.Filled.Favorite, contentDescription = "Favorite" 86 | ) 87 | }, badgeContent = { 88 | Text("8") 89 | }) 90 | } 91 | } 92 | ``` 93 | 94 |
95 | 96 | 97 |
![Imagen del componente BadgedBox](../../../assets/badges/badgedbox/badgedbox-header-material-3.png)
98 | 99 | ```kotlin frame="terminal" 100 | @OptIn(ExperimentalMaterial3Api::class) 101 | @Composable 102 | fun BadgedBoxExample() { 103 | Box(Modifier.size(100.dp), contentAlignment = Alignment.Center) { 104 | BadgedBox(badge = { Badge { Text("8") } }) { 105 | Icon( 106 | Icons.Filled.Favorite, 107 | contentDescription = "Favorite" 108 | ) 109 | } 110 | } 111 | } 112 | ``` 113 | 114 |
115 |
-------------------------------------------------------------------------------- /src/content/docs/buttons/button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Button 3 | description: Aprende a usar el composable Button en Jetpack Compose. 4 | sidebar: 5 | order: 0 6 | --- 7 | 8 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 9 | 10 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 11 | 12 | | Material| Material 3| 13 | | :----------------: | :------: | 14 | | ![Imagen del componente Button - Material](../../../assets/buttons/button/button-header-material.png) | ![Imagen del componente Button - Material 3](../../../assets/buttons/button/button-header-material-3.png) | 15 | 16 | Los `Button` le dan al usuario la posibilidad de activar/ejecutar acciones predefinidas. Este se trata del botón más sencillo de todos y el que se utiliza por defecto. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 23 | 24 | 25 | 26 | 27 | ```kotlin frame="terminal" 28 | @Composable 29 | fun Button( 30 | onClick: () -> Unit, 31 | modifier: Modifier = Modifier, 32 | enabled: Boolean = true, 33 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 34 | elevation: ButtonElevation? = ButtonDefaults.elevation(), 35 | shape: Shape = MaterialTheme.shapes.small, 36 | border: BorderStroke? = null, 37 | colors: ButtonColors = ButtonDefaults.buttonColors(), 38 | contentPadding: PaddingValues = ButtonDefaults.ContentPadding, 39 | content: @Composable RowScope.() -> Unit 40 | ) 41 | ``` 42 | Atributo | Descripción 43 | ------ | ----------- 44 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 45 | modifier | Modificador que implementará el composable. 46 | enabled | Habilita o deshabilita el botón. 47 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 48 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `ButtonElevation`. 49 | shape | Define la forma del `Button` y su sombra. 50 | border | Borde para el `Button`. 51 | colors | Nos permite modificar el color del fondo del `Button` y el del contenido. 52 | contentPadding | The spacing values to apply internally between the container and the content 53 | content | Contenido a mostrar dentro del `Button`. 54 | 55 | 56 | 57 | 58 | ```kotlin frame="terminal" 59 | @Composable 60 | fun Button( 61 | onClick: () -> Unit, 62 | modifier: Modifier = Modifier, 63 | enabled: Boolean = true, 64 | shape: Shape = ButtonDefaults.shape, 65 | colors: ButtonColors = ButtonDefaults.buttonColors(), 66 | elevation: ButtonElevation? = ButtonDefaults.buttonElevation(), 67 | border: BorderStroke? = null, 68 | contentPadding: PaddingValues = ButtonDefaults.ContentPadding, 69 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 70 | content: @Composable RowScope.() -> Unit 71 | ) 72 | ``` 73 | 74 | Atributo | Descripción 75 | ------ | ----------- 76 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 77 | modifier | Modificador que implementará el composable. 78 | enabled | Habilita o deshabilita el botón. 79 | shape | Define la forma del `Button` y su sombra. 80 | colors | Nos permite modificar el color del fondo del `Button` y el del contenido. 81 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `ButtonElevation`. 82 | border | Borde para el `Button`. 83 | contentPadding | The spacing values to apply internally between the container and the content 84 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 85 | content | Contenido a mostrar dentro del `Button`. 86 | 87 | 88 | 89 | 90 | [comment]: <> (No modifiques el tip) 91 | 92 | :::tip[Fuente] 93 | Puedes acceder a la documentación oficial de Google 94 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 95 | ::: 96 | 97 | ### Ejemplos 98 | 99 | 100 | 101 | 102 |
![Imagen del componente Button - Material](../../../assets/buttons/button/button-header-material.png)
103 | 104 | ```kotlin frame="terminal" 105 | @Composable 106 | fun ButtonExample() { 107 | Button(onClick = { print("Hello") }) { 108 | Text(text = "Click me") 109 | } 110 | } 111 | ``` 112 | 113 |
114 | 115 | 116 |
![Imagen del componente Button - Material 3](../../../assets/buttons/button/button-header-material-3.png)
117 | 118 | ```kotlin frame="terminal" 119 | @Composable 120 | fun ButtonExample() { 121 | Button(onClick = { print("Hello") }) { 122 | Text(text = "Click me") 123 | } 124 | } 125 | ``` 126 | 127 |
128 |
-------------------------------------------------------------------------------- /src/content/docs/buttons/elevated-button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ElevatedButton 3 | description: Aprende a usar el composable ElevatedButton en Jetpack Compose. 4 | sidebar: 5 | order: 3 6 | --- 7 | 8 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 9 | 10 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 11 | 12 | | Material 3| 13 | | :------: | 14 | | ![Imagen del componente ElevatedButton - Material 3](../../../assets/buttons/elevatedbutton/button-header-material-3.png) | 15 | 16 | Los `ElevatedButton` tiene la misma finalidad que los [FilledTonalButton](/buttons/filled-tonal-button/) pero con una pequeña elevación (modificable) para darle algo más de énfasis. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 23 | 24 | 25 | 26 | 27 | ```kotlin frame="terminal" 28 | @Composable 29 | fun ElevatedButton( 30 | onClick: () -> Unit, 31 | modifier: Modifier = Modifier, 32 | enabled: Boolean = true, 33 | shape: Shape = ButtonDefaults.elevatedShape, 34 | colors: ButtonColors = ButtonDefaults.elevatedButtonColors(), 35 | elevation: ButtonElevation? = ButtonDefaults.elevatedButtonElevation(), 36 | border: BorderStroke? = null, 37 | contentPadding: PaddingValues = ButtonDefaults.ContentPadding, 38 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 39 | content: @Composable RowScope.() -> Unit 40 | ) 41 | ``` 42 | 43 | Atributo | Descripción 44 | ------ | ----------- 45 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 46 | modifier | Modificador que implementará el composable. 47 | enabled | Habilita o deshabilita el botón. 48 | shape | Define la forma del `Button` y su sombra. 49 | colors | Nos permite modificar el color del fondo del `Button` y el del contenido. 50 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `ButtonElevation`. 51 | border | Borde para el `Button`. 52 | contentPadding | The spacing values to apply internally between the container and the content 53 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 54 | content | Contenido a mostrar dentro del `Button`. 55 | 56 | 57 | 58 | 59 | [comment]: <> (No modifiques el tip) 60 | 61 | :::tip[Fuente] 62 | Puedes acceder a la documentación oficial de Google 63 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 64 | ::: 65 | 66 | ### Ejemplos 67 | 68 | 69 | 70 | 71 |
![Imagen del componente FilledTonalButton - Material 3](../../../assets/buttons/elevatedbutton/button-header-material-3.png)
72 | 73 | ```kotlin frame="terminal" 74 | @Composable 75 | fun ElevatedButtonExample() { 76 | ElevatedButton(onClick = { print("Hello") }) { 77 | Text(text = "Click me") 78 | } 79 | } 80 | ``` 81 | 82 |
83 |
-------------------------------------------------------------------------------- /src/content/docs/buttons/extended-floating-action-button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ExtendedFloatingActionButton 3 | description: Aprende a usar el composable ExtendedFloatingActionButton en Jetpack Compose. 4 | sidebar: 5 | order: 8 6 | --- 7 | 8 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 9 | 10 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 11 | 12 | | Material| Material 3| 13 | | :----------------: | :------: | 14 | | ![Imagen del componente ExtendedFloatingActionButton - Material](../../../assets/buttons/extendedfloatingactionbutton/button-header-material.png) | ![Imagen del componente ExtendedFloatingActionButton - Material 3](../../../assets/buttons/extendedfloatingactionbutton/button-header-material-3.png) | 15 | 16 | Los `ExtendedFloatingActionButton` representan la acción más importante de la pantalla. Como norma general están situados en la parte inferior derecha. A diferencia de los otros [FloatingActionButtons](/buttons/floating-action-button/) este componente está destinado a tener un texto además de un icono. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 23 | 24 | 25 | 26 | 27 | ```kotlin frame="terminal" 28 | @Composable 29 | fun ExtendedFloatingActionButton( 30 | text: @Composable () -> Unit, 31 | onClick: () -> Unit, 32 | modifier: Modifier = Modifier, 33 | icon: @Composable (() -> Unit)? = null, 34 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 35 | shape: Shape = MaterialTheme.shapes.small.copy(CornerSize(percent = 50)), 36 | backgroundColor: Color = MaterialTheme.colors.secondary, 37 | contentColor: Color = contentColorFor(backgroundColor), 38 | elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation() 39 | ) 40 | ``` 41 | Atributo | Descripción 42 | ------ | ----------- 43 | text | Composable que mostrará al lado izquierdo del botón (En teoría debería ser un [Text](/texts/text/) pero vale cualquiera). 44 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 45 | modifier | Modificador que implementará el composable. 46 | icon | Composable que mostrará al lado derecho del botón (En teoría debería ser un [Icon](/images/icon/) pero vale cualquiera). 47 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 48 | shape | Define la forma del `FloatingActionButton` y su sombra. 49 | backgroundColor | El color del fondo del componente. 50 | contentColor | Color del contenido. 51 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `FloatingActionButtonElevation`. 52 | 53 | 54 | 55 | 56 | ```kotlin frame="terminal" 57 | @Composable 58 | fun ExtendedFloatingActionButton( 59 | onClick: () -> Unit, 60 | modifier: Modifier = Modifier, 61 | shape: Shape = FloatingActionButtonDefaults.extendedFabShape, 62 | containerColor: Color = FloatingActionButtonDefaults.containerColor, 63 | contentColor: Color = contentColorFor(containerColor), 64 | elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(), 65 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 66 | content: @Composable RowScope.() -> Unit, 67 | ) 68 | ``` 69 | 70 | Atributo | Descripción 71 | ------ | ----------- 72 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 73 | modifier | Modificador que implementará el composable. 74 | shape | Define la forma del `FloatingActionButton` y su sombra. 75 | containerColor | El color del fondo del componente. 76 | contentColor | Color del contenido. 77 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `FloatingActionButtonElevation`. 78 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 79 | content | Contenido a mostrar dentro del `ExtendedFloatingActionButton`. El contenido tiene un `RowScope` lo que significa que todo lo que añadas aquí estará en una fila, por eso es muy importante el orden. 80 | 81 | 82 | 83 | 84 | [comment]: <> (No modifiques el tip) 85 | 86 | :::tip[Fuente] 87 | Puedes acceder a la documentación oficial de Google 88 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 89 | ::: 90 | 91 | ### Ejemplos 92 | 93 | 94 | 95 | 96 |
![Imagen del componente ExtendedFloatingActionButton - Material](../../../assets/buttons/extendedfloatingactionbutton/button-header-material.png)
97 | 98 | ```kotlin frame="terminal" 99 | @Composable 100 | fun ExtendedFloatingActionButtonExample() { 101 | ExtendedFloatingActionButton(onClick = { print("Hello") }, 102 | text = { Text(text = "Extended FAB") }, 103 | icon = { Icon(Icons.Filled.Favorite, "Floating action button.") }) 104 | } 105 | ``` 106 | 107 |
108 | 109 | 110 |
![Imagen del componente ExtendedFloatingActionButton - Material 3](../../../assets/buttons/extendedfloatingactionbutton/button-header-material-3.png)
111 | 112 | ```kotlin frame="terminal" 113 | @Composable 114 | fun ExtendedFloatingActionButtonExample() { 115 | ExtendedFloatingActionButton(onClick = { print("Hello") }) { 116 | Text(text ="Extended FAB") 117 | Icon(Icons.Filled.Favorite, "Floating action button.") 118 | } 119 | } 120 | ``` 121 | 122 |
123 |
-------------------------------------------------------------------------------- /src/content/docs/buttons/filled-tonal-button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: FilledTonalButton 3 | description: Aprende a usar el composable FilledTonalButton en Jetpack Compose. 4 | sidebar: 5 | order: 1 6 | --- 7 | 8 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 9 | 10 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 11 | 12 | | Material 3| 13 | | :------: | 14 | | ![Imagen del componente FilledTonalButton - Material 3](../../../assets/buttons/filledtonalbutton/button-header-material-3.png) | 15 | 16 | Los `FilledTonalButton` están definidos para acciones de importancia intermedia, entre los [Button](/buttons/button/) y los [OutlinedButton](/buttons/outlined-button/). Como norma general estos botones utilizarán de la gama de colores la parte secundaria, es decir, colores que no llamen tanto la atención como los primarios. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 23 | 24 | 25 | 26 | 27 | ```kotlin frame="terminal" 28 | @Composable 29 | fun FilledTonalButton( 30 | onClick: () -> Unit, 31 | modifier: Modifier = Modifier, 32 | enabled: Boolean = true, 33 | shape: Shape = ButtonDefaults.filledTonalShape, 34 | colors: ButtonColors = ButtonDefaults.filledTonalButtonColors(), 35 | elevation: ButtonElevation? = ButtonDefaults.filledTonalButtonElevation(), 36 | border: BorderStroke? = null, 37 | contentPadding: PaddingValues = ButtonDefaults.ContentPadding, 38 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 39 | content: @Composable RowScope.() -> Unit 40 | ) 41 | ``` 42 | 43 | Atributo | Descripción 44 | ------ | ----------- 45 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 46 | modifier | Modificador que implementará el composable. 47 | enabled | Habilita o deshabilita el botón. 48 | shape | Define la forma del `Button` y su sombra. 49 | colors | Nos permite modificar el color del fondo del `Button` y el del contenido. 50 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `ButtonElevation`. 51 | border | Borde para el `Button`. 52 | contentPadding | The spacing values to apply internally between the container and the content 53 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 54 | content | Contenido a mostrar dentro del `Button`. 55 | 56 | 57 | 58 | 59 | [comment]: <> (No modifiques el tip) 60 | 61 | :::tip[Fuente] 62 | Puedes acceder a la documentación oficial de Google 63 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 64 | ::: 65 | 66 | ### Ejemplos 67 | 68 | 69 | 70 | 71 |
![Imagen del componente FilledTonalButton - Material 3](../../../assets/buttons/filledtonalbutton/button-header-material-3.png)
72 | 73 | ```kotlin frame="terminal" 74 | @Composable 75 | fun FilledTonalButtonExample() { 76 | FilledTonalButton(onClick = { print("Hello") }) { 77 | Text(text = "Click me") 78 | } 79 | } 80 | ``` 81 | 82 |
83 |
-------------------------------------------------------------------------------- /src/content/docs/buttons/floating-action-button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: FloatingActionButton 3 | description: Aprende a usar el composable FloatingActionButton en Jetpack Compose. 4 | sidebar: 5 | order: 5 6 | --- 7 | 8 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 9 | 10 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 11 | 12 | | Material| Material 3| 13 | | :----------------: | :------: | 14 | | ![Imagen del componente FloatingActionButton - Material](../../../assets/buttons/floatingactionbutton/button-header-material.png) | ![Imagen del componente FloatingActionButton - Material 3](../../../assets/buttons/floatingactionbutton/button-header-material-3.png) | 15 | 16 | Los `FloatingActionButton` representan la acción más importante de la pantalla. Como norma general solo contienen un icono y están situados en la parte inferior derecha. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 23 | 24 | 25 | 26 | 27 | ```kotlin frame="terminal" 28 | @Composable 29 | fun FloatingActionButton( 30 | onClick: () -> Unit, 31 | modifier: Modifier = Modifier, 32 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 33 | shape: Shape = MaterialTheme.shapes.small.copy(CornerSize(percent = 50)), 34 | backgroundColor: Color = MaterialTheme.colors.secondary, 35 | contentColor: Color = contentColorFor(backgroundColor), 36 | elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(), 37 | content: @Composable () -> Unit 38 | ) 39 | ``` 40 | Atributo | Descripción 41 | ------ | ----------- 42 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 43 | modifier | Modificador que implementará el composable. 44 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 45 | shape | Define la forma del `FloatingActionButton` y su sombra. 46 | backgroundColor | El color del fondo del componente. 47 | contentColor | Color del contenido. 48 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `FloatingActionButtonElevation`. 49 | content | Contenido a mostrar dentro del `FloatingActionButton`. 50 | 51 | 52 | 53 | 54 | ```kotlin frame="terminal" 55 | @Composable 56 | fun FloatingActionButton( 57 | onClick: () -> Unit, 58 | modifier: Modifier = Modifier, 59 | shape: Shape = FloatingActionButtonDefaults.shape, 60 | containerColor: Color = FloatingActionButtonDefaults.containerColor, 61 | contentColor: Color = contentColorFor(containerColor), 62 | elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(), 63 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 64 | content: @Composable () -> Unit, 65 | ) 66 | ``` 67 | 68 | Atributo | Descripción 69 | ------ | ----------- 70 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 71 | modifier | Modificador que implementará el composable. 72 | shape | Define la forma del `FloatingActionButton` y su sombra. 73 | containerColor | El color del fondo del componente. 74 | contentColor | Color del contenido. 75 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `FloatingActionButtonElevation`. 76 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 77 | content | Contenido a mostrar dentro del `FloatingActionButton`. 78 | 79 | 80 | 81 | 82 | [comment]: <> (No modifiques el tip) 83 | 84 | :::tip[Fuente] 85 | Puedes acceder a la documentación oficial de Google 86 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 87 | ::: 88 | 89 | ### Ejemplos 90 | 91 | 92 | 93 | 94 |
![Imagen del componente FloatingActionButton - Material](../../../assets/buttons/floatingactionbutton/button-header-material.png)
95 | 96 | ```kotlin frame="terminal" 97 | @Composable 98 | fun FloatingActionButtonExample() { 99 | FloatingActionButton(onClick = { print("Hello") }) { 100 | Icon(Icons.Filled.Favorite, "Floating action button.") 101 | } 102 | } 103 | ``` 104 | 105 |
106 | 107 | 108 |
![Imagen del componente FloatingActionButton - Material 3](../../../assets/buttons/floatingactionbutton/button-header-material-3.png)
109 | 110 | ```kotlin frame="terminal" 111 | @Composable 112 | fun FloatingActionButtonExample() { 113 | FloatingActionButton(onClick = { print("Hello") }) { 114 | Icon(Icons.Filled.Favorite, "Floating action button.") 115 | } 116 | } 117 | ``` 118 | 119 |
120 |
-------------------------------------------------------------------------------- /src/content/docs/buttons/icon-button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: IconButton 3 | description: Aprende a usar el composable IconButton en Jetpack Compose. 4 | --- 5 | 6 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 7 | 8 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 9 | 10 | Material | Material3 11 | ------ | ----------- 12 | ![Imagen del componente [IconButton]](../../../assets/buttons/iconbutton/iconbutton-m-default.webp)|![Imagen del componente [IconButton]](../../../assets/buttons/iconbutton/iconbutton-m3-default.webp)| 13 | 14 | El componente `IconButton` permite que un ícono actúe como un `Button`, ejecuta una acción cuando el usuario hace click en este componente. Es usado cuando se requiere un botón compacto, como en `TopAppBar`. 15 | 16 | ## Implementación 17 | 18 | ### Definición del componente 19 | 20 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 21 | 22 | 23 | 24 | 25 | ```kotlin frame="terminal" 26 | @Composable 27 | fun IconButton( 28 | onClick: () -> Unit, 29 | modifier: Modifier = Modifier, 30 | enabled: Boolean = true, 31 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 32 | content: @Composable () -> Unit 33 | ) 34 | ``` 35 | 36 | Atributo | Descripción 37 | ------ | ----------- 38 | onClick | Función lambda que es llamada cuando el botón es presionado. 39 | modifier | Modificador que implementará el composable (_Opcional_). 40 | enabled | Controla el estado del componente. Sí el valor es falso, entonces el componente no responderá a la acción de click, también se mostrará como deshabilitado visualmente. 41 | interactionSource | Representa una serie de interacciones para este componente. Se puede crear un objeto personalizado a través de `remember { MutableInteractionSource() }`. 42 | content | Contenido que almacenará el `IconButton`, comúnmente es un `Icon`. 43 | 44 | 45 | 46 | 47 | ```kotlin frame="terminal" 48 | @Composable 49 | fun IconButton( 50 | onClick: () -> Unit, 51 | modifier: Modifier = Modifier, 52 | enabled: Boolean = true, 53 | colors: IconButtonColors = IconButtonDefaults.iconButtonColors(), 54 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 55 | content: @Composable () -> Unit 56 | ) 57 | ``` 58 | 59 | Atributo | Descripción 60 | ------ | ----------- 61 | onClick | Función lambda que es llamada cuando el botón es presionado. 62 | modifier | Modificador que implementará el composable (_Opcional_). 63 | enabled | Controla el estado del componente. Sí el valor es falso, entonces el componente no responderá a la acción de click, también se mostrará como deshabilitado visualmente. 64 | colors | Contiene información sobre el color del `IconButton` a través de diferentes estados. Por defecto usa `IconButtonDefaults.iconButtonColors()`. 65 | interactionSource | Representa una serie de interacciones para este componente. Se puede crear un objeto personalizado a través de `remember { MutableInteractionSource() }`. 66 | content | Contenido que almacenará el `IconButton`, comúnmente es un `Icon`. 67 | 68 | 69 | 70 | 71 | [comment]: <> (No modifiques el tip) 72 | 73 | :::tip[Fuente] 74 | Puedes acceder a la documentación oficial de Google 75 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 76 | ::: 77 | 78 | ### Ejemplos 79 | 80 | 81 | 82 | 83 |
84 | ![IconButton](../../../assets/buttons/iconbutton/iconbutton-sample.webp) 85 |
86 | 87 | ```kotlin frame="terminal" 88 | import androidx.compose.material.icons.Icons 89 | import androidx.compose.material.icons.filled.Settings 90 | 91 | @Composable 92 | fun MyIconButton() { 93 | IconButton( 94 | onClick = { /*TODO*/ }, 95 | modifier = Modifier.size(60.dp), 96 | ){ 97 | Icon(imageVector = Icons.Filled.Settings, contentDescription = "Settings") 98 | } 99 | } 100 | ``` 101 | 102 |
103 | 104 | 105 |
106 | ![IconButton](../../../assets/buttons/iconbutton/iconbutton3-sample.webp) 107 |
108 | 109 | ```kotlin frame="terminal" 110 | import androidx.compose.material.icons.Icons 111 | import androidx.compose.material.icons.filled.Home 112 | import androidx.compose.material3.Icon 113 | import androidx.compose.material3.IconButton 114 | import androidx.compose.material3.IconButtonDefaults 115 | 116 | @Composable 117 | fun MyIconButton() { 118 | IconButton( 119 | onClick = { /*TODO*/ }, 120 | modifier = Modifier.size(70.dp), 121 | colors = IconButtonDefaults.iconButtonColors( 122 | containerColor = Color.LightGray, 123 | contentColor = Color.Red 124 | ) 125 | ) { 126 | Icon(imageVector = Icons.Filled.Home, contentDescription = "Home") 127 | } 128 | } 129 | ``` 130 | 131 |
132 |
-------------------------------------------------------------------------------- /src/content/docs/buttons/large-floating-action-button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: LargeFloatingActionButton 3 | description: Aprende a usar el composable LargeFloatingActionButton en Jetpack Compose. 4 | sidebar: 5 | order: 7 6 | --- 7 | 8 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 9 | 10 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 11 | 12 | | Material 3| 13 | | :------: | 14 | | ![Imagen del componente LargeFloatingActionButton - Material 3](../../../assets/buttons/largefloatingactionbutton/button-header-material-3.png) | 15 | 16 | El componente `LargeFloatingActionButton` sigue las mismas reglas e implimentaciones que [FloatingActionButton](/buttons/floating-action-button/) pero el botón como tal es más grande. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 23 | 24 | 25 | 26 | 27 | ```kotlin frame="terminal" 28 | @Composable 29 | fun LargeFloatingActionButton( 30 | onClick: () -> Unit, 31 | modifier: Modifier = Modifier, 32 | shape: Shape = FloatingActionButtonDefaults.largeShape, 33 | containerColor: Color = FloatingActionButtonDefaults.containerColor, 34 | contentColor: Color = contentColorFor(containerColor), 35 | elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(), 36 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 37 | content: @Composable () -> Unit, 38 | ) 39 | ``` 40 | 41 | Atributo | Descripción 42 | ------ | ----------- 43 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 44 | modifier | Modificador que implementará el composable. 45 | shape | Define la forma del `FloatingActionButton` y su sombra. 46 | containerColor | El color del fondo del componente. 47 | contentColor | Color del contenido. 48 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `FloatingActionButtonElevation`. 49 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 50 | content | Contenido a mostrar dentro del `FloatingActionButton`. 51 | 52 | 53 | 54 | 55 | [comment]: <> (No modifiques el tip) 56 | 57 | :::tip[Fuente] 58 | Puedes acceder a la documentación oficial de Google 59 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 60 | ::: 61 | 62 | ### Ejemplos 63 | 64 | 65 | 66 | 67 |
![Imagen del componente LargeFloatingActionButton - Material 3](../../../assets/buttons/largefloatingactionbutton/button-header-material-3.png)
68 | 69 | ```kotlin frame="terminal" 70 | @Composable 71 | fun LargeFloatingActionButtonExample() { 72 | LargeFloatingActionButton(onClick = { print("Hello") }) { 73 | Icon(Icons.Filled.Favorite, "Floating action button.") 74 | } 75 | } 76 | ``` 77 | 78 |
79 |
-------------------------------------------------------------------------------- /src/content/docs/buttons/outlined-button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: OutlinedButton 3 | description: Aprende a usar el composable OutlinedButton en Jetpack Compose. 4 | sidebar: 5 | order: 2 6 | --- 7 | 8 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 9 | 10 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 11 | 12 | | Material| Material 3| 13 | | :----------------: | :------: | 14 | | ![Imagen del componente OutlinedButton - Material](../../../assets/buttons/outlinedbutton/button-header-material.png) | ![Imagen del componente OutlinedButton - Material 3](../../../assets/buttons/outlinedbutton/button-header-material-3.png) | 15 | 16 | Los `OutlinedButton` son [botones](/buttons/button/) con un diseño menos llamativo ya que están diseñados para acciones importantes pero que no son TAN importantes como la acción primaria. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 23 | 24 | 25 | 26 | 27 | ```kotlin frame="terminal" 28 | @Composable 29 | fun OutlinedButton( 30 | onClick: () -> Unit, 31 | modifier: Modifier = Modifier, 32 | enabled: Boolean = true, 33 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 34 | elevation: ButtonElevation? = null, 35 | shape: Shape = MaterialTheme.shapes.small, 36 | border: BorderStroke? = ButtonDefaults.outlinedBorder, 37 | colors: ButtonColors = ButtonDefaults.outlinedButtonColors(), 38 | contentPadding: PaddingValues = ButtonDefaults.ContentPadding, 39 | content: @Composable RowScope.() -> Unit 40 | ) 41 | ``` 42 | Atributo | Descripción 43 | ------ | ----------- 44 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 45 | modifier | Modificador que implementará el composable. 46 | enabled | Habilita o deshabilita el botón. 47 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 48 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `ButtonElevation`. 49 | shape | Define la forma del `Button` y su sombra. 50 | border | Borde para el `Button`. 51 | colors | Nos permite modificar el color del fondo del `Button` y el del contenido. 52 | contentPadding | The spacing values to apply internally between the container and the content 53 | content | Contenido a mostrar dentro del `Button`. 54 | 55 | 56 | 57 | 58 | ```kotlin frame="terminal" 59 | @Composable 60 | fun OutlinedButton( 61 | onClick: () -> Unit, 62 | modifier: Modifier = Modifier, 63 | enabled: Boolean = true, 64 | shape: Shape = ButtonDefaults.outlinedShape, 65 | colors: ButtonColors = ButtonDefaults.outlinedButtonColors(), 66 | elevation: ButtonElevation? = null, 67 | border: BorderStroke? = ButtonDefaults.outlinedButtonBorder, 68 | contentPadding: PaddingValues = ButtonDefaults.ContentPadding, 69 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 70 | content: @Composable RowScope.() -> Unit 71 | ) 72 | ``` 73 | 74 | Atributo | Descripción 75 | ------ | ----------- 76 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 77 | modifier | Modificador que implementará el composable. 78 | enabled | Habilita o deshabilita el botón. 79 | shape | Define la forma del `Button` y su sombra. 80 | colors | Nos permite modificar el color del fondo del `Button` y el del contenido. 81 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `ButtonElevation`. 82 | border | Borde para el `Button`. 83 | contentPadding | The spacing values to apply internally between the container and the content 84 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 85 | content | Contenido a mostrar dentro del `Button`. 86 | 87 | 88 | 89 | 90 | [comment]: <> (No modifiques el tip) 91 | 92 | :::tip[Fuente] 93 | Puedes acceder a la documentación oficial de Google 94 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 95 | ::: 96 | 97 | ### Ejemplos 98 | 99 | 100 | 101 | 102 |
![Imagen del componente OutlinedButton - Material](../../../assets/buttons/outlinedbutton/button-header-material.png)
103 | 104 | ```kotlin frame="terminal" 105 | @Composable 106 | fun OutlinedButtonExample() { 107 | OutlinedButton(onClick = { print("Hello") }) { 108 | Text(text = "Click me") 109 | } 110 | } 111 | ``` 112 | 113 |
114 | 115 | 116 |
![Imagen del componente OutlinedButton - Material 3](../../../assets/buttons/outlinedbutton/button-header-material-3.png)
117 | 118 | ```kotlin frame="terminal" 119 | @Composable 120 | fun OutlinedButtonExample() { 121 | OutlinedButton(onClick = { print("Hello") }) { 122 | Text(text = "Click me") 123 | } 124 | } 125 | ``` 126 | 127 |
128 |
-------------------------------------------------------------------------------- /src/content/docs/buttons/radio-button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: RadioButton 3 | description: Aprende a usar el composable RadioButton en Jetpack Compose. 4 | sidebar: 5 | order: 9 6 | --- 7 | 8 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 9 | 10 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 11 | 12 | | Material| Material 3| 13 | | :----------------: | :------: | 14 | | ![Imagen del componente RadioButton - Material](../../../assets/buttons/radiobutton/button-header-material.png) | ![Imagen del componente RadioButton - Material 3](../../../assets/buttons/radiobutton/button-header-material-3.png) | 15 | 16 | Los `RadioButton` se utilizan para mostrar un listado de opciones donde SOLO debería poder seleccionarse uno. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 23 | 24 | 25 | 26 | 27 | ```kotlin frame="terminal" 28 | @Composable 29 | fun RadioButton( 30 | selected: Boolean, 31 | onClick: (() -> Unit)?, 32 | modifier: Modifier = Modifier, 33 | enabled: Boolean = true, 34 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 35 | colors: RadioButtonColors = RadioButtonDefaults.colors() 36 | ) 37 | ``` 38 | Atributo | Descripción 39 | ------ | ----------- 40 | selected | Determina el estado del botón, si está seleccionado o no. 41 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 42 | modifier | Modificador que implementará el composable. 43 | enabled | Permite habilitar o deshabilitar (que no se pueda pulsar) el botón. 44 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 45 | colors | Objeto `RadioButtonColors` que determina los colores para todos los distintos estados del componente. 46 | 47 | 48 | 49 | 50 | ```kotlin frame="terminal" 51 | @Composable 52 | fun RadioButton( 53 | selected: Boolean, 54 | onClick: (() -> Unit)?, 55 | modifier: Modifier = Modifier, 56 | enabled: Boolean = true, 57 | colors: RadioButtonColors = RadioButtonDefaults.colors(), 58 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() } 59 | ) 60 | ``` 61 | 62 | Atributo | Descripción 63 | ------ | ----------- 64 | selected | Determina el estado del botón, si está seleccionado o no. 65 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 66 | modifier | Modificador que implementará el composable. 67 | enabled | Permite habilitar o deshabilitar (que no se pueda pulsar) el botón. 68 | colors | Objeto `RadioButtonColors` que determina los colores para todos los distintos estados del componente. 69 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 70 | 71 | 72 | 73 | 74 | [comment]: <> (No modifiques el tip) 75 | 76 | :::tip[Fuente] 77 | Puedes acceder a la documentación oficial de Google 78 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 79 | ::: 80 | 81 | ### Ejemplos 82 | 83 | 84 | 85 | 86 |
![Imagen del componente RadioButton - Material](../../../assets/buttons/radiobutton/button-header-material.png)
87 | 88 | ```kotlin frame="terminal" 89 | @Composable 90 | fun FloatingActionButtonExample() { 91 | FloatingActionButton(onClick = { print("Hello") }) { 92 | Icon(Icons.Filled.Favorite, "Floating action button.") 93 | } 94 | } 95 | ``` 96 | 97 |
![Imagen del componente RadioButton en listado - Material](../../../assets/buttons/radiobutton/button-header-material-example-1.png)
98 | 99 | ```kotlin frame="terminal" 100 | enum class ProgrammingLanguage { 101 | Java, 102 | Kotlin, 103 | Dart, 104 | Swift 105 | } 106 | 107 | @Preview 108 | @Composable 109 | fun RadioButtonListExample() { 110 | val programmingLanguageList = listOf(Java, Kotlin, Dart, Swift) 111 | var selectedLanguage by remember { mutableStateOf(Kotlin) } 112 | Column(Modifier.padding(6.dp)) { 113 | programmingLanguageList.forEach { language -> 114 | Row(Modifier.padding(6.dp), verticalAlignment = Alignment.CenterVertically) { 115 | RadioButton( 116 | selected = selectedLanguage == language, 117 | onClick = { selectedLanguage = language } 118 | ) 119 | Text(text = language.name, color = Color.White, modifier = Modifier.padding(start = 16.dp)) 120 | } 121 | } 122 | } 123 | } 124 | ``` 125 | 126 |
127 | 128 | 129 |
![Imagen del componente RadioButton - Material 3](../../../assets/buttons/radiobutton/button-header-material-3.png)
130 | 131 | ```kotlin frame="terminal" 132 | @Composable 133 | fun FloatingActionButtonExample() { 134 | FloatingActionButton(onClick = { print("Hello") }) { 135 | Icon(Icons.Filled.Favorite, "Floating action button.") 136 | } 137 | } 138 | ``` 139 | 140 |
![Imagen del componente RadioButton en listado - Material 3](../../../assets/buttons/radiobutton/button-header-material-3-example-1.png)
141 | 142 | ```kotlin frame="terminal" 143 | enum class ProgrammingLanguage { 144 | Java, 145 | Kotlin, 146 | Dart, 147 | Swift 148 | } 149 | 150 | @Composable 151 | fun RadioButtonListExample() { 152 | val programmingLanguageList = listOf(Java, Kotlin, Dart, Swift) 153 | var selectedLanguage by remember { mutableStateOf(Kotlin) } 154 | Column(Modifier.padding(6.dp)) { 155 | programmingLanguageList.forEach { language -> 156 | Row(Modifier.padding(6.dp), verticalAlignment = Alignment.CenterVertically) { 157 | RadioButton( 158 | selected = selectedLanguage == language, 159 | onClick = { selectedLanguage = language } 160 | ) 161 | Text(text = language.name, color = Color.White) 162 | } 163 | } 164 | } 165 | } 166 | ``` 167 | 168 |
169 |
-------------------------------------------------------------------------------- /src/content/docs/buttons/small-floating-action-button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: SmallFloatingActionButton 3 | description: Aprende a usar el composable SmallFloatingActionButton en Jetpack Compose. 4 | sidebar: 5 | order: 6 6 | --- 7 | 8 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 9 | 10 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 11 | 12 | | Material 3| 13 | | :------: | 14 | | ![Imagen del componente SmallFloatingActionButton - Material 3](../../../assets/buttons/smallfloatingactionbutton/button-header-material-3.png) | 15 | 16 | El componente `SmallFloatingActionButton` sigue las mismas reglas e implimentaciones que [FloatingActionButton](/buttons/floating-action-button/) pero con un diseño algo más pequeño. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 23 | 24 | 25 | 26 | 27 | ```kotlin frame="terminal" 28 | @Composable 29 | fun SmallFloatingActionButton( 30 | onClick: () -> Unit, 31 | modifier: Modifier = Modifier, 32 | shape: Shape = FloatingActionButtonDefaults.smallShape, 33 | containerColor: Color = FloatingActionButtonDefaults.containerColor, 34 | contentColor: Color = contentColorFor(containerColor), 35 | elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(), 36 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 37 | content: @Composable () -> Unit, 38 | ) 39 | ``` 40 | 41 | Atributo | Descripción 42 | ------ | ----------- 43 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 44 | modifier | Modificador que implementará el composable. 45 | shape | Define la forma del `FloatingActionButton` y su sombra. 46 | containerColor | El color del fondo del componente. 47 | contentColor | Color del contenido. 48 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `FloatingActionButtonElevation`. 49 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 50 | content | Contenido a mostrar dentro del `FloatingActionButton`. 51 | 52 | 53 | 54 | 55 | [comment]: <> (No modifiques el tip) 56 | 57 | :::tip[Fuente] 58 | Puedes acceder a la documentación oficial de Google 59 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 60 | ::: 61 | 62 | ### Ejemplos 63 | 64 | 65 | 66 | 67 |
![Imagen del componente SmallFloatingActionButton - Material 3](../../../assets/buttons/smallfloatingactionbutton/button-header-material-3.png)
68 | 69 | ```kotlin frame="terminal" 70 | @Composable 71 | fun SmallFloatingActionButtonExample() { 72 | SmallFloatingActionButton(onClick = { print("Hello") }) { 73 | Icon(Icons.Filled.Favorite, "Floating action button.") 74 | } 75 | } 76 | ``` 77 | 78 |
79 |
-------------------------------------------------------------------------------- /src/content/docs/buttons/text-button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: TextButton 3 | description: Aprende a usar el composable TextButton en Jetpack Compose. 4 | sidebar: 5 | order: 4 6 | --- 7 | 8 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 9 | 10 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 11 | 12 | | Material| Material 3| 13 | | :----------------: | :------: | 14 | | ![Imagen del componente TextButton - Material](../../../assets/buttons/textbutton/button-header-material.png) | ![Imagen del componente TextButton - Material 3](../../../assets/buttons/textbutton/button-header-material-3.png) | 15 | 16 | Los `TextButton` están destinados a las acciones con menos prioridad en las vistas. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 23 | 24 | 25 | 26 | 27 | ```kotlin frame="terminal" 28 | @Composable 29 | fun TextButton( 30 | onClick: () -> Unit, 31 | modifier: Modifier = Modifier, 32 | enabled: Boolean = true, 33 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 34 | elevation: ButtonElevation? = null, 35 | shape: Shape = MaterialTheme.shapes.small, 36 | border: BorderStroke? = null, 37 | colors: ButtonColors = ButtonDefaults.textButtonColors(), 38 | contentPadding: PaddingValues = ButtonDefaults.TextButtonContentPadding, 39 | content: @Composable RowScope.() -> Unit 40 | ) 41 | ``` 42 | Atributo | Descripción 43 | ------ | ----------- 44 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 45 | modifier | Modificador que implementará el composable. 46 | enabled | Habilita o deshabilita el botón. 47 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 48 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `ButtonElevation`. 49 | shape | Define la forma del `Button` y su sombra. 50 | border | Borde para el `Button`. 51 | colors | Nos permite modificar el color del fondo del `Button` y el del contenido. 52 | contentPadding | The spacing values to apply internally between the container and the content 53 | content | Contenido a mostrar dentro del `Button`. 54 | 55 | 56 | 57 | 58 | ```kotlin frame="terminal" 59 | @Composable 60 | fun TextButton( 61 | onClick: () -> Unit, 62 | modifier: Modifier = Modifier, 63 | enabled: Boolean = true, 64 | shape: Shape = ButtonDefaults.textShape, 65 | colors: ButtonColors = ButtonDefaults.textButtonColors(), 66 | elevation: ButtonElevation? = null, 67 | border: BorderStroke? = null, 68 | contentPadding: PaddingValues = ButtonDefaults.TextButtonContentPadding, 69 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 70 | content: @Composable RowScope.() -> Unit 71 | ) 72 | ``` 73 | 74 | Atributo | Descripción 75 | ------ | ----------- 76 | onClick | Función lambda que se ejecutará cuando el usuario pulse el botón. 77 | modifier | Modificador que implementará el composable. 78 | enabled | Habilita o deshabilita el botón. 79 | shape | Define la forma del `Button` y su sombra. 80 | colors | Nos permite modificar el color del fondo del `Button` y el del contenido. 81 | elevation | Permite modificar la elevación del componente en sus distintos estados con el objeto `ButtonElevation`. 82 | border | Borde para el `Button`. 83 | contentPadding | The spacing values to apply internally between the container and the content 84 | interactionSource | Representa un `stream` de interacciones del botón lo que nos permite modificar su diseño o comportamiento. Por ejemplo que mientras el botón esté pulsado, este encoja. 85 | content | Contenido a mostrar dentro del `Button`. 86 | 87 | 88 | 89 | 90 | [comment]: <> (No modifiques el tip) 91 | 92 | :::tip[Fuente] 93 | Puedes acceder a la documentación oficial de Google 94 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 95 | ::: 96 | 97 | ### Ejemplos 98 | 99 | 100 | 101 | 102 |
![Imagen del componente Button - Material](../../../assets/buttons/button/button-header-material.png)
103 | 104 | ```kotlin frame="terminal" 105 | @Composable 106 | fun TextButtonExample() { 107 | TextButton(onClick = { print("Hello") }) { 108 | Text(text = "Click me") 109 | } 110 | } 111 | ``` 112 | 113 |
114 | 115 | 116 |
![Imagen del componente Button - Material 3](../../../assets/buttons/button/button-header-material-3.png)
117 | 118 | ```kotlin frame="terminal" 119 | @Composable 120 | fun TextButtonExample() { 121 | TextButton(onClick = { print("Hello") }) { 122 | Text(text = "Click me") 123 | } 124 | } 125 | ``` 126 | 127 |
128 |
-------------------------------------------------------------------------------- /src/content/docs/cards/ElevatedCard.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: ElevatedCard 3 | description: Aprende a usar el elevatedCard en Jetpack Compose. 4 | --- 5 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 6 | 7 | | Material 3| 8 | | :----------------: | 9 | | ![Imagen del componente OutlinedButton - Material](../../../assets/cards/elevatedCard/elevatedCard.svg)| 10 | 11 | Las tarjetas elevadas contienen contenidos y acciones que relacionan información sobre un tema. Tienen una sombra que las separa más del fondo que las tarjetas con relleno, pero menos que las tarjetas con contorno. 12 | 13 | ## Implementación 14 | 15 | ### Defenición del componente 16 | 17 | 18 | 19 | 20 | ```kotlin frame="terminal" 21 | @Composable 22 | fun ElevatedCard( 23 | onClick: () -> Unit, 24 | modifier: Modifier = Modifier, 25 | enabled: Boolean = true, 26 | shape: Shape = CardDefaults.elevatedShape, 27 | colors: CardColors = CardDefaults.elevatedCardColors(), 28 | elevation: CardElevation = CardDefaults.elevatedCardElevation(), 29 | interactionSource: MutableInteractionSource? = null, 30 | content: @Composable ColumnScope.() -> Unit 31 | ) 32 | ``` 33 | 34 | Atributo | Descripción 35 | ------ | ----------- 36 | onClick | cuando se hace clic en esta tarjeta 37 | modifier | el [Modificador] que se aplicará a esta tarjeta 38 | enabled | controla el estado activado de esta tarjeta. Cuando es falso, este componente no responderá a la entrada del usuario, y aparecerá visualmente desactivado y deshabilitado para los servicios de accesibilidad. 39 | shape | define la forma del contenedor y la sombra de esta tarjeta (cuando se utiliza [elevación]) 40 | colors | [CardColors] que se utilizará para resolver el color o colores utilizados para esta tarjeta en diferentes estados. Véase [CardDefaults.elevatedCardElevation]. 41 | elevation | [CardElevation] utilizado para resolver la elevación de esta tarjeta en diferentes estados. Esto controla el tamaño de la sombra debajo de la tarjeta. Además, cuando el color del contenedor es [ColorScheme.surface], controla la cantidad de color primario aplicado como superposición. Véase también: [Superficie]. 42 | interactionSource | una [MutableInteractionSource] opcional para observar y emitir [Interaction]s para esta tarjeta. Puede utilizarlo para cambiar la apariencia de la tarjeta o previsualizarla en diferentes estados. Tenga en cuenta que si se proporciona null, las interacciones seguirán ocurriendo internamente. 43 | 44 | 45 | 46 | 47 | [comment]: <> (No modifiques el tip) 48 | :::tip[Fuente] 49 | Puedes acceder a la documentación oficial de Google 50 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 51 | ::: 52 | 53 | ### Ejemplo 54 | 55 | 56 | 57 | 58 |
![Imagen del componente ExtendedFloatingActionButton - Material](../../../assets/cards/elevatedCard/card-elevated.png)
59 | 60 | ``` kotlin frame="terminal" 61 | @Composable 62 | fun ElevatedCardExample() { 63 | ElevatedCard( 64 | elevation = CardDefaults.cardElevation( 65 | defaultElevation = 6.dp 66 | ), 67 | modifier = Modifier 68 | .size(width = 240.dp, height = 100.dp) 69 | ) { 70 | Text( 71 | text = "Elevated", 72 | modifier = Modifier 73 | .padding(16.dp), 74 | textAlign = TextAlign.Center, 75 | ) 76 | } 77 | } 78 | ``` 79 | 80 |
81 |
-------------------------------------------------------------------------------- /src/content/docs/cards/card-outlined.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: OutlinedCard 3 | description: Aprende a usar el OutlinedCard en Jetpack Compose. 4 | sidebar: 5 | order: 0 6 | --- 7 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 8 | 9 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 10 | 11 | | Material 3| 12 | | :----------------: | 13 | | ![Imagen del componente OutlinedButton - Material](../../../assets/cards/outlined-card/card-outlined.webp)| 14 | 15 | La `OutlinedCard` es similar a `Card`, pero en lugar de tener un fondo sólido, tiene solo un contorno o borde alrededor del contenedor. No tiene sombreado por defecto y al igual que `Card`, puede contener otros elementos en su interior, como texto, imágenes, etc. 16 | 17 | ## Implementación 18 | 19 | ### Defenición del componente 20 | 21 | 22 | 23 | 24 | ```kotlin frame="terminal" 25 | @Composable 26 | fun OutlinedCard( 27 | modifier: Modifier, 28 | shape: Shape = CardDefaults.outlinedShape, 29 | colors: CardColors = CardDefaults.outlinedCardColors(), 30 | elevation: CardElevation = CardDefaults.outlinedCardElevation(), 31 | border: BorderStroke = CardDefaults.outlinedCardBorder(), 32 | content: @Composable ColumnScope.() -> Unit 33 | ): Unit 34 | ``` 35 | Atributo | Descripción 36 | ------ | ----------- 37 | modifier | Modificador que implementará el composable. 38 | shape | Define la forma del `OutlinedCard` y su sombra. 39 | colors | Define el color del `OutlinedCard`, los colores del contenido, el color del `OutlinedCard` y su contenido cuando estan desactivado. 40 | elevation | Permite modificar la elevación del componente en sus distintos estados. 41 | border | Permite especificar el trazo con el que dibujar el borde. 42 | content | Contenido a mostrar en el `OutlinedCard`. 43 | 44 | 45 | 46 | 47 | [comment]: <> (No modifiques el tip) 48 | 49 | :::tip[Fuente] 50 | Puedes acceder a la documentación oficial de Google 51 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 52 | ::: 53 | 54 | ### Ejemplo 55 | 56 | 57 | 58 | 59 |
![Imagen del componente ExtendedFloatingActionButton - Material](../../../assets/cards/outlined-card/card-outlined-custom.webp)
60 | 61 | ``` kotlin frame="terminal" 62 | @Composable 63 | fun OutlinedCardExample() { 64 | OutlinedCard( 65 | colors = CardDefaults.cardColors( 66 | containerColor = MaterialTheme.colorScheme.surface, 67 | ), 68 | border = BorderStroke(1.dp, MaterialTheme.colorScheme.primary), 69 | modifier = Modifier 70 | .size(width = 240.dp, height = 100.dp) 71 | ) { 72 | Icon( 73 | imageVector = Icons.Outlined.AutoAwesome, 74 | contentDescription = "example", 75 | modifier = Modifier.padding(start = 8.dp, top = 8.dp) 76 | ) 77 | Text( 78 | text = "Outlined", 79 | modifier = Modifier 80 | .padding(start = 8.dp, top = 8.dp), 81 | textAlign = TextAlign.Center, 82 | ) 83 | } 84 | } 85 | ``` 86 |
87 |
-------------------------------------------------------------------------------- /src/content/docs/cards/card.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Card 3 | description: Aprende a usar el composable Card en Jetpack Compose. 4 | --- 5 | -------------------------------------------------------------------------------- /src/content/docs/carousel/horizontalMultiBrowseCarousel.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: HorizontalMultiBrowseCarousel 3 | description: Nuevo elemento para mostrar múltiples ítems 4 | --- 5 | 6 | | Material 3 | 7 | | :----------------------------------------------------------------------------------------------------------------------------------------------: | 8 | | ![Demostración de un HorizontalMultiBrowseCarousel](../../../assets/carousel/horizontalmultibrowsecarousel/horizontal-multi-browse-carousel.gif) | 9 | 10 | ## Implementación 11 | 12 | A partir de la versión `1.3.0` de _compose_ podemos hacer uso del `HorizontalMultiBrowseCarousel`, un nuevo elemento que permite tener un carrusel con múltiples ítems. Este componente resalta algunos elementos con mayor tamaño. 13 | 14 | ### Definición del componente 15 | 16 | ```kotlin frame="terminal" 17 | @ExperimentalMaterial3Api 18 | @Composable 19 | fun HorizontalMultiBrowseCarousel( 20 | state: CarouselState, 21 | preferredItemWidth: Dp, 22 | modifier: Modifier = Modifier, 23 | itemSpacing: Dp = 0.dp, 24 | flingBehavior: TargetedFlingBehavior = 25 | CarouselDefaults.singleAdvanceFlingBehavior(state = state), 26 | minSmallItemWidth: Dp = CarouselDefaults.MinSmallItemSize, 27 | maxSmallItemWidth: Dp = CarouselDefaults.MaxSmallItemSize, 28 | contentPadding: PaddingValues = PaddingValues(0.dp), 29 | content: @Composable CarouselItemScope.(itemIndex: Int) -> Unit 30 | ) 31 | ``` 32 | 33 | | Atributo | Descripción | 34 | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 35 | | state | CarouselState. Se utiliza para controlar el estado del componente. | 36 | | preferredItemWidth | Es el ancho aproximado que deben tener los ítems completamente desplegados. Este ancho se ajustará según el espacio disponible y los demás elementos. El componente ajusta primero los ítems más comprimidos (estos se pueden ajustar con las propiedades de minSmallItemWidth y maxSmallItemWidth), y luego los "medianos". | 37 | | modifier | Modificador que aplicará al composable. | 38 | | itemSpacing | Es el espacio que existirá entre cada ítem. | 39 | | flingBehavior | TargetedFlingBehavior. Es la clase que define el comportamiento del desplazamiento. | 40 | | minSmallItemWidth | El ancho mínimo permitido para los ítems que visualmente están comprimidos. | 41 | | maxSmallItemWidth | El ancho máximo permitido para los ítems que visualmente están comprimidos. | 42 | | contentPadding | Es el espacio que se agregará alrededor del contenido, puede ser usado para agregar espacio antes del primer ítem y después del último. | 43 | 44 | #### CarouselState 45 | 46 | ```kotlin frame="terminal" 47 | @ExperimentalMaterial3Api 48 | @Composable 49 | fun rememberCarouselState( 50 | initialItem: Int = 0, 51 | itemCount: () -> Int, 52 | ) 53 | ``` 54 | 55 | | Atributo | Descripción | 56 | | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | 57 | | initialItem | Es el número del ítem en el que comenzará el carrusel. | 58 | | itemCount | Función lambda que devuelve el número total de ítems que tendrá el carrusel. Es una función para soportar casos donde se agreguen más ítems al carrusel. | 59 | 60 | ### Ejemplos 61 | 62 | ![Demostración de un HorizontalMultiBrowseCarousel](../../../assets/carousel/horizontalmultibrowsecarousel/horizontal-multi-browse-carousel.gif) 63 | 64 | Demostración de un HorizontalMultiBrowseCarousel 65 | 66 | ```kotlin frame="terminal" 67 | @ExperimentalMaterial3Api 68 | @Composable 69 | fun CarouselHorizontalExample() { 70 | val state = rememberCarouselState(itemCount = { 5 }, initialItem = 0) 71 | 72 | Column(verticalArrangement = Arrangement.Center) { 73 | HorizontalMultiBrowseCarousel( 74 | state = state, 75 | preferredItemWidth = 250.dp, 76 | modifier = Modifier.height(200.dp), 77 | itemSpacing = 10.dp 78 | ) { page -> 79 | Box( 80 | modifier = 81 | Modifier 82 | .padding(10.dp) 83 | .background(Color.Blue) 84 | .fillMaxSize() 85 | .aspectRatio(0.5f), 86 | contentAlignment = Alignment.Center 87 | ) { 88 | Text(text = page.toString(), fontSize = 32.sp, color = Color.White) 89 | } 90 | } 91 | } 92 | } 93 | ``` 94 | -------------------------------------------------------------------------------- /src/content/docs/carousel/horizontalUncontainedCarousel.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: HorizontalUncontainedCarousel 3 | description: Nuevo elemento para mostrar múltiples ítems 4 | --- 5 | 6 | | Material 3 | 7 | | :---------------------------------------------------------------------------------------------------------------------------------------------: | 8 | | ![Demostración de un HorizontalUncontainedCarousel](../../../assets/carousel/horizontaluncontainedcarousel/horizontal-uncontained-carousel.gif) | 9 | 10 | ## Implementación 11 | 12 | A partir de la versión `1.3.0` de _compose_ podemos hacer uso del `HorizontalUncontainedCarousel`, un nuevo elemento que permite tener un carrusel con múltiples ítems. 13 | 14 | ### Definición del componente 15 | 16 | ```kotlin frame="terminal" 17 | @ExperimentalMaterial3Api 18 | @Composable 19 | fun HorizontalUncontainedCarousel( 20 | state: CarouselState, 21 | itemWidth: Dp, 22 | modifier: Modifier = Modifier, 23 | itemSpacing: Dp = 0.dp, 24 | flingBehavior: TargetedFlingBehavior = CarouselDefaults.noSnapFlingBehavior(), 25 | contentPadding: PaddingValues = PaddingValues(0.dp), 26 | content: @Composable CarouselItemScope.(itemIndex: Int) -> Unit 27 | ) 28 | ``` 29 | 30 | | Atributo | Descripción | 31 | | -------------- | --------------------------------------------------------------------------------------------------------------------------------------- | 32 | | state | CarouselState. Se utiliza para controlar el estado del componente. | 33 | | itemWidth | El ancho de cada ítem del carrusel. | 34 | | modifier | Modificador que aplicará al composable. | 35 | | itemSpacing | Es el espacio que existirá entre cada ítem. | 36 | | flingBehavior | TargetedFlingBehavior. Es la clase que define el comportamiento del desplazamiento. | 37 | | contentPadding | Es el espacio que se agregará alrededor del contenido. Puede ser usado para agregar espacio antes del primer ítem y después del último. | 38 | 39 | #### CarouselState 40 | 41 | ```kotlin frame="terminal" 42 | @ExperimentalMaterial3Api 43 | @Composable 44 | fun rememberCarouselState( 45 | initialItem: Int = 0, 46 | itemCount: () -> Int, 47 | ) 48 | 49 | ``` 50 | 51 | ### Ejemplos 52 | 53 | ![Demostración de un HorizontalUncontainedCarousel](../../../assets/carousel/horizontaluncontainedcarousel/horizontal-uncontained-carousel.gif) 54 | 55 | Demostración de un HorizontalUncontainedCarousel 56 | 57 | ```kotlin frame="terminal" 58 | HorizontalUncontainedCarousel( 59 | state = state, 60 | itemWidth = 250.dp, 61 | itemSpacing = 10.dp, 62 | modifier = Modifier.height(300.dp) 63 | ) { page -> 64 | Box( 65 | modifier = 66 | Modifier 67 | .padding(10.dp) 68 | .background(Color.Blue) 69 | .fillMaxSize() 70 | .height(100.dp), 71 | contentAlignment = Alignment.Center 72 | ) { 73 | Text(text = page.toString(), fontSize = 32.sp, color = Color.White) 74 | } 75 | } 76 | ``` 77 | -------------------------------------------------------------------------------- /src/content/docs/checkbox/checkbox.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Checkbox 3 | description: Aprende a usar el composable Checkbox en Jetpack Compose. 4 | sidebar: 5 | badge: 6 | text: Nuevo 7 | variant: tip 8 | --- 9 | 10 | import { Tabs, TabItem } from "@astrojs/starlight/components"; 11 | 12 | | Material| Material 3| 13 | | :----------------: | :------: | 14 | | ![Imagen del componente Checkbox - Material](../../../assets/checkbox/checkbox-header-material.png) | ![Imagen del componente Checkbox - Material 3](../../../assets/checkbox/checkbox-header-material-3.png) | 15 | 16 | Los `checkbox` permiten a los usuarios seleccionar uno o más elementos de un conjunto. Los `checkbox` pueden activar o desactivar una opción. 17 | 18 | Utilice los `checkbox` para: 19 | 20 | - Seleccione una o más opciones de una lista 21 | - Presentar una lista que contenga subselecciones 22 | - Activar o desactivar un elemento en un entorno de escritorio 23 | 24 | ## Implementación 25 | 26 | ### Definición del componente 27 | 28 | 29 | 30 | 31 | ```kotlin frame="terminal" 32 | @Composable 33 | fun Checkbox( 34 | checked: Boolean, 35 | onCheckedChange: ((Boolean) -> Unit)?, 36 | modifier: Modifier = Modifier, 37 | enabled: Boolean = true, 38 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 39 | colors: CheckboxColors = CheckboxDefaults.colors() 40 | ): Unit 41 | ``` 42 | Atributo | Descripción 43 | ------ | ----------- 44 | checked | Si este `checkbox` está marcado o desactivado. 45 | onCheckedChange | devolución de llamada que se invocará cuando se haga clic en el `checkbox`, por lo tanto, se solicita el cambio de estado comprobado. Si es nulo, es pasivo y depende completamente de un componente de nivel superior para controlar el estado "comprobado". 46 | modifier | Modificador a aplicar a este `checkbox`. 47 | enabled | si el componente está habilitado o atenuado. 48 | interactionSource | MutableInteractionSource que representa el flujo de interacciones para este `checkbox`. Puede crear y pasar su propio MutableInteractionSource recordado si desea observar las interacciones y personalizar la apariencia / comportamiento de este `checkbox` en diferentes interacciones. 49 | colors | Colores del `checkbox` que se utilizarán para determinar el color de la marca de verificación / casilla / borde en diferentes estados. Consulte CheckboxDefaults.colors. 50 | 51 | 52 | 53 | 54 | 55 | ```kotlin frame="terminal" 56 | @Composable 57 | fun Checkbox( 58 | checked: Boolean, 59 | onCheckedChange: ((Boolean) -> Unit)?, 60 | modifier: Modifier = Modifier, 61 | enabled: Boolean = true, 62 | colors: CheckboxColors = CheckboxDefaults.colors(), 63 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() } 64 | ): Unit 65 | ``` 66 | Atributo | Descripción 67 | ------ | ----------- 68 | checked | Si este `checkbox` está marcado o desactivado. 69 | onCheckedChange | Se llama cuando se hace clic en este `checkbox`. Si es nulo, este `checkbox` no será interactivo, a menos que otra cosa controle sus eventos de entrada y actualice su estado. 70 | modifier | Modificador a aplicar a este `checkbox`. 71 | enabled | Controla el estado habilitado de este `checkbox`. Cuando es false, este componente no responderá a la entrada del usuario y aparecerá visualmente deshabilitado y deshabilitado para los servicios de accesibilidad. 72 | colors | Colores del `checkbox` que se usarán para resolver los colores utilizados para este `checkbox` en diferentes estados. Consulte CheckboxDefaults.colors. 73 | interactionSource | la MutableInteractionSource representa la secuencia de interacciones para este `checkbox`. Puede crear y pasar su propia instancia recordada para observar las interacciones y personalizar la apariencia / comportamiento de este `checkbox` en diferentes estados. 74 | 75 | 76 | 77 | 78 | :::tip[Fuente] 79 | Puedes acceder a la documentación oficial del componente 80 | [desde aquí (M2)](https://developer.android.com/reference/kotlin/androidx/compose/material/package-summary#Checkbox(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.foundation.interaction.MutableInteractionSource,androidx.compose.material.CheckboxColors)) 81 | o [desde aquí (M3)](https://developer.android.com/reference/kotlin/androidx/compose/material3/package-summary#Checkbox(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.material3.CheckboxColors,androidx.compose.foundation.interaction.MutableInteractionSource)). 82 | ::: 83 | 84 | ### Ejemplos 85 | 86 | 87 | 88 | 89 |
![Checkbox](../../../assets/checkbox/checkbox-example-material.png)
90 | 91 | ```kotlin "androidx.compose.material.Checkbox" title="CheckboxM2Default" frame="terminal" 92 | import androidx.compose.material.Checkbox 93 | @Composable 94 | fun CheckboxDefault() { 95 | val checkedState = remember { mutableStateOf(true) } 96 | Checkbox( 97 | checked = checkedState.value, 98 | onCheckedChange = { checkedState.value = it } 99 | ) 100 | } 101 | ``` 102 |
103 | 104 | 105 | 106 |
![Checkbox](../../../assets/checkbox/checkbox-example-material-3.png)
107 | 108 | ```kotlin "androidx.compose.material3.Checkbox" title="CheckboxM3Default" frame="terminal" 109 | import androidx.compose.material3.Checkbox 110 | @Composable 111 | fun CheckboxDefault() { 112 | val checkedState = remember { mutableStateOf(true) } 113 | Checkbox( 114 | checked = checkedState.value, 115 | onCheckedChange = { checkedState.value = it } 116 | ) 117 | } 118 | ``` 119 | 120 |
121 |
-------------------------------------------------------------------------------- /src/content/docs/chips/assist-chip.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: AssistChip 3 | description: Aprende a usar el composable AssistChip en Jetpack Compose. 4 | --- 5 | 6 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 7 | 8 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 9 | 10 | | Material 3| 11 | | :------: | 12 | | ![Imagen del componente AssistChip - Material 3](../../../assets/chip/assist-chip/chip-assist-material-3-example.webp) | 13 | 14 | El componente `AssistChip` tiene como propósito principal orientar al usuario mientras realiza una tarea en la interfaz. Su apariencia se caracteriza por ser temporal y surge en respuesta a las acciones del usuario. Un ejemplo típico de uso incluye guiar al usuario a lo largo de un flujo de trabajo o proporcionar información relevante en un contexto específico. En resumen, el AssistChip mejora la experiencia del usuario al ofrecer orientación y respuesta contextual durante la interacción. 15 | 16 | ## Implementación 17 | 18 | ### Definición del componente 19 | 20 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 21 | 22 | 23 | 24 | 25 | ```kotlin frame="terminal" 26 | @ExperimentalMaterial3Api 27 | @Composable 28 | @ComposableInferredTarget 29 | public fun AssistChip( 30 | onClick: () -> Unit, 31 | label: @Composable () -> Unit, 32 | modifier: Modifier, 33 | enabled: Boolean, 34 | leadingIcon: @Composable() (() -> Unit)?, 35 | trailingIcon: @Composable() (() -> Unit)?, 36 | shape: Shape, 37 | colors: ChipColors, 38 | elevation: ChipElevation?, 39 | border: ChipBorder?, 40 | interactionSource: MutableInteractionSource 41 | ): Unit 42 | ``` 43 | 44 | Atributo | Descripción 45 | ------ | ----------- 46 | onClick | Se llama cuando se hace clic en el chip. 47 | label | El contenido del chip definido como un composable. 48 | modifier | Modificador que se aplicará al chip. 49 | enabled | Cuando está deshabilitado, el chip no responderá a la entrada del usuario. También aparecerá visualmente deshabilitado y desactivado para los servicios de accesibilidad. 50 | leadingIcon | Icono opcional que se mostrará al principio del chip, antes del texto de contenido. 51 | trailingIcon | Icono opcional que se mostrará al final del chip, después del texto de contenido. 52 | shape | La forma del chip, que puede ser un rectángulo, un círculo, etc. 53 | colors | ChipColors que se utilizarán para determinar el color de fondo y contenido para este chip en diferentes estados. Consulta ChipDefaults.chipColors. 54 | elevation | La elevación del chip, que afecta su sombra. 55 | border | Borde que se dibujará alrededor del chip. Pasa null aquí para no tener borde. 56 | interactionSource | La MutableInteractionSource representa el flujo de interacciones para este chip. Puedes crear y pasar tu propia MutableInteractionSource si deseas observar interacciones y personalizar la apariencia/comportamiento de este componente en diferentes interacciones. 57 | 58 | 59 | 60 | 61 | [comment]: <> (No modifiques el tip) 62 | 63 | :::tip[Fuente] 64 | Puedes acceder a la documentación oficial de AssistChip de material 3: 65 | [desde aquí ](https://developer.android.com/jetpack/compose/components/chip?hl=es-419#assist) 66 | ::: 67 | 68 | ### Ejemplo de Assist Chip 69 | 70 | 71 | 72 | 73 | 74 |
![Imagen del componente AssistChip - Material 3](../../../assets/chip/assist-chip/chip-assist-material-3-example.webp)
75 | 76 | ```kotlin frame="terminal" 77 | @OptIn(ExperimentalMaterial3Api::class) 78 | @Composable 79 | fun exampleAssistChip() { 80 | AssistChip( 81 | modifier = Modifier.padding(20.dp), 82 | onClick = { Log.d("Assist chip", "Hi from assist chip") }, 83 | label = { Text("Doc de Asistencia") }, 84 | ) 85 | } 86 | ``` 87 | 88 |
89 |
-------------------------------------------------------------------------------- /src/content/docs/chips/filter-chip.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: FilterChip 3 | description: Aprende a usar el composable FilterChip en Jetpack Compose. 4 | --- 5 | 6 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 7 | 8 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 9 | 10 | | Material 3| 11 | | :------: | 12 | | ![Imagen del componente FilterChip - Material ](../../../assets/chip/filter-chip/chip-filter-material-3-example.webp) | 13 | 14 | El componente `FilterChip` tiene como propósito permitir a los usuarios refinar el contenido de un conjunto de opciones según sus preferencias. En términos de interactividad, los usuarios pueden seleccionar o deseleccionar estas opciones según sus necesidades. Además, algunas de estas opciones pueden incluir un ícono de marca de verificación para indicar su selección. Un ejemplo práctico de uso sería emplear este componente para filtrar resultados en una lista o conjunto de datos, ofreciendo a los usuarios la capacidad de personalizar y enfocar la información según sus criterios específicos. 15 | 16 | ## Implementación 17 | 18 | ### Definición del componente 19 | 20 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 21 | 22 | 23 | 24 | 25 | ```kotlin frame="terminal" 26 | @ExperimentalMaterial3Api 27 | @Composable 28 | @ComposableInferredTarget 29 | public fun FilterChip( 30 | selected: Boolean, 31 | onClick: () -> Unit, 32 | label: @Composable () -> Unit, 33 | modifier: Modifier, 34 | enabled: Boolean, 35 | leadingIcon: @Composable() (() -> Unit)?, 36 | trailingIcon: @Composable() (() -> Unit)?, 37 | shape: Shape, 38 | colors: SelectableChipColors, 39 | elevation: SelectableChipElevation?, 40 | border: SelectableChipBorder?, 41 | interactionSource: MutableInteractionSource 42 | ): Unit 43 | ``` 44 | 45 | Atributo | Descripción 46 | ------ | ----------- 47 | selected | Indica si el chip está seleccionado o no. 48 | onClick | Se llama cuando se hace clic en el chip. 49 | label | El contenido del chip definido como un composable. 50 | modifier | Modificador que se aplicará al chip. 51 | enabled | Cuando está deshabilitado, el chip no responderá a la entrada del usuario. También aparecerá visualmente deshabilitado y desactivado para los servicios de accesibilidad. 52 | leadingIcon | Icono opcional que se mostrará al principio del chip, antes del texto de contenido. 53 | trailingIcon | Icono opcional que se mostrará al final del chip, después del texto de contenido. 54 | shape | La forma del chip, que puede ser un rectángulo, un círculo, etc. 55 | colors | `SelectableChipColors` que se utilizarán para determinar el color de fondo y contenido para este chip en diferentes estados. Consulta `ChipDefaults.selectableChipColors`. 56 | elevation | La elevación del chip, que afecta su sombra en estados seleccionados. 57 | border | Borde que se dibujará alrededor del chip en estados seleccionados. Pasa null aquí para no tener borde. 58 | interactionSource | La `MutableInteractionSource` representa el flujo de interacciones para este chip. Puedes crear y pasar tu propia `MutableInteractionSource` si deseas observar interacciones y personalizar la apariencia/comportamiento de este componente en diferentes interacciones. 59 | 60 | 61 | 62 | 63 | [comment]: <> (No modifiques el tip) 64 | 65 | :::tip[Fuente] 66 | Puedes acceder a la documentación oficial de FilterChip de material 3: 67 | [desde aquí](https://developer.android.com/jetpack/compose/components/chip?hl=es-419#filter). 68 | ::: 69 | 70 | ### Ejemplo de Filter Chip 71 | 72 | 73 | 74 | 75 |
![Imagen del componente FilterChip - Material ](../../../assets/chip/filter-chip/chip-filter-material-3-example.webp)
76 | 77 | ```kotlin frame="terminal" 78 | @OptIn(ExperimentalMaterial3Api::class) 79 | @Composable 80 | fun exampleFilterChip() { 81 | FilterChip( 82 | modifier = Modifier.padding(20.dp), 83 | onClick = { Log.d("Filter chip", "Hi from filter chip") }, 84 | label = { Text("Doc de filtrado") }, 85 | selected = true 86 | ) 87 | } 88 | ``` 89 | 90 |
91 |
-------------------------------------------------------------------------------- /src/content/docs/chips/input-chip.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: InputChip 3 | description: Aprende a usar el composable InputChip en Jetpack Compose. 4 | --- 5 | 6 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 7 | 8 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 9 | 10 | | Material 3| 11 | | :------: | 12 | | ![Imagen del componente Chip de Entrada - Material 3](../../../assets/chip/input-chip/chip-input-material-3-example.webp) | 13 | 14 | El `inputChip` tiene como propósito representar la información proporcionada por el usuario de manera concisa y visualmente clara. Su contenido puede consistir en un ícono acompañado de texto descriptivo. En términos de funcionalidad, brinda al usuario la opción de eliminar el chip, generalmente a través de un botón "X", lo que permite una gestión fácil y rápida de las selecciones. Un ejemplo común de uso incluye la visualización de las selecciones de un menú o la etiquetación de contenido, proporcionando una manera efectiva de mostrar y gestionar la información proporcionada por el usuario de manera compacta y accesible. 15 | 16 | ## Implementación 17 | 18 | ### Definición del componente 19 | 20 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 21 | 22 | 23 | 24 | 25 | ```kotlin frame="terminal" 26 | @ExperimentalMaterial3Api 27 | @Composable 28 | @ComposableInferredTarget 29 | public fun InputChip( 30 | selected: Boolean, 31 | onClick: () -> Unit, 32 | label: @Composable () -> Unit, 33 | modifier: Modifier, 34 | enabled: Boolean, 35 | leadingIcon: @Composable() (() -> Unit)?, 36 | avatar: @Composable() (() -> Unit)?, 37 | trailingIcon: @Composable() (() -> Unit)?, 38 | shape: Shape, 39 | colors: SelectableChipColors, 40 | elevation: SelectableChipElevation?, 41 | border: SelectableChipBorder?, 42 | interactionSource: MutableInteractionSource 43 | ): Unit 44 | ``` 45 | 46 | Atributo | Descripción 47 | ------ | ----------- 48 | selected | Indica si el chip está seleccionado o no. 49 | onClick | Se llama cuando se hace clic en el chip. 50 | label | El contenido del chip definido como un composable. 51 | modifier | Modificador que se aplicará al chip. 52 | enabled | Cuando está deshabilitado, el chip no responderá a la entrada del usuario. También aparecerá visualmente deshabilitado y desactivado para los servicios de accesibilidad. 53 | leadingIcon | Icono opcional que se mostrará al principio del chip, antes del texto de contenido. 54 | avatar | Avatar opcional que se mostrará en el chip. 55 | trailingIcon | Icono opcional que se mostrará al final del chip, después del texto de contenido. 56 | shape | La forma del chip, que puede ser un rectángulo, un círculo, etc. 57 | colors | SelectableChipColors que se utilizarán para determinar el color de fondo y contenido para este chip en diferentes estados. Consulta ChipDefaults.selectableChipColors. 58 | elevation | La elevación del chip, que afecta su sombra en estados seleccionados. 59 | border | Borde que se dibujará alrededor del chip en estados seleccionados. Pasa null aquí para no tener borde. 60 | interactionSource | La MutableInteractionSource representa el flujo de interacciones para este chip. Puedes crear y pasar tu propia MutableInteractionSource si deseas observar interacciones y personalizar la apariencia/comportamiento de este componente en diferentes interacciones. 61 | 62 | 63 | 64 | 65 | [comment]: <> (No modifiques el tip) 66 | 67 | :::tip[Fuente] 68 | Puedes acceder a la documentación oficial de InputChip de material 3: 69 | [desde aquí](https://developer.android.com/jetpack/compose/components/chip?hl=es-419#input). 70 | ::: 71 | 72 | ### Ejemplo de Input Chip 73 | 74 | 75 | 76 | 77 |
![Imagen del componente Chip de Entrada - Material 3](../../../assets/chip/input-chip/chip-input-material-3-example.webp)
78 | 79 | ```kotlin frame="terminal" 80 | @OptIn(ExperimentalMaterial3Api::class) 81 | @Composable 82 | fun exampleInputChip() { 83 | val isChipEnable by remember { mutableStateOf(true) } 84 | 85 | InputChip( 86 | modifier = Modifier.padding(20.dp), 87 | onClick = { Log.d("Input chip", "Hi from input chip") }, 88 | label = { Text("Doc de Entrada") }, 89 | selected = isChipEnable 90 | ) 91 | } 92 | ``` 93 | 94 |
95 |
-------------------------------------------------------------------------------- /src/content/docs/chips/suggestion-chip.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: SuggestionChip 3 | description: Aprende a usar el composable SuggestionChip en Jetpack Compose. 4 | --- 5 | 6 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 7 | 8 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 9 | 10 | | Material 3| 11 | | :------: | 12 | | ![Imagen del componente SuggestionChip - Material ](../../../assets/chip/suggestion-chip/chip-suggestion-material-3-example.webp) | 13 | 14 | El `SuggestionChip` tiene como propósito facilitar a los usuarios la refinación del contenido de un conjunto de opciones. Estos chips son interactivos, permitiendo a los usuarios seleccionar o deseleccionar las sugerencias según sus preferencias. Algunos SuggestionChips pueden incluir un ícono de marca de verificación, proporcionando una indicación visual clara de la selección realizada. Un caso típico de uso sería emplear estos chips para filtrar resultados en una lista o conjunto de datos, ofreciendo a los usuarios sugerencias contextuales y la capacidad de personalizar la información que desean ver. 15 | 16 | ## Implementación 17 | 18 | ### Definición del componente 19 | 20 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 21 | 22 | 23 | 24 | 25 | ```kotlin frame="terminal" 26 | @ExperimentalMaterial3Api 27 | @Composable 28 | @ComposableInferredTarget 29 | public fun SuggestionChip( 30 | selected: Boolean, 31 | onClick: () -> Unit, 32 | label: @Composable () -> Unit, 33 | modifier: Modifier, 34 | enabled: Boolean, 35 | leadingIcon: @Composable() (() -> Unit)?, 36 | trailingIcon: @Composable() (() -> Unit)?, 37 | shape: Shape, 38 | colors: SelectableChipColors, 39 | elevation: SelectableChipElevation?, 40 | border: SelectableChipBorder?, 41 | interactionSource: MutableInteractionSource 42 | ): Unit 43 | ``` 44 | 45 | Atributo | Descripción 46 | ------ | ----------- 47 | selected | Indica si el chip está seleccionado o no. 48 | onClick | Se llama cuando se hace clic en el chip. 49 | label | El contenido del chip definido como un composable. 50 | modifier | Modificador que se aplicará al chip. 51 | enabled | Cuando está deshabilitado, el chip no responderá a la entrada del usuario. También aparecerá visualmente deshabilitado y desactivado para los servicios de accesibilidad. 52 | leadingIcon | Icono opcional que se mostrará al principio del chip, antes del texto de contenido. 53 | trailingIcon | Icono opcional que se mostrará al final del chip, después del texto de contenido. 54 | shape | La forma del chip, que puede ser un rectángulo, un círculo, etc. 55 | colors | `SelectableChipColors` que se utilizarán para determinar el color de fondo y contenido para este chip en diferentes estados. Consulta `ChipDefaults.selectableChipColors`. 56 | elevation | La elevación del chip, que afecta su sombra en estados seleccionados. 57 | border | Borde que se dibujará alrededor del chip en estados seleccionados. Pasa null aquí para no tener borde. 58 | interactionSource | La `MutableInteractionSource` representa el flujo de interacciones para este chip. Puedes crear y pasar tu propia `MutableInteractionSource` si deseas observar interacciones y personalizar la apariencia/comportamiento de este componente en diferentes interacciones. 59 | 60 | 61 | 62 | 63 | [comment]: <> (No modifiques el tip) 64 | 65 | :::tip[Fuente] 66 | Puedes acceder a la documentación oficial de SuggestionChip de material 3: 67 | [desde aquí](https://developer.android.com/jetpack/compose/components/chip?hl=es-419#suggestion). 68 | ::: 69 | 70 | ### Ejemplo de Filter Chip 71 | 72 | 73 | 74 | 75 |
![Imagen del componente SuggestionChip - Material ](../../../assets/chip/suggestion-chip/chip-suggestion-material-3-example.webp)
76 | 77 | ```kotlin frame="terminal" 78 | @OptIn(ExperimentalMaterial3Api::class) 79 | @Composable 80 | fun exampleInputChip() { 81 | SuggestionChip( 82 | modifier = Modifier.padding(20.dp), 83 | onClick = { Log.d("Filter chip", "Hi from filter chip") }, 84 | label = { Text("Doc de filtrado") }, 85 | selected = true 86 | ) 87 | } 88 | ``` 89 | 90 |
91 |
-------------------------------------------------------------------------------- /src/content/docs/divider/divider.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Divider 3 | description: A guide in my new Starlight docs site. 4 | --- -------------------------------------------------------------------------------- /src/content/docs/home/guide.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Aprende Jetpack Compose 3 | description: Tutorial completo de componentes de Jetpack Compose para aprender desde cero en español. 4 | --- 5 | 6 | import { Card, CardGrid } from "@astrojs/starlight/components"; 7 | import ExpandLinkCard from "../../../components/ExpandLinkCard.astro"; 8 | 9 |
![Logo Jetpack Compose](../../../assets/jetpackcomposelogo.png)
10 | 11 | Jetpack Compose es la nueva forma de crear vistas en Android utilizando únicamente Kotlin. Se trata de un kit de herramientas que nos permitirá compilar UIs nativas de una forma sencilla y rápida. Bajo la premisa de menos código y más potencia Google nos recomienda Jetpack Compose como la forma más optima para trabajar con vistas en Android. 12 | 13 | ## Listado de componentes 14 | 15 | 16 | 21 | 26 | 31 | 36 | 41 | 46 | 51 | 56 | 61 | 66 | 71 | 76 | 81 | 86 | 91 | 96 | 101 | 106 | 111 | 116 | 121 | 126 | 127 | -------------------------------------------------------------------------------- /src/content/docs/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: OpenCompose 3 | description: La mayor base de datos de `composables` de habla hispana por y para la comunidad. 4 | template: splash 5 | hero: 6 | tagline: La mayor base de datos de @Composables de habla hispana por y para la comunidad. 7 | image: 8 | file: ../../assets/opencomposelogo.png 9 | actions: 10 | - text: ¡Ir a la documentación! 11 | link: /home/guide/ 12 | icon: right-arrow 13 | variant: primary 14 | --- 15 | 16 | import { Card, CardGrid } from "@astrojs/starlight/components"; 17 | 18 | ## Next steps 19 | 20 | 21 | 22 | 23 | Decenas de `Composables` preparados y configurados para que mejores tus 24 | proyectos. 25 | 26 | 27 | 28 | Puedes añadir más ejemplos, componentes o vistas completas. ¡Colaboremos entre 29 | todos para tener la mejor documentación de habla hispana! 30 | 31 | 32 | 33 | Entra al Discord de la comunidad. 34 | 35 | 36 | 37 | Suscríbete a 38 | [AristiDevs](https://www.youtube.com/channel/UCIjEgHA1vatSR2K4rfcdNRg?sub_confirmation=1) 39 | para más contenido y apoyar el proyecto. 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/content/docs/lists/lazy-row.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: LazyRow 3 | description: Aprende a usar el composable LazyRow en Jetpack Compose. 4 | --- 5 | 6 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 7 | 8 | | Material | 9 | | :----------------: | 10 | | ![Imagen de ejemplo de uso de LazyRow](../../../assets/lists/lazyrow/lazyRow.png) | 11 | 12 | 13 | El `LazyRow` es un componente que crea y dispone los elementos que están visibles en el viewport del mismo, produciendo un desplazamiento horizontal, este sigue los principios de un `RecyclerView` 14 | los cuales son --reciclar-- los elementos individuales, reutilizar la vista para los elementos nuevos que se desplazaron y permitir mostrarlos. 15 | 16 | El primer `LazyRow` estable se añadió en la versión 1.2 de Jetpack Compose, antes de este existió el `ScrollableRow` pero este ha sido removido de toda documentación oficial 17 | por el mismo motivo de incentivar/obligar el uso de su reemplazo `LazyRow`, previo a 1.2 existen referencias de este como un componente en desarrollo, cabe mencionar que `LazyRow` no pertenece a **material.io** por lo que sus variantes han sido las funciones de extensión que este permite 18 | y ciertas mejoras en su comportamiento/procesamiento, para saber más sobre por qué `ScrollableRow` fue reemplazado por `LazyRow` visita el commit ofical de AOSP [aquí.](https://android-review.googlesource.com/c/platform/frameworks/support/+/1530328) 19 | 20 | ## Implementación 21 | 22 | ### Definición del componente 23 | 24 | El componente se ha mantenido igual desde su versión en Jetpack Compose [1.2](https://developer.android.com/jetpack/androidx/releases/compose-foundation?hl=es-419#1.2.0) 25 | 26 | 27 | 28 | 29 | ```kotlin frame="terminal" 30 | @Composable 31 | fun LazyRow( 32 | modifier: Modifier = Modifier, 33 | state: LazyListState = rememberLazyListState(), 34 | contentPadding: PaddingValues = PaddingValues(0.dp), 35 | reverseLayout: Boolean = false, 36 | horizontalArrangement: Arrangement.Horizontal = if (!reverseLayout) Arrangement.Start else Arrangement.End, 37 | verticalAlignment: Alignment.Vertical = Alignment.Top, 38 | flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior(), 39 | userScrollEnabled: Boolean = true, 40 | content: LazyListScope.() -> Unit 41 | ) 42 | ``` 43 | 44 | Atributo | Descripción 45 | ------ | ----------- 46 | modifier | Modificador que implementará el composable (_Opcional_). 47 | state | Un objeto de estado que puede ser alojado para controlar y observar el desplazamiento (_Opcional_). 48 | contentPadding | Añade un espaciado de manera interna a lo largo de los lados del componente (_Opcional_). 49 | reverseLayout | Invertir la dirección de desplazamiento y diseño. Cuando es verdadero, los elementos se presentan en orden inverso (_Opcional_). 50 | horizontalArrangement | La disposición horizontal de los componentes hijos, permitiendo agregar espacios (_Opcional_). 51 | verticalAlignment | Aliniar los elementos verticalment (_Opcional_). 52 | flingBehavior | Lógica para personalizar el comportamiento del desplazamiento (_Opcional_). 53 | userScrollEnabled | Permite el desplazamiento a través de los gestos del usuario o las acciones de accesibilidad (_Opcional_). 54 | content | El contenido de la lista. 55 | 56 | 57 | 58 | 59 | :::tip[Fuente] 60 | Puedes acceder a la documentación oficial de Google 61 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyRow(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foundation.layout.PaddingValues,kotlin.Boolean,androidx.compose.foundation.layout.Arrangement.Horizontal,androidx.compose.ui.Alignment.Vertical,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,kotlin.Function1)). 62 | ::: 63 | 64 | ### Ejemplos 65 | Existen tres formas para añadir elementos en `LazyRow` mediante sus funciones de extensión: 66 | 67 | 68 | 69 | 70 | ##### LazyRow con item 71 | 72 | Usando `item` para definir el elemento que será renderizarado en la pantalla, puedes declarar elemento por elemento simplemente instanciando un nuevo `item` en el contenido de `LazyRow`. 73 | 74 |
75 | ![LazyRow Ejemplo item](../../../assets/lists/lazyrow/lazyRowItem.png) 76 |
77 | 78 | ```kotlin frame="terminal" 79 | LazyRow( 80 | modifier = Modifier.padding(top = 16.dp) 81 | ) { 82 | contacts.forEach { 83 | item(it){ 84 | Avatar(name = it, isFriend = Random.nextBoolean()) 85 | } 86 | } 87 | } 88 | ``` 89 | 90 | ##### LazyRow con items 91 | 92 | Con `items` debes definir el número total de elementos, consecuentemente la invocación lambda proporcionará el index de cada elemento con el nombre de `it`, 93 | esto parece ser lo mismo que un forEach como el ejemplo anterior pero difieren en sintaxis y método de iteración, el forEach itera directamente sobre los elementos de la lista mientras que `items` es más conciso y se basa en índices. 94 | 95 |
96 | ![LazyRow Ejemplo items](../../../assets/lists/lazyrow/lazyRowItems.png ) 97 |
98 | 99 | ```kotlin frame="terminal" 100 | LazyRow( 101 | modifier = Modifier.padding(top = 16.dp) 102 | ) { 103 | items(contacts.size) { it -> 104 | Avatar(name = contacts[it] + it, isFriend = Random.nextBoolean()) 105 | } 106 | } 107 | ``` 108 | 109 | ##### LazyRow con itemsIndexed 110 | 111 | El uso de `itemsIndexed` permite acceder tanto al índice como al valor de cada elemento directamente dentro de la función Composable, lo que brinda más flexibilidad en la creación de elementos según la posición dentro de la lista. 112 | 113 |
114 | ![LazyRow Ejemplo itemsIndexed](../../../assets/lists/lazyrow/lazyRowIidexedItems.png) 115 |
116 | 117 | ```kotlin frame="terminal" 118 | LazyRow( 119 | modifier = Modifier.padding(top = 16.dp) 120 | ) { 121 | itemsIndexed(contacts) { index, contact -> 122 | Avatar(name = contact, isFriend = index % 2 == 0) 123 | } 124 | } 125 | ``` 126 | 127 | :::note[Nota] 128 | Puedes combinar el uso de `item`, `items` e `itemsIndexed`, ¡En la misma `LazyRow`! 129 | ::: 130 |
131 |
132 | 133 | :::tip[Fuente] 134 | Para saber más de estas funciones de extensión no dudes visitar la documentacion oficial [aquí](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#extension-functions) 135 | ::: -------------------------------------------------------------------------------- /src/content/docs/lists/list-item.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: List item 3 | description: El componente List item es un componente de Jetpack Compose que se utiliza para representar un elemento de una lista. Puede ser utilizado en cualquier tipo de lista, ya sea una lista vertical o horizontal. 4 | --- 5 | 6 | 7 | import { Tabs, TabItem } from "@astrojs/starlight/components"; 8 | 9 | | Material| Material 3| 10 | | :----------------: | :------: | 11 | ![Imagen del componente ListItem - Material](../../../assets/lists/list-item/materialListItem.png)|![Imagen del componente ListItem - Material 3](../../../assets/lists/list-item/listItem_material3.png) 12 | 13 | El componente `ListItem` es un componente de `Jetpack Compose` que se utiliza para representar un elemento de una lista. Puede ser utilizado en cualquier tipo de lista, ya sea una lista vertical o horizontal. 14 | 15 | Cada elemento de la lista se muestra como una entidad independiente, con su propio conjunto de atributos, como texto, iconos e imágenes. 16 | 17 | Las listas tienden a tener una estructura más jerárquica, donde cada elemento de la lista ocupa su propio espacio y tiene el mismo peso visual. 18 | ## Implementación 19 | 20 | ### Definición del componente: 21 | 22 | 23 | 24 | ```kotlin frame="terminal" 25 | @Composable 26 | fun ListItem( 27 | text: String, 28 | modifier: Modifier = Modifier, 29 | onClick: () -> Unit = {}, 30 | ) 31 | ``` 32 | #### Los parámetros del componente en Material son los siguientes: 33 | En Material, el componente List item se implementa como un componente independiente. Tiene los siguientes atributos: 34 | 35 | Atributo | Descripción 36 | ------ | ----------- 37 | text | El texto que se mostrará en el elemento de la lista. 38 | modifier | El modifier que se aplicará al elemento de la lista. 39 | onClick | Una función que se ejecutará cuando el elemento de la lista sea tocado. 40 | 41 | 42 | 43 | 44 | 45 | En Material 3 los `ListItem` son increíblemente fácil e intuitivos. Para comenzar, deberás agregar la `dependencia` Material 3 a tu proyecto y luego simplemente agregar un componente `ListItem`. 46 | 47 | Uno de los principales beneficios de utilizar ListItem en Material 3 es que es increíblemente fácil de usar y personalizar. Esto lo convierte en un componente ideal para desarrolladores que desean crear listas hermosas y funcionales sin perder demasiado tiempo en la personalización. 48 | 49 | ```kotlin frame="terminal" 50 | @Composable 51 | fun ListItem( 52 | text: String, 53 | modifier: Modifier = Modifier, 54 | isChecked: Boolean, 55 | onClick: () -> Unit = {}, 56 | ) 57 | 58 | ``` 59 | #### Los parámetros del componente en Material 3 son los siguientes: 60 | 61 | Atributo | Descripción 62 | ------ | ----------- 63 | text | El texto que se mostrará en el elemento de la lista. 64 | modifier | El modifier que se aplicará al elemento de la lista. 65 | isChecked | Un booleano que indica si el elemento de la lista está seleccionado. 66 | onClick | Una función que se ejecutará cuando el elemento de la lista sea tocado. 67 | 68 | 69 | 70 | 71 | 72 | 73 | :::tip[Fuente] 74 | Puedes acceder a la documentación oficial de Google 75 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 76 | ::: 77 | 78 | ### Ejemplos 79 | 80 | 81 | 82 | 83 |
![Imagen del componente List Item - Material](../../../assets/lists/list-item/materialListItem.png)
84 | 85 | ```kotlin frame="terminal" 86 | @Composable 87 | fun ItemOneLine() { 88 | ListItem( 89 | headlineContent = { Text("AristiDevs") }, 90 | leadingContent = { 91 | Icon( 92 | Icons.Filled.Favorite, 93 | contentDescription = "Corazon icon", 94 | ) 95 | } 96 | ) 97 | } 98 | 99 | ``` 100 | 101 |
102 | 103 | 104 |
![Imagen del componente List Item - Material 3](../../../assets/lists/list-item/material3item.png)
105 | ```kotlin frame="terminal" 106 | @Composable 107 | fun ItemMaterial3() { 108 | ListItem( 109 | headlineContent = { Text("Item de tres lineas") }, 110 | overlineContent = { Text("OVERLINE") }, 111 | supportingContent = { Text("Aris el mejor") }, 112 | leadingContent = { 113 | Icon( 114 | Icons.Filled.Favorite, 115 | contentDescription = "Icono de corazon", 116 | ) 117 | }, 118 | trailingContent = { Text("JetpackCompose.Pro") } 119 | ) 120 | } 121 | ``` 122 | 123 | Utilizar ListItem en Material 3 es una excelente adición al desarrollo de aplicaciones de Android, ya que proporciona una forma sencilla y optimizada de crear listas además de LazyColumn o LazyRow. 124 | 125 | Este nuevo componente es fácil de usar y personalizar, incluso podríamos utilizarlo como un `scaffold` u otro tipo de layout dedicado a otros componentes. 126 | 127 | PD: ¡No tiene que usarse exclusivamente en un ListItem! 128 | 129 |
130 |
131 | -------------------------------------------------------------------------------- /src/content/docs/menus/dropdown-menu-item.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: DropdownMenuItem 3 | description: Aprende a usar el composable DropdownMenuItem en Jetpack Compose. 4 | sidebar: 5 | order: 0 6 | --- 7 | 8 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 9 | 10 | | Material| Material 3| 11 | | :----------------: | :------: | 12 | ![Imagen del componente - Material [DropdownMenuItem]](../../../assets/menus/dropdownMenuItem/DropdownMenuItem-Material.png)|![Imagen del componente - Material 3 [DropdownMenu]](../../../assets/menus/dropdownMenuItem/DropdownMenuItem-Material3.png) 13 | 14 | DropdownMenuItem es un composable que representa un ítem dentro de un menú desplegable en Jetpack Compose. Es útil para mostrar una lista de opciones que el usuario puede seleccionar. 15 | ## Implementación 16 | ### Definición del componente 17 | 18 | 19 | 20 | 21 | 22 | ```kotlin frame="terminal" 23 | @Composable 24 | fun DropdownMenuItem( 25 | onClick: () -> Unit, 26 | modifier: Modifier = Modifier, 27 | enabled: Boolean = true, 28 | contentPadding: PaddingValues = MenuDefaults.ItemContentPadding, 29 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 30 | content: @Composable RowScope.() -> Unit 31 | ) 32 | ``` 33 | #### Los parámetros del componente en Material son los siguientes: 34 | 35 | Atributo | Descripción 36 | ------ | ----------- 37 | onClick | Lambda que se invoca cuando se hace clic en el ítem. 38 | modifier | Modificador que implementará el composable. 39 | enabled | Indica si el ítem está habilitado para interacción. 40 | contentPadding | Espaciado interno alrededor del contenido del ítem. 41 | interactionSource | Fuente de interacción para manejar las interacciones del usuario. 42 | content | Contenido composable que se mostrará dentro del ítem. 43 | 44 | 45 | 46 | 47 | ```kotlin frame="terminal" 48 | @Composable 49 | fun DropdownMenuItem( 50 | text: @Composable () -> Unit, 51 | onClick: () -> Unit, 52 | modifier: Modifier = Modifier, 53 | leadingIcon: (@Composable () -> Unit)? = null, 54 | trailingIcon: (@Composable () -> Unit)? = null, 55 | enabled: Boolean = true, 56 | colors: MenuItemColors = MenuDefaults.itemColors(), 57 | contentPadding: PaddingValues = MenuDefaults.DropdownMenuItemContentPadding, 58 | interactionSource: MutableInteractionSource? = null 59 | ) 60 | ``` 61 | #### Los parámetros del componente DropdownMenu: 62 | 63 | Atributo | Descripción 64 | ------ | ----------- 65 | text | texto del elemento del menú 66 | onClick | Lambda que se invoca cuando se hace clic en el ítem. 67 | modifier | Modificador que implementará el composable. 68 | leadingIcon | Icono inicial opcional que se mostrará al principio del texto del elemento. 69 | trailingIcon | Icono final opcional que se mostrará al final del texto del elemento. Esta ranura de icono final también puede aceptarse Textpara indicar un método abreviado de teclado. 70 | enabled | Controla el estado habilitado de este elemento de menú. Cuando sea así false, este componente no responderá a la entrada del usuario y aparecerá visualmente deshabilitado y deshabilitado para los servicios de accesibilidad. 71 | colors | MenuItemColorsque se utilizará para resolver los colores utilizados para este elemento de menú en diferentes estados. Ver MenuDefaults.itemColors. 72 | contentPadding | El espaciado aplicado al contenido de este elemento de menú. 73 | interactionSource | Un elevador opcional MutableInteractionSourcepara observar y emitir Interactionmensajes para este elemento del menú. Puede usar esto para cambiar la apariencia del elemento del menú o obtener una vista previa del elemento del menú en diferentes estados. Tenga en cuenta que, si nullse proporciona, las interacciones seguirán sucediendo internamente. 74 | 75 | 76 | 77 | 78 | 79 | [comment]: <> (No modifiques el tip) 80 | 81 | :::tip[Fuente] 82 | Puedes acceder a la documentación oficial de Google 83 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 84 | ::: 85 | 86 | ### Ejemplo de uso 87 | 88 | 89 | 90 | 91 | 92 |
![Imagen del componente DropdownMenu- Material Design](../../../assets/menus/dropdownMenuItem/DropdownMenu-Material.png)
93 | 94 | ```kotlin frame="terminal" 95 | var expanded by remember { mutableStateOf(false) } 96 | 97 | Box(modifier = Modifier 98 | .fillMaxSize() 99 | .wrapContentSize(Alignment.TopStart)) { 100 | IconButton(onClick = { expanded = true }) { 101 | Icon(Icons.Default.MoreVert, contentDescription = "Localized description") 102 | } 103 | DropdownMenu( 104 | expanded = expanded, 105 | onDismissRequest = { expanded = false } 106 | ) { 107 | DropdownMenuItem(onClick = { /* Handle refresh! */ }) { 108 | Text("Refresh") 109 | } 110 | DropdownMenuItem(onClick = { /* Handle settings! */ }) { 111 | Text("Settings") 112 | } 113 | Divider() 114 | DropdownMenuItem(onClick = { /* Handle send feedback! */ }) { 115 | Text("Send Feedback") 116 | } 117 | } 118 | } 119 | 120 | ``` 121 |
122 | 123 | 124 | 125 |
![Imagen del componente DropdownMenu- Material 3](../../../assets/menus/dropdownMenuItem/DropdownMenu-Material3.png)
126 | 127 | ```kotlin frame="terminal" 128 | var expanded by remember { mutableStateOf(false) } 129 | 130 | Box(modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.TopStart)) { 131 | IconButton(onClick = { expanded = true }) { 132 | Icon(Icons.Default.MoreVert, contentDescription = "Localized description") 133 | } 134 | DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) { 135 | DropdownMenuItem( 136 | text = { Text("Edit") }, 137 | onClick = { /* Handle edit! */ }, 138 | leadingIcon = { Icon(Icons.Outlined.Edit, contentDescription = null) } 139 | ) 140 | DropdownMenuItem( 141 | text = { Text("Settings") }, 142 | onClick = { /* Handle settings! */ }, 143 | leadingIcon = { Icon(Icons.Outlined.Settings, contentDescription = null) } 144 | ) 145 | HorizontalDivider() 146 | DropdownMenuItem( 147 | text = { Text("Send Feedback") }, 148 | onClick = { /* Handle send feedback! */ }, 149 | leadingIcon = { Icon(Icons.Outlined.Email, contentDescription = null) }, 150 | trailingIcon = { Text("F11", textAlign = TextAlign.Center) } 151 | ) 152 | } 153 | } 154 | ``` 155 | 156 |
157 |
158 | 159 | -------------------------------------------------------------------------------- /src/content/docs/pickers/time-picker.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Time Picker 3 | description: Aprende a usar el composable Time Picker en Jetpack Compose. 4 | --- 5 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 6 | 7 | 8 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 9 | 10 | | Material3 | 11 | |-----------| 12 | | ![TimePickerM3](../../../assets/pickers/timePicker/timePicker_m3.webp) | 13 | 14 | `Timepicker` ayuda a los usuarios a seleccionar un hora, o establecer una hora determinada. 15 | 16 | Muestra un selector que permite al usuario seleccionar la hora. Suscríbete a las actualizaciones a través de `TimePickerState`. 17 | 18 | ## Implementación 19 | 20 | ### Definición del componente 21 | 22 | [comment]: <> (Añade un ``TabItem`` por cada tipo de implementación que tenga) 23 | 24 | 25 | 26 | 27 | ```kotlin frame="terminal" 28 | @Composable 29 | @ExperimentalMaterial3Api 30 | fun TimePicker( 31 | state: TimePickerState, 32 | modifier: Modifier = Modifier, 33 | colors: TimePickerColors = TimePickerDefaults.colors(), 34 | layoutType: TimePickerLayoutType = TimePickerDefaults.layoutType(), 35 | ) 36 | ``` 37 | 38 | #### Parametros 39 | 40 | | Nombre| Descripción | 41 | |----------|----------| 42 | | state | Estado para este componente, permite suscribirse a cambios de `TimePickerState.hour` y `TimePickerState.minute`, y establecer la hora por defecto para este componente. | 43 | | modifiers| Modificador que va a ser aplicado a este componente | 44 | | colors | Colores `TimePickerColors` que seran usados para resolver los colores de este timepicker en diferentes estados. | 45 | |layoutType| Los diferentes `TimePickerLayoutType` soportados por este time picker, cambiara la posicion y tamaño de diferentes componentes de el timepicker | 46 | 47 | 48 | 49 | 50 | 51 | 52 | [comment]: <> (No modifiques el tip) 53 | 54 | :::tip[Fuente] 55 | Puedes acceder a la documentación oficial de Google 56 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 57 | ::: 58 | 59 | ### Ejemplos 60 | 61 | 62 | 63 | 64 | ![TimePicker Ejemplo](../../../assets/pickers/timePicker/timePicker_m3_example.webp) 65 | 66 | ```kotlin frame="terminal" 67 | @Composable 68 | @ExperimentalMaterial3Api 69 | fun MyTimePicker(){ 70 | val state = rememberTimePickerState() 71 | TimePicker( 72 | state = state, 73 | modifier = Modifier.padding(15.dp), 74 | colors = TimePickerDefaults.colors(), 75 | layoutType = TimePickerDefaults.layoutType() 76 | ) 77 | Text(text = "Hora seleccionada H:M = ${state.hour} : ${state.minute}") 78 | } 79 | ``` 80 | 81 | 82 | -------------------------------------------------------------------------------- /src/content/docs/previews/preview.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Preview 3 | description: Aprende a personalizar la vista previa de tus componentes en Compose. 4 | --- 5 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 6 | 7 | Las `previews` son una característica de Jetpack Compose que te permite visualizar y probar tus composables directamente en Android Studio sin tener que ejecutar la aplicación completa. Esto facilita el desarrollo y la iteración rápida. 8 | 9 | ## Implementación 10 | 11 | ### Definición 12 | 13 | ```kotlin frame="terminal" 14 | @Preview( 15 | val name: String, 16 | val group: String, 17 | val apiLevel: Int, 18 | val widthDp: Int, 19 | val heightDp: Int, 20 | val locale: String, 21 | val fontScale: Float, 22 | val showSystemUi: Boolean, 23 | val showBackground: Boolean, 24 | val uiMode: Int, 25 | val device: String, 26 | val wallpaper: Int 27 | ) 28 | @Composable 29 | fun MyComponent() { ... } 30 | ``` 31 | 32 | Atributo | Descripción 33 | ------ | ----------- 34 | name | El nombre que se mostrará en Android Studio para identificar la vista previa. 35 | group | Grupo al que pertenece la vista previa. Ayuda a organizar y agrupar vistas previas relacionadas. 36 | apiLevel | Nivel de la API de Android para el cual se debe renderizar la vista previa. 37 | widthDp | Ancho en píxeles de la vista previa. (No confundir con el ancho del componente) 38 | heightDp | Altura en píxeles de la vista previa. (No confundir con el alto del componente) 39 | locale | Configuración regional (idioma) para la vista previa. 40 | fontScale | Escala del tamaño de fuente para la vista previa. 41 | showSystemUi | Indica si se deben mostrar los elementos de la interfaz de usuario del sistema. 42 | showBackground | Indica si se debe mostrar el fondo de la vista previa. 43 | uiMode | Modo de interfaz de usuario para la vista previa (ej. Modo Oscuro). 44 | device | Dispositivo en el que se representa la vista previa 45 | wallpaper | Recurso de fondo de pantalla a utilizar en la vista previa. 46 | 47 | :::tip[Fuente] 48 | Puedes acceder a la documentación oficial de Google 49 | [desde aquí](https://developer.android.com/jetpack/compose/tooling/previews?hl=es-419). 50 | ::: 51 | 52 | ### Ejemplos 53 | ```kotlin frame="terminal" 54 | @Preview( 55 | name = "MyComposable Preview", 56 | group = "MyGroup", 57 | apiLevel = Build.VERSION_CODES.O, 58 | widthDp = 360, 59 | heightDp = 640, 60 | locale = "en_US", 61 | fontScale = 1.2f, 62 | showBackground = true, 63 | wallpaper = R.drawable.wallpaper_preview 64 | ) 65 | @Composable 66 | fun MyCompose() { 67 | // Tu código Compose aquí 68 | } 69 | ``` 70 | 71 | :::note[Limitaciones] 72 | Si tu componente recibe parametros dentro de la funciòn no podra ser pre-visualizada, pero si deseas ver una vista previa de tu componente, crea una función test que mande los parametros al componente que deseas visualizar. 73 | ::: 74 | 75 | ```kotlin frame="terminal" 76 | @Composable 77 | fun MyText( name: String ) { 78 | Text("Hola $name") 79 | } 80 | 81 | @Preview 82 | @Composable 83 | fun MyTextTest() { 84 | MyText("usuario") 85 | } 86 | ``` 87 | -------------------------------------------------------------------------------- /src/content/docs/progress-indicator/linear-progress-indicator.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Linear Progress Indicator 3 | description: Es una barra horizontal que se llena de izquierda a derecha. 4 | --- 5 | 6 | 7 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 8 | 9 | [comment]: <> (La ruta siempre será assets/nombeComponente/componente-header.webp) 10 | 11 | | Material | Material3 | 12 | |-----------|-----------| 13 | | ![LinearProgressIndicator Material2](../../../assets/indicators/linearProgressIdicator/lpi_m2.webp) | ![LinearProgressIndicator Material3](../../../assets/indicators/linearProgressIdicator/lpi_m3.webp) | 14 | 15 | Es una barra horizontal que se llena de izquierda a derecha. 16 | Los indicadores de progreso muestran visualmente el estado de una operación. Usan el movimiento para llamar la atención del usuario sobre qué tan cerca se encuentra el proceso (por ejemplo, cargar o procesar datos). 17 | 18 | También pueden indicar que el procesamiento se está llevando a cabo, sin hacer referencia a qué tan cerca está de completarse. 19 | 20 | ## Implementación 21 | 22 | ### Definición del componente 23 | 24 | [comment]: <> (Añade un `TabItem` por cada tipo de implementación que tenga) 25 | 26 | 27 | 28 | 29 | ```kotlin frame="terminal" 30 | @Composable 31 | fun LinearProgressIndicator( 32 | progress: @FloatRange(from = 0.0, to = 1.0) Float, 33 | modifier: Modifier = Modifier, 34 | color: Color = MaterialTheme.colors.primary, 35 | backgroundColor: Color = color.copy(alpha = IndicatorBackgroundOpacity), 36 | strokeCap: StrokeCap = StrokeCap.Butt 37 | ) 38 | ``` 39 | | Atributo | Descripción | 40 | |---------------|---------------| 41 | | progress | Es el progreso de este indicador, donde "0.0" representa ningún progreso y "1.0" representa el progreso completo. Los valores fuera de este rango son forzados a entrar en el rango. | 42 | | modifier | Modificador que implementará el composable. | 43 | | color | Color del indicador. | 44 | | backgroundColor | Color del fondo detras del indicador, visible cuando el progreso aun no ha rellenado el area del indicador. | 45 | | strokeCap | Capa para usar en los extremos del indicador. | 46 | 47 | 48 | 49 | ```kotlin frame="terminal" 50 | @Composable 51 | fun LinearProgressIndicator( 52 | progress: @FloatRange(from = 0.0, to = 1.0) Float, 53 | modifier: Modifier , 54 | color: Color , 55 | trackColor: Color , 56 | strokeCap: StrokeCap 57 | ) 58 | ``` 59 | | Atributo | Descripción | 60 | |---------------|---------------| 61 | | progress | Es el progreso actual que muestra el indicador. Pasa un Float entre "0.0" y "1.0". | 62 | | modifier | Modificador que implementará el composable. | 63 | | color | Es el color del indicador real. Es decir, la parte del componente que refleja el progreso y que abarca por completo el componente cuando se completa el progreso. | 64 | | trackColor | El color del recorrido sobre el que se dibuja el indicador. | 65 | | strokeCap | Capa de trazado para usar en los extremos del indicador. | 66 | 67 | 68 | 69 | [comment]: <> (No modifiques el tip) 70 | 71 | :::tip[Fuente] 72 | Puedes acceder a la documentación oficial de Google 73 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 74 | ::: 75 | 76 | ### Ejemplos 77 | 78 | 79 | 80 | #### Indeterminados 81 | Se realiza la animación de forma continua sin tener en cuenta el progreso. 82 | 83 | ![LinearProgressIndicator Material2 example](../../../assets/indicators/linearProgressIdicator/example_m2_indeterminate.webp) 84 | ```kotlin frame="terminal" 85 | @Composable 86 | fun IndeterminateInidicator() { 87 | Text("Indicador Indeterminado") 88 | Spacer(modifier = Modifier.height(30.dp)) 89 | LinearProgressIndicator() 90 | } 91 | ``` 92 | #### Determinados 93 | Muestra exactamente cuánto progreso se realizó. 94 | | Inicio | Cambio | 95 | |---------|---------| 96 | | ![Inicio ejemplo m2](../../../assets/indicators/linearProgressIdicator/example_m2_start.webp) | ![Cambio ejemplo m2](../../../assets/indicators/linearProgressIdicator/example_m2_end.webp) | 97 | ```kotlin frame="terminal" 98 | @Composable 99 | fun MyIndicator(){ 100 | var progress by remember { mutableStateOf(0.1f) } 101 | val animatedProgress by animateFloatAsState( 102 | targetValue = progress, 103 | animationSpec = ProgressIndicatorDefaults.ProgressAnimationSpec, label = "label" 104 | ) 105 | LinearProgressIndicator(progress = progress) 106 | Spacer(modifier = Modifier.height(30.dp)) 107 | OutlinedButton( 108 | onClick = { 109 | if (progress < 1f) progress += 0.1f 110 | } 111 | ) { 112 | Text("Incrementar") 113 | } 114 | } 115 | ``` 116 | 117 | 118 | #### Indeterminados 119 | Se realiza la animación de forma continua sin tener en cuenta el progreso. 120 | 121 | ![LinearProgressIndicator Material3 example](../../../assets/indicators/linearProgressIdicator/example_m3_indeterminate.webp) 122 | ```kotlin frame="terminal" 123 | @Composable 124 | fun IndeterminateIndicator() { 125 | Text("Indicador Indeterminado") 126 | LinearProgressIndicator() 127 | } 128 | ``` 129 | #### Determinados 130 | Muestra exactamente cuánto progreso se realizó. 131 | | Inicio | Cambio | 132 | |---------|---------| 133 | | ![ejemplo m3 inicio](../../../assets/indicators/linearProgressIdicator/example_m3_start.webp) | ![ejemplo cambio m3](../../../assets/indicators/linearProgressIdicator/example_m3_end.webp) | 134 | ```kotlin frame="terminal" 135 | @Composable 136 | fun DeterminateLinearProgressIniciador() { 137 | var progress by remember { mutableStateOf(0.1f) } 138 | val animatedProgress = animateFloatAsState( 139 | targetValue = progress, 140 | animationSpec = ProgressIndicatorDefaults.ProgressAnimationSpec 141 | ).value 142 | Column(horizontalAlignment = Alignment.CenterHorizontally) { 143 | Spacer(modifier = Modifier.height(30.dp)) 144 | Text("Determinado LinearProgressIndicator con botones") 145 | LinearProgressIndicator(progress = progress) 146 | Spacer(modifier = Modifier.height(30.dp)) 147 | OutlinedButton( 148 | onClick = { 149 | if (progress < 1f) progress += 0.1f 150 | }) { 151 | Text("Incrementar") 152 | } 153 | OutlinedButton( 154 | onClick = { 155 | if (progress > 0f) progress -= 0.1f 156 | } 157 | ) { 158 | Text("Decrementar") 159 | } 160 | } 161 | } 162 | ``` 163 | 164 | -------------------------------------------------------------------------------- /src/content/docs/reference/example.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Example Reference 3 | description: A reference page in my new Starlight docs site. 4 | --- 5 | 6 | Reference pages are ideal for outlining how things work in terse and clear terms. 7 | Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what your documenting. 8 | 9 | ## Further reading 10 | 11 | - Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework 12 | -------------------------------------------------------------------------------- /src/content/docs/sliders/section-slider.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Range Slider 3 | description: Aprende a usar el composable SectionSlider en Jetpack Compose. 4 | --- 5 | 6 | import { Tabs, TabItem } from '@astrojs/starlight/components'; 7 | 8 | | Material| Material 3| 9 | | :----------------: | :------: | 10 | ![Imagen del componente - Material [RangeSlider]](../../../assets/sliders/range-sliders/range-slider.png)|![RangeSlider - Material 3 [RangeSliderM3]](../../../assets/sliders/range-sliders/range-slider-material3.png) 11 | 12 | El componente `RangeSlider` en Jetpack Compose es un control deslizante que permite a los usuarios seleccionar un rango de valores dentro de un intervalo definido. Es particularmente útil para casos donde se requiere especificar un rango, como en filtros de precios, selección de tiempo, o cualquier situación donde se necesite definir un mínimo y un máximo. 13 | 14 | ## Implementación 15 | 16 | ### Definición del componente 17 | 18 | 19 | 20 | 21 | 22 | ```kotlin frame="terminal" 23 | @Composable 24 | fun RangeSlider( 25 | value: ClosedFloatingPointRange, 26 | onValueChange: (ClosedFloatingPointRange) -> Unit, 27 | valueRange: ClosedFloatingPointRange = 0f..1f, 28 | steps: Int = 0, 29 | enabled: Boolean = true, 30 | colors: SliderColors = SliderDefaults.colors() 31 | ) 32 | ``` 33 | #### Los parámetros del componente en Material son los siguientes: 34 | 35 | Atributo | Descripción 36 | ------ | ----------- 37 | `valueRange` | Define el rango de valores que el slider puede tomar. En este caso, va desde 0 hasta 100. 38 | `value` | Una tupla que representa los valores mínimos y máximos del rango seleccionado actualmente por el usuario. 39 | `onValueChange` | Un callback que se llama cuando el usuario desliza el control deslizante para cambiar los valores seleccionados. 40 | `steps` | Define el número de pasos discretos entre los valores mínimos y máximos del rango. 41 | `enabled` | Define si el slider está habilitado o no. 42 | `colors` | Los colores del slider en diferentes estados. 43 | `onValueChangeFinished` | Un callback opcional que se llama cuando el usuario finaliza de cambiar los valores. 44 | 45 | 46 | 47 | 48 | 49 | ```kotlin frame="terminal" 50 | @Composable 51 | fun RangeSlider( 52 | value: ClosedFloatingPointRange, 53 | onValueChange: (ClosedFloatingPointRange) -> Unit, 54 | valueRange: ClosedFloatingPointRange = 0f..1f, 55 | steps: Int = 0, 56 | enabled: Boolean = true, 57 | colors: SliderColors = SliderDefaults.colors() 58 | ) 59 | ``` 60 | #### Los parámetros del componente DropdownMenu: 61 | 62 | Atributo | Descripción 63 | ------ | ----------- 64 | `valueRange` | Define el rango de valores que el slider puede tomar. En este caso, va desde 0 hasta 100. 65 | `value` | Una tupla que representa los valores mínimos y máximos del rango seleccionado actualmente por el usuario. 66 | `onValueChange` | Un callback que se llama cuando el usuario desliza el control deslizante para cambiar los valores seleccionados. 67 | `steps` | Define el número de pasos discretos entre los valores mínimos y máximos del rango. 68 | `enabled` | Define si el slider está habilitado o no. 69 | `colors` | Los colores del slider en diferentes estados. 70 | `onValueChangeFinished` | Un callback opcional que se llama cuando el usuario finaliza de cambiar los valores. 71 | 72 | 73 | 74 | 75 | 76 | [comment]: <> (No modifiques el tip) 77 | 78 | :::tip[Fuente] 79 | Puedes acceder a la documentación oficial de Google 80 | [desde aquí](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary). 81 | ::: 82 | 83 | ### Ejemplos 84 | 85 | 86 | 87 | 88 | 89 |
![Imagen del componente - Material [RangeSlider]](../../../assets/sliders/range-sliders/range-slider.png)
90 | 91 | ```kotlin frame="terminal" 92 | @Composable 93 | fun RangeSliderExample() { 94 | var sliderPosition by remember { mutableStateOf(0f..100f) } 95 | 96 | Column( 97 | modifier = Modifier.padding(16.dp), 98 | horizontalAlignment = Alignment.CenterHorizontally 99 | ) { 100 | Text(text = "Selected range: ${sliderPosition.start} - ${sliderPosition.endInclusive}") 101 | RangeSlider( 102 | value = sliderPosition, 103 | onValueChange = { sliderPosition = it }, 104 | valueRange = 0f..100f, 105 | steps = 10, 106 | enabled = true, 107 | colors = SliderDefaults.colors() 108 | ) 109 | } 110 | } 111 | ``` 112 |
113 | 114 | 115 | 116 |
![RangeSlider - Material 3 [RangeSliderM3]](../../../assets/sliders/range-sliders/range-slider-material3.png)
117 | 118 | ```kotlin frame="terminal" 119 | @Composable 120 | fun RangeSliderExample() { 121 | var sliderPosition by remember { mutableStateOf(0f..100f) } 122 | 123 | Column( 124 | modifier = Modifier.padding(16.dp), 125 | horizontalAlignment = Alignment.CenterHorizontally 126 | ) { 127 | Text(text = "Selected range: ${sliderPosition.start} - ${sliderPosition.endInclusive}") 128 | RangeSlider( 129 | value = sliderPosition, 130 | onValueChange = { sliderPosition = it }, 131 | onValueChangeFinished = { 132 | // Acción adicional después de que el usuario ha terminado de cambiar el valor 133 | }, 134 | valueRange = 0f..100f, 135 | steps = 10, 136 | enabled = true, 137 | colors = SliderDefaults.colors() 138 | ) 139 | } 140 | } 141 | ``` 142 | 143 |
144 |
145 | 146 | -------------------------------------------------------------------------------- /src/content/docs/sliders/slider.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Slider 3 | description: A guide in my new Starlight docs site. 4 | --- -------------------------------------------------------------------------------- /src/content/docs/switch/switch.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Switch 3 | description: Aprende a usar el composable Switch en Jetpack Compose. 4 | sidebar: 5 | badge: 6 | text: Nuevo 7 | variant: tip 8 | --- 9 | 10 | import { Tabs, TabItem } from "@astrojs/starlight/components"; 11 | 12 | ![Switch](../../../assets/switch/switch-header.webp) 13 | 14 | El componente `Switch` permite a los usuarios alternar entre dos estados: **marcado** y **desmarcado**. Se puede usar un interruptor (`Switch`) para permitir que el usuario realice por ejemplo, alguna de las siguientes acciones: 15 | 16 | - Activar o desactivar un parámetro de configuración. 17 | - Habilitar o inhabilitar una función en la app. 18 | - Seleccionar una opción. 19 | 20 | El componente tiene dos partes: el círculo(*Thumb*) y la pista(*Track*). El círculo es la parte arrastrable del interruptor, y la pista es el fondo. El usuario puede arrastrar el pulgar hacia la izquierda o la derecha para cambiar el estado del interruptor. También pueden presionar el interruptor y lograr el mismo resultado. 21 | 22 | ![Estructura del Switch [Switch]](../../../assets/switch/switch-structure.webp) 23 | 24 | ## Implementación 25 | 26 | ### Definición del componente 27 | 28 | 29 | 30 | 31 | 32 | ```kotlin frame="terminal" 33 | @Composable 34 | Switch( 35 | checked: Boolean, 36 | onCheckedChange: ((Boolean) -> Unit)?, 37 | modifier: Modifier = Modifier, 38 | enabled: Boolean = true, 39 | interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, 40 | colors: SwitchColors = SwitchDefaults.colors() 41 | ) 42 | ``` 43 | 44 | - **checked**: Es el estado inicial del interruptor. 45 | - **onCheckedChange**: Es una devolución de llamada a la que se llama cuando cambia el estado del interruptor. 46 | - **modifier**: Modificador que implementará el composable (_Opcional_). 47 | - **enabled**: Indica si el interruptor está habilitado o inhabilitado. 48 | - **interactionSource**: Usa esta opción para personalizar el color de la ruta y el círculo. _(Representa un flujo de interacciones correspondientes a eventos emitidos por un componente)_ 49 | - **colors**: Los colores que se usaron para el cambio. 50 | 51 | 52 | 53 | 54 | 55 | ```kotlin frame="terminal" 56 | @Composable 57 | Switch( 58 | checked: Boolean, 59 | onCheckedChange: ((Boolean) -> Unit)?, 60 | modifier: Modifier, 61 | thumbContent: (@Composable () -> Unit)?, 62 | enabled: Boolean, 63 | colors: SwitchColors, 64 | interactionSource: MutableInteractionSource 65 | ) 66 | ``` 67 | 68 | - **checked**: Es el estado inicial del interruptor. 69 | - **onCheckedChange**: Es una devolución de llamada a la que se llama cuando cambia el estado del interruptor. 70 | - **modifier**: Modificador que implementará el composable (_Opcional_). 71 | - **thumbContent**: Úsalo para personalizar la apariencia del círculo cuando está marcado. 72 | - **enabled**: Indica si el interruptor está habilitado o inhabilitado. 73 | - **colors**: Los colores que se usaron para el cambio. 74 | - **interactionSource**: Usa esta opción para personalizar el color de la ruta y el círculo. _(Representa un flujo de interacciones correspondientes a eventos emitidos por un componente)_ 75 | 76 | 77 | 78 | 79 | 80 | :::tip[Fuente] 81 | Puedes acceder a la documentación oficial del componente 82 | [desde aquí](https://developer.android.com/jetpack/compose/components/switch?hl=es-419). 83 | ::: 84 | 85 | ### Ejemplos 86 | 87 | 88 | 89 | 90 | 91 | ```kotlin "androidx.compose.material.Switch" title="SwitchM2Default" frame="terminal" 92 | import androidx.compose.material.Switch 93 | @Composable 94 | fun SwitchDefault() { 95 | val checkedState = remember { mutableStateOf(true) } 96 | Switch( 97 | checked = checkedState.value, 98 | onCheckedChange = { checkedState.value = it } 99 | ) 100 | } 101 | ``` 102 | 103 |
104 | ![Switch](../../../assets/switch/switch-default-m2.webp) 105 |
106 | 107 |
108 | 109 | 110 | 111 | ```kotlin "androidx.compose.material3.Switch" title="SwitchM3Default" frame="terminal" 112 | import androidx.compose.material3.Switch 113 | @Composable 114 | fun SwitchDefault() { 115 | val checkedState = remember { mutableStateOf(true) } 116 | Switch( 117 | checked = checkedState.value, 118 | onCheckedChange = { checkedState.value = it } 119 | ) 120 | } 121 | ``` 122 | 123 |
124 | ![Switch](../../../assets/switch/switch-default.webp) 125 |
126 | 127 |
128 | {/* 129 | 130 | ```kotlin "androidx.compose.material3.Switch" title="SwitchM3WithIcon" frame="terminal" 131 | import androidx.compose.material3.Switch 132 | @Composable 133 | fun SwitchWithIcon() { 134 | var switchCheckedState by remember { mutableStateOf(false) } 135 | 136 | Switch( 137 | checked = switchCheckedState, 138 | enabled = false, 139 | onCheckedChange = { switchCheckedState = it }, 140 | thumbContent = { 141 | Icon( 142 | imageVector = if (switchCheckedState) Icons.Filled.Check else Icons.Filled.Close, 143 | contentDescription = null, 144 | modifier = Modifier.size(SwitchDefaults.IconSize) 145 | ) 146 | }, 147 | colors = SwitchDefaults.colors( 148 | checkedThumbColor = Color.Green, 149 | checkedIconColor = Color.DarkGray, 150 | uncheckedThumbColor = Color.Red, 151 | uncheckedIconColor = Color.LightGray, 152 | disabledCheckedThumbColor = Color.Green.copy(alpha = 0.7f), 153 | disabledUncheckedThumbColor = Color.Red.copy(alpha = 0.7f), 154 | disabledUncheckedBorderColor = Color.Red, 155 | ) 156 | ) 157 | } 158 | ``` 159 | 160 |
161 | ![Switch](../../../assets/switch/switch-custom.webp) 162 |
163 | 164 |
*/} 165 |
166 | 167 | :::note 168 | Puedes pasar cualquier elemento componible para el parámetro `thumbContent` (Material 3) a fin de crear una miniatura personalizada: 169 |
170 | ![Switch](../../../assets/switch/switch-custom.webp) 171 |
172 | ::: 173 | -------------------------------------------------------------------------------- /src/content/docs/tooltips/plain-tooltip.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Plain tooltip 3 | description: A guide in my new Starlight docs site. 4 | --- -------------------------------------------------------------------------------- /src/content/i18n/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ArisGuimera/JetpackComposePro/e153b537fa260c458e9a72ae536fca5d30a503cb/src/content/i18n/.gitkeep -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /src/styles/smoothscroll.css: -------------------------------------------------------------------------------- 1 | html { 2 | scroll-behavior: smooth; 3 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "astro/tsconfigs/strict" 3 | } 4 | --------------------------------------------------------------------------------