-SPDX-License-Identifier: MIT
diff --git a/pythonx/compose/lite/release/runtime/legal/java.desktop/harfbuzz.md b/pythonx/compose/lite/release/runtime/legal/java.desktop/harfbuzz.md
deleted file mode 100644
index 55deb5f..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.desktop/harfbuzz.md
+++ /dev/null
@@ -1,66 +0,0 @@
-## Harfbuzz v4.4.1
-
-### Harfbuzz License
-
-https://github.com/harfbuzz/harfbuzz/blob/master/COPYING
-
-
-
-HarfBuzz is licensed under the so-called "Old MIT" license. Details follow.
-For parts of HarfBuzz that are licensed under different licenses see individual
-files names COPYING in subdirectories where applicable.
-
-Copyright © 2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020 Google, Inc.
-Copyright © 2018,2019,2020 Ebrahim Byagowi
-Copyright © 2019,2020 Facebook, Inc.
-Copyright © 2012 Mozilla Foundation
-Copyright © 2011 Codethink Limited
-Copyright © 2008,2010 Nokia Corporation and/or its subsidiary(-ies)
-Copyright © 2009 Keith Stribley
-Copyright © 2009 Martin Hosken and SIL International
-Copyright © 2007 Chris Wilson
-Copyright © 2006 Behdad Esfahbod
-Copyright © 2005 David Turner
-Copyright © 2004,2007,2008,2009,2010 Red Hat, Inc.
-Copyright © 1998-2004 David Turner and Werner Lemberg
-
-For full copyright notices consult the individual files in the package.
-
-
-Permission is hereby granted, without written agreement and without
-license or royalty fees, to use, copy, modify, and distribute this
-software and its documentation for any purpose, provided that the
-above copyright notice and the following two paragraphs appear in
-all copies of this software.
-
-IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
-DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
-IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
-ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
-PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
-All source code, except for one section, is licensed as above. The one
-exception is licensed with a slightly different MIT variant:
-The contents of this directory are licensed under the following terms:
-
-Copyright (C) 2012 Grigori Goronzy
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-
diff --git a/pythonx/compose/lite/release/runtime/legal/java.desktop/jpeg.md b/pythonx/compose/lite/release/runtime/legal/java.desktop/jpeg.md
deleted file mode 100644
index 1a0d41c..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.desktop/jpeg.md
+++ /dev/null
@@ -1,77 +0,0 @@
-## Independent JPEG Group: JPEG release 6b
-
-### JPEG License
-
-```
-****************************************************************************
-
-Copyright (C) 1991-1998, Thomas G. Lane.
-
-This software is the work of Tom Lane, Philip Gladstone, Jim Boucher,
-Lee Crocker, Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi,
-Guido Vollbeding, Ge' Weijers, and other members of the Independent JPEG
-Group.
-
-IJG is not affiliated with the official ISO JPEG standards committee.
-
-The authors make NO WARRANTY or representation, either express or implied,
-with respect to this software, its quality, accuracy, merchantability, or
-fitness for a particular purpose. This software is provided "AS IS",
-and you, its user, assume the entire risk as to its quality and accuracy.
-
-This software is copyright (C) 1991-1998, Thomas G. Lane.
-All Rights Reserved except as specified below.
-
-Permission is hereby granted to use, copy, modify, and distribute
-this software (or portions thereof) for any purpose, without fee,
-subject to these conditions:
-
-(1) If any part of the source code for this software is distributed,
-then this README file must be included, with this copyright and no-warranty
-notice unaltered; and any additions, deletions, or changes to the original
-files must be clearly indicated in accompanying documentation.
-
-(2) If only executable code is distributed, then the accompanying documentation
-must state that "this software is based in part on the work of the
-Independent JPEG Group".
-
-(3) Permission for use of this software is granted only if the user accepts
-full responsibility for any undesirable consequences; the authors accept
-NO LIABILITY for damages of any kind.
-
-These conditions apply to any software derived from or based on the IJG code,
-not just to the unmodified library. If you use our work, you ought to
-acknowledge us.
-
-Permission is NOT granted for the use of any IJG author's name or company name
-in advertising or publicity relating to this software or products derived
-from it. This software may be referred to only as "the Independent JPEG
-Group's software".
-
-We specifically permit and encourage the use of this software as the basis
-of commercial products, provided that all warranty or liability claims are
-assumed by the product vendor.
-
-It appears that the arithmetic coding option of the JPEG spec is covered
-by patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding
-cannot legally be used without obtaining one or more licenses. For this
-reason, support for arithmetic coding has been removed from the free
-JPEG software. (Since arithmetic coding provides only a marginal gain
-over the unpatented Huffman mode, it is unlikely that very many
-implementations will support it.) So far as we are aware, there are
-no patent restrictions on the remaining code.
-
-The IJG distribution formerly included code to read and write GIF files.
-To avoid entanglement with the Unisys LZW patent, GIF reading support
-has been removed altogether, and the GIF writer has been simplified to
-produce "uncompressed GIFs". This technique does not use the LZW algorithm;
-the resulting GIF files are larger than usual, but are readable by all
-standard GIF decoders.
-
-We are required to state that "The Graphics Interchange Format(c) is
-the Copyright property of CompuServe Incorporated. GIF(sm) is a
-Service Mark property of CompuServe Incorporated."
-
-****************************************************************************
-```
-
diff --git a/pythonx/compose/lite/release/runtime/legal/java.desktop/lcms.md b/pythonx/compose/lite/release/runtime/legal/java.desktop/lcms.md
deleted file mode 100644
index 1977a6b..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.desktop/lcms.md
+++ /dev/null
@@ -1,27 +0,0 @@
-## Little Color Management System (LCMS) v2.12
-
-### LCMS License
-
-
-Little Color Management System
-Copyright (c) 1998-2020 Marti Maria Saguer
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
diff --git a/pythonx/compose/lite/release/runtime/legal/java.desktop/libpng.md b/pythonx/compose/lite/release/runtime/legal/java.desktop/libpng.md
deleted file mode 100644
index 655cd09..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.desktop/libpng.md
+++ /dev/null
@@ -1,141 +0,0 @@
-## libpng v1.6.37
-
-### libpng License
-
-
-COPYRIGHT NOTICE, DISCLAIMER, and LICENSE
-=========================================
-
-PNG Reference Library License version 2
----------------------------------------
-
- * Copyright (c) 1995-2019 The PNG Reference Library Authors.
- * Copyright (c) 2018-2019 Cosmin Truta.
- * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson.
- * Copyright (c) 1996-1997 Andreas Dilger.
- * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
-
-The software is supplied "as is", without warranty of any kind,
-express or implied, including, without limitation, the warranties
-of merchantability, fitness for a particular purpose, title, and
-non-infringement. In no event shall the Copyright owners, or
-anyone distributing the software, be liable for any damages or
-other liability, whether in contract, tort or otherwise, arising
-from, out of, or in connection with the software, or the use or
-other dealings in the software, even if advised of the possibility
-of such damage.
-
-Permission is hereby granted to use, copy, modify, and distribute
-this software, or portions hereof, for any purpose, without fee,
-subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you
- must not claim that you wrote the original software. If you
- use this software in a product, an acknowledgment in the product
- documentation would be appreciated, but is not required.
-
- 2. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
-
- 3. This Copyright notice may not be removed or altered from any
- source or altered source distribution.
-
-
-PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35)
------------------------------------------------------------------------
-
-libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are
-Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are
-derived from libpng-1.0.6, and are distributed according to the same
-disclaimer and license as libpng-1.0.6 with the following individuals
-added to the list of Contributing Authors:
-
- Simon-Pierre Cadieux
- Eric S. Raymond
- Mans Rullgard
- Cosmin Truta
- Gilles Vollant
- James Yu
- Mandar Sahastrabuddhe
- Google Inc.
- Vadim Barkov
-
-and with the following additions to the disclaimer:
-
- There is no warranty against interference with your enjoyment of
- the library or against infringement. There is no warranty that our
- efforts or the library will fulfill any of your particular purposes
- or needs. This library is provided with all faults, and the entire
- risk of satisfactory quality, performance, accuracy, and effort is
- with the user.
-
-Some files in the "contrib" directory and some configure-generated
-files that are distributed with libpng have other copyright owners, and
-are released under other open source licenses.
-
-libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
-Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from
-libpng-0.96, and are distributed according to the same disclaimer and
-license as libpng-0.96, with the following individuals added to the
-list of Contributing Authors:
-
- Tom Lane
- Glenn Randers-Pehrson
- Willem van Schaik
-
-libpng versions 0.89, June 1996, through 0.96, May 1997, are
-Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88,
-and are distributed according to the same disclaimer and license as
-libpng-0.88, with the following individuals added to the list of
-Contributing Authors:
-
- John Bowler
- Kevin Bracey
- Sam Bushell
- Magnus Holmgren
- Greg Roelofs
- Tom Tanner
-
-Some files in the "scripts" directory have other copyright owners,
-but are released under this license.
-
-libpng versions 0.5, May 1995, through 0.88, January 1996, are
-Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
-
-For the purposes of this copyright and license, "Contributing Authors"
-is defined as the following set of individuals:
-
- Andreas Dilger
- Dave Martindale
- Guy Eric Schalnat
- Paul Schmidt
- Tim Wegner
-
-The PNG Reference Library is supplied "AS IS". The Contributing
-Authors and Group 42, Inc. disclaim all warranties, expressed or
-implied, including, without limitation, the warranties of
-merchantability and of fitness for any purpose. The Contributing
-Authors and Group 42, Inc. assume no liability for direct, indirect,
-incidental, special, exemplary, or consequential damages, which may
-result from the use of the PNG Reference Library, even if advised of
-the possibility of such damage.
-
-Permission is hereby granted to use, copy, modify, and distribute this
-source code, or portions hereof, for any purpose, without fee, subject
-to the following restrictions:
-
- 1. The origin of this source code must not be misrepresented.
-
- 2. Altered versions must be plainly marked as such and must not
- be misrepresented as being the original source.
-
- 3. This Copyright notice may not be removed or altered from any
- source or altered source distribution.
-
-The Contributing Authors and Group 42, Inc. specifically permit,
-without fee, and encourage the use of this source code as a component
-to supporting the PNG file format in commercial products. If you use
-this source code in a product, acknowledgment is not required but would
-be appreciated.
-
-
diff --git a/pythonx/compose/lite/release/runtime/legal/java.desktop/mesa3d.md b/pythonx/compose/lite/release/runtime/legal/java.desktop/mesa3d.md
deleted file mode 100644
index cdaa1ac..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.desktop/mesa3d.md
+++ /dev/null
@@ -1,134 +0,0 @@
-## Mesa 3-D Graphics Library v21.0.3
-
-### Mesa License
-
-```
-Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-Attention, Contributors
-
-When contributing to the Mesa project you must agree to the licensing terms
-of the component to which you're contributing.
-The following section lists the primary components of the Mesa distribution
-and their respective licenses.
-Mesa Component Licenses
-
-
-
-Component Location License
-------------------------------------------------------------------
-Main Mesa code src/mesa/ MIT
-Device drivers src/mesa/drivers/* MIT, generally
-
-Gallium code src/gallium/ MIT
-
-Ext headers GL/glext.h Khronos
- GL/glxext.h Khronos
- GL/wglext.h Khronos
- KHR/khrplatform.h Khronos
-
-*****************************************************************************
-
-----
-include/GL/gl.h :
-
-
- Mesa 3-D graphics library
-
- Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- Copyright (C) 2009 VMware, Inc. All Rights Reserved.
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the "Software"),
- to deal in the Software without restriction, including without limitation
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
-
- *****************************************************************************
-
-----
-include/GL/glext.h
-include/GL/glxext.h
-include/GL/wglxext.h :
-
-
- Copyright (c) 2013 - 2018 The Khronos Group Inc.
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and/or associated documentation files (the
- "Materials"), to deal in the Materials without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Materials, and to
- permit persons to whom the Materials are furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Materials.
-
- THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-
- *****************************************************************************
-
-----
-include/KHR/khrplatform.h :
-
- Copyright (c) 2008 - 2018 The Khronos Group Inc.
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and/or associated documentation files (the
- "Materials"), to deal in the Materials without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Materials, and to
- permit persons to whom the Materials are furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Materials.
-
- THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-
- *****************************************************************************
-
-```
diff --git a/pythonx/compose/lite/release/runtime/legal/java.logging/ADDITIONAL_LICENSE_INFO b/pythonx/compose/lite/release/runtime/legal/java.logging/ADDITIONAL_LICENSE_INFO
deleted file mode 100644
index b62cc3e..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.logging/ADDITIONAL_LICENSE_INFO
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\ADDITIONAL_LICENSE_INFO
diff --git a/pythonx/compose/lite/release/runtime/legal/java.logging/ASSEMBLY_EXCEPTION b/pythonx/compose/lite/release/runtime/legal/java.logging/ASSEMBLY_EXCEPTION
deleted file mode 100644
index 0d4cfb4..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.logging/ASSEMBLY_EXCEPTION
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\ASSEMBLY_EXCEPTION
diff --git a/pythonx/compose/lite/release/runtime/legal/java.logging/LICENSE b/pythonx/compose/lite/release/runtime/legal/java.logging/LICENSE
deleted file mode 100644
index 4ad9fe4..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.logging/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\LICENSE
diff --git a/pythonx/compose/lite/release/runtime/legal/java.prefs/ADDITIONAL_LICENSE_INFO b/pythonx/compose/lite/release/runtime/legal/java.prefs/ADDITIONAL_LICENSE_INFO
deleted file mode 100644
index b62cc3e..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.prefs/ADDITIONAL_LICENSE_INFO
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\ADDITIONAL_LICENSE_INFO
diff --git a/pythonx/compose/lite/release/runtime/legal/java.prefs/ASSEMBLY_EXCEPTION b/pythonx/compose/lite/release/runtime/legal/java.prefs/ASSEMBLY_EXCEPTION
deleted file mode 100644
index 0d4cfb4..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.prefs/ASSEMBLY_EXCEPTION
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\ASSEMBLY_EXCEPTION
diff --git a/pythonx/compose/lite/release/runtime/legal/java.prefs/LICENSE b/pythonx/compose/lite/release/runtime/legal/java.prefs/LICENSE
deleted file mode 100644
index 4ad9fe4..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.prefs/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\LICENSE
diff --git a/pythonx/compose/lite/release/runtime/legal/java.xml/ADDITIONAL_LICENSE_INFO b/pythonx/compose/lite/release/runtime/legal/java.xml/ADDITIONAL_LICENSE_INFO
deleted file mode 100644
index b62cc3e..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.xml/ADDITIONAL_LICENSE_INFO
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\ADDITIONAL_LICENSE_INFO
diff --git a/pythonx/compose/lite/release/runtime/legal/java.xml/ASSEMBLY_EXCEPTION b/pythonx/compose/lite/release/runtime/legal/java.xml/ASSEMBLY_EXCEPTION
deleted file mode 100644
index 0d4cfb4..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.xml/ASSEMBLY_EXCEPTION
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\ASSEMBLY_EXCEPTION
diff --git a/pythonx/compose/lite/release/runtime/legal/java.xml/LICENSE b/pythonx/compose/lite/release/runtime/legal/java.xml/LICENSE
deleted file mode 100644
index 4ad9fe4..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.xml/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\LICENSE
diff --git a/pythonx/compose/lite/release/runtime/legal/java.xml/bcel.md b/pythonx/compose/lite/release/runtime/legal/java.xml/bcel.md
deleted file mode 100644
index 6dffd07..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.xml/bcel.md
+++ /dev/null
@@ -1,219 +0,0 @@
-## Apache Commons Byte Code Engineering Library (BCEL) Version 6.5.0
-
-### Apache Commons BCEL Notice
-
-
- Apache Commons BCEL
- Copyright 2004-2020 The Apache Software Foundation
-
- This product includes software developed at
- The Apache Software Foundation (https://www.apache.org/).
-
-
-
-### Apache 2.0 License
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
diff --git a/pythonx/compose/lite/release/runtime/legal/java.xml/dom.md b/pythonx/compose/lite/release/runtime/legal/java.xml/dom.md
deleted file mode 100644
index 4fe8093..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.xml/dom.md
+++ /dev/null
@@ -1,77 +0,0 @@
-## DOM Level 3 Core Specification v1.0
-
-### W3C Software Notice
-
-Copyright © 2004 World Wide Web Consortium, (Massachusetts Institute of Technology,
-European Research Consortium for Informatics and Mathematics, Keio University).
-All Rights Reserved.
-
-The DOM bindings are published under the W3C Software Copyright Notice and License.
-The software license requires "Notice of any changes or modifications to the W3C
-files, including the date changes were made." Consequently, modified versions of
-the DOM bindings must document that they do not conform to the W3C standard; in the
-case of the IDL definitions, the pragma prefix can no longer be 'w3c.org'; in the
-case of the Java language binding, the package names can no longer be in the
-'org.w3c' package.
-
-
-### W3C License
-
-
-W3C SOFTWARE NOTICE AND LICENSE
-
-http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
-
-This work (and included software, documentation such as READMEs, or other
-related items) is being provided by the copyright holders under the following
-license. By obtaining, using and/or copying this work, you (the licensee)
-agree that you have read, understood, and will comply with the following terms
-and conditions.
-
-Permission to copy, modify, and distribute this software and its
-documentation, with or without modification, for any purpose and without fee
-or royalty is hereby granted, provided that you include the following on ALL
-copies of the software and documentation or portions thereof, including
-modifications:
-
- 1.The full text of this NOTICE in a location viewable to users of the
- redistributed or derivative work.
-
- 2.Any pre-existing intellectual property disclaimers, notices, or terms and
- conditions. If none exist, the W3C Software Short Notice should be included
- (hypertext is preferred, text is permitted) within the body of any
- redistributed or derivative code.
-
- 3.Notice of any changes or modifications to the files, including the date
- changes were made. (We recommend you provide URIs to the location from
- which the code is derived.)
-
-THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
-MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
-LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
-PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY
-THIRD PARTY PATENTS,COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
-OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
-DOCUMENTATION. The name and trademarks of copyright holders may NOT be used
-in advertising or publicity pertaining to the software without specific,
-written prior permission. Title to copyright in this software and any
-associated documentation will at all times remain with copyright holders.
-
-____________________________________
-
-This formulation of W3C's notice and license became active on December 31
-2002. This version removes the copyright ownership notice such that this
-license can be used with materials other than those owned by the W3C, reflects
-that ERCIM is now a host of the W3C, includes references to this specific
-dated version of the license, and removes the ambiguous grant of "use".
-Otherwise, this version is the same as the previous version and is written so
-as to preserve the Free Software Foundation's assessment of GPL compatibility
-and OSI's certification under the Open Source Definition. Please see our
-Copyright FAQ for common questions about using materials from our site,
-including specific terms and conditions for packages like libwww, Amaya, and
-Jigsaw. Other questions about this notice can be directed to
-site-policy@w3.org.
-
-
diff --git a/pythonx/compose/lite/release/runtime/legal/java.xml/jcup.md b/pythonx/compose/lite/release/runtime/legal/java.xml/jcup.md
deleted file mode 100644
index bc566b7..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.xml/jcup.md
+++ /dev/null
@@ -1,31 +0,0 @@
-## CUP Parser Generator for Java v 0.11b
-
-### CUP Parser Generator License
-
-```
-Copyright 1996-2015 by Scott Hudson, Frank Flannery, C. Scott Ananian, Michael Petter
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted, provided
-that the above copyright notice appear in all copies and that both
-the copyright notice and this permission notice and warranty disclaimer
-appear in supporting documentation, and that the names of the authors or
-their employers not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior permission.
-
-The authors and their employers disclaim all warranties with regard to
-this software, including all implied warranties of merchantability and
-fitness. In no event shall the authors or their employers be liable for
-any special, indirect or consequential damages or any damages whatsoever
-resulting from loss of use, data or profits, whether in an action of
-contract, negligence or other tortious action, arising out of or in
-connection with the use or performance of this software.
-```
----
-```
-This is an open source license. It is also GPL-Compatible (see entry for
-"Standard ML of New Jersey"). The portions of CUP output which are hard-coded
-into the CUP source code are (naturally) covered by this same license, as is
-the CUP runtime code linked with the generated parser.
-```
-
diff --git a/pythonx/compose/lite/release/runtime/legal/java.xml/xalan.md b/pythonx/compose/lite/release/runtime/legal/java.xml/xalan.md
deleted file mode 100644
index 924bce8..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.xml/xalan.md
+++ /dev/null
@@ -1,255 +0,0 @@
-## Apache Xalan v2.7.2
-
-### Apache Xalan Notice
-
-
- ======================================================================================
- == NOTICE file corresponding to the section 4d of the Apache License, Version 2.0, ==
- == in this case for the Apache Xalan distribution. ==
- ======================================================================================
-
- This product includes software developed by
- The Apache Software Foundation (http://www.apache.org/).
-
- Specifically, we only include the XSLTC portion of the source from the Xalan distribution.
- The Xalan project has two processors: an interpretive one (Xalan Interpretive) and a
- compiled one (The XSLT Compiler (XSLTC)). We *only* use the XSLTC part of Xalan; We use
- the source from the packages that are part of the XSLTC sources.
-
- Portions of this software was originally based on the following:
-
- - software copyright (c) 1999-2002, Lotus Development Corporation., http://www.lotus.com.
- - software copyright (c) 2001-2002, Sun Microsystems., http://www.sun.com.
- - software copyright (c) 2003, IBM Corporation., http://www.ibm.com.
- - voluntary contributions made by Ovidiu Predescu (ovidiu@cup.hp.com) on behalf of the
- Apache Software Foundation and was originally developed at Hewlett Packard Company.
-
-
-
-### Apache 2.0 License
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-JLEX COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.
-Copyright 1996-2003 by Elliot Joel Berk and C. Scott Ananian
-Permission to use, copy, modify, and distribute this software and
-its documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both the copyright notice and this permission notice and warranty
-disclaimer appear in supporting documentation, and that the name of
-the authors or their employers not be used in advertising or publicity
-pertaining to distribution of the software without specific, written
-prior permission.
-The authors and their employers disclaim all warranties with regard to
-this software, including all implied warranties of merchantability and
-fitness. In no event shall the authors or their employers be liable for
-any special, indirect or consequential damages or any damages whatsoever
-resulting from loss of use, data or profits, whether in an action of
-contract, negligence or other tortious action, arising out of or in
-connection with the use or performance of this software.The portions of
-JLex output which are hard-coded into the JLex source code are (naturally)
-covered by this same license.
-
-
diff --git a/pythonx/compose/lite/release/runtime/legal/java.xml/xerces.md b/pythonx/compose/lite/release/runtime/legal/java.xml/xerces.md
deleted file mode 100644
index 3790b7a..0000000
--- a/pythonx/compose/lite/release/runtime/legal/java.xml/xerces.md
+++ /dev/null
@@ -1,229 +0,0 @@
-## Apache Xerces v2.12.2
-
-### Apache Xerces Notice
-
- =========================================================================
- == NOTICE file corresponding to section 4(d) of the Apache License, ==
- == Version 2.0, in this case for the Apache Xerces Java distribution. ==
- =========================================================================
-
- Apache Xerces Java
- Copyright 1999-2022 The Apache Software Foundation
-
- This product includes software developed at
- The Apache Software Foundation (http://www.apache.org/).
-
- Portions of this software were originally based on the following:
- - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
- - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
- - voluntary contributions made by Paul Eng on behalf of the
- Apache Software Foundation that were originally developed at iClick, Inc.,
- software copyright (c) 1999.
-
-
-### Apache 2.0 License
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
diff --git a/pythonx/compose/lite/release/runtime/legal/jdk.crypto.ec/ADDITIONAL_LICENSE_INFO b/pythonx/compose/lite/release/runtime/legal/jdk.crypto.ec/ADDITIONAL_LICENSE_INFO
deleted file mode 100644
index b62cc3e..0000000
--- a/pythonx/compose/lite/release/runtime/legal/jdk.crypto.ec/ADDITIONAL_LICENSE_INFO
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\ADDITIONAL_LICENSE_INFO
diff --git a/pythonx/compose/lite/release/runtime/legal/jdk.crypto.ec/ASSEMBLY_EXCEPTION b/pythonx/compose/lite/release/runtime/legal/jdk.crypto.ec/ASSEMBLY_EXCEPTION
deleted file mode 100644
index 0d4cfb4..0000000
--- a/pythonx/compose/lite/release/runtime/legal/jdk.crypto.ec/ASSEMBLY_EXCEPTION
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\ASSEMBLY_EXCEPTION
diff --git a/pythonx/compose/lite/release/runtime/legal/jdk.crypto.ec/LICENSE b/pythonx/compose/lite/release/runtime/legal/jdk.crypto.ec/LICENSE
deleted file mode 100644
index 4ad9fe4..0000000
--- a/pythonx/compose/lite/release/runtime/legal/jdk.crypto.ec/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-Please see ..\java.base\LICENSE
diff --git a/pythonx/compose/lite/release/runtime/release b/pythonx/compose/lite/release/runtime/release
deleted file mode 100644
index b4d99f9..0000000
--- a/pythonx/compose/lite/release/runtime/release
+++ /dev/null
@@ -1,2 +0,0 @@
-JAVA_VERSION="19.0.2"
-MODULES="java.base java.datatransfer java.xml java.prefs java.desktop java.logging jdk.crypto.ec"
diff --git a/pythonx/compose/lite/runtime.py b/pythonx/compose/lite/runtime.py
deleted file mode 100644
index df198e1..0000000
--- a/pythonx/compose/lite/runtime.py
+++ /dev/null
@@ -1,11 +0,0 @@
-_composer = None
-
-
-def register_composer(composer):
- global _composer
- print("INFO: Registering composer...")
- _composer = composer
-
-
-def Composable(func, *args, **kwargs):
- return lambda *args, **kwargs: func(*args, **kwargs, composer=_composer)
diff --git a/pythonx/compose/lite/settings.gradle.kts b/pythonx/compose/lite/settings.gradle.kts
deleted file mode 100644
index 68054fc..0000000
--- a/pythonx/compose/lite/settings.gradle.kts
+++ /dev/null
@@ -1,5 +0,0 @@
-plugins {
- id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
-}
-rootProject.name = "ComposeLite"
-
diff --git a/pythonx/compose/lite/src/main/kotlin/org/example/project/App.kt b/pythonx/compose/lite/src/main/kotlin/org/example/project/App.kt
deleted file mode 100644
index 3522d29..0000000
--- a/pythonx/compose/lite/src/main/kotlin/org/example/project/App.kt
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.example.project
-
-import androidx.compose.animation.AnimatedVisibility
-import androidx.compose.foundation.Image
-import androidx.compose.foundation.layout.*
-import androidx.compose.material3.Button
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Text
-import androidx.compose.runtime.*
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.window.Window
-import androidx.compose.ui.window.application
-import org.jetbrains.compose.resources.painterResource
-import org.jetbrains.compose.ui.tooling.preview.Preview
-
-
-@Composable
-@Preview
-fun App(
- content: () -> Unit = {}
-) {
- MaterialTheme {
- var showContent by remember { mutableStateOf(false) }
- Column(Modifier.fillMaxSize().padding(all=10.dp), horizontalAlignment = Alignment.CenterHorizontally) {
- Button(onClick = { showContent = !showContent }) {
- Text("Click me!")
- }
- AnimatedVisibility(showContent) {
- val greeting = remember { Greeting().greet() }
- Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
- Text("Compose: $greeting")
- }
- }
- Spacer(Modifier.height(16.dp))
- content()
- }
- }
-}
-
-
-fun launch(content: () -> Unit = {}, register: (composer: Composer) -> Unit = {}) {
- application {
- Window(
- onCloseRequest = ::exitApplication,
- title = "ComposeLite",
- ) {
- register(currentComposer)
- App(content)
- }
- }
-}
diff --git a/pythonx/compose/lite/src/main/kotlin/org/example/project/ComposeTest.java b/pythonx/compose/lite/src/main/kotlin/org/example/project/ComposeTest.java
deleted file mode 100644
index afe9c78..0000000
--- a/pythonx/compose/lite/src/main/kotlin/org/example/project/ComposeTest.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.example.project;
-
-
-import org.example.project.AppKt;
-
-public class ComposeTest {
- static void runApp() {
- System.out.println("Hello from ComposeTest");
- AppKt.getApplication();
- }
-}
diff --git a/pythonx/compose/lite/src/main/kotlin/org/example/project/Greeting.kt b/pythonx/compose/lite/src/main/kotlin/org/example/project/Greeting.kt
deleted file mode 100644
index d49d319..0000000
--- a/pythonx/compose/lite/src/main/kotlin/org/example/project/Greeting.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.example.project
-
-class Greeting {
- private val platform = getPlatform()
-
- fun greet(): String {
- return "Hello, ${platform.name}!"
- }
-}
\ No newline at end of file
diff --git a/pythonx/compose/lite/src/main/kotlin/org/example/project/Platform.kt b/pythonx/compose/lite/src/main/kotlin/org/example/project/Platform.kt
deleted file mode 100644
index a964bdb..0000000
--- a/pythonx/compose/lite/src/main/kotlin/org/example/project/Platform.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.example.project
-
-class JVMPlatform {
- val name: String = "Java ${System.getProperty("java.version")}"
-}
-
-fun getPlatform() = JVMPlatform()
\ No newline at end of file
diff --git a/pythonx/compose/lite/src/main/kotlin/thisisthepy/pycomposeui/Material3.kt b/pythonx/compose/lite/src/main/kotlin/thisisthepy/pycomposeui/Material3.kt
deleted file mode 100644
index 7356b4d..0000000
--- a/pythonx/compose/lite/src/main/kotlin/thisisthepy/pycomposeui/Material3.kt
+++ /dev/null
@@ -1,228 +0,0 @@
-package thisisthepy.pycomposeui
-
-import androidx.compose.foundation.layout.*
-import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.foundation.text.InlineTextContent
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.*
-import androidx.compose.material3.*
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.MutableState
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.vector.ImageVector
-import androidx.compose.ui.text.AnnotatedString
-import androidx.compose.ui.text.TextLayoutResult
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.FontFamily
-import androidx.compose.ui.text.font.FontStyle
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.text.style.TextAlign
-import androidx.compose.ui.text.style.TextDecoration
-import androidx.compose.ui.text.style.TextOverflow
-import androidx.compose.ui.unit.TextUnit
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.sp
-
-
-@JvmName("SimpleIcon")
-@Composable
-fun IconWrapper(
- icon: ImageVector,
- contentDescription: String,
- modifier: Modifier,
- color: Long
-) {
- Icons.Default.Favorite
- Icon(icon, contentDescription, modifier, Color(color))
-}
-
-
-val FavoriteIcon
- @JvmName("FavoriteIcon")
- get() = Icons.Default.Favorite
-
-
-val AddIcon
- @JvmName("AddIcon")
- get() = Icons.Default.Add
-
-
-val KeyboardArrowDownIcon
- @JvmName("KeyboardArrowDownIcon")
- get() = Icons.Default.KeyboardArrowDown
-
-
-val KeyboardArrowUpIcon
- @JvmName("KeyboardArrowUpIcon")
- get() = Icons.Default.KeyboardArrowUp
-
-
-val PlayArrowIcon
- @JvmName("PlayArrowIcon")
- get() = Icons.Default.PlayArrow
-
-
-val DeleteIcon
- @JvmName("DeleteIcon")
- get() = Icons.Default.Delete
-
-
-
-@JvmName("SimpleTextWidget")
-@Composable
-fun SimpleTextWidget(
- text: String,
- color: Long,
- fontSize: Float
-) {
- Text(text, Modifier, Color(color), fontSize.sp)
-}
-
-
-@JvmName("SimpleSpacer")
-@Composable
-fun SimpleSpacer(
- start: Float, top: Float, end: Float, bottom: Float
-) {
- Spacer(Modifier.padding(start.dp, top.dp, end.dp, bottom.dp))
-}
-
-
-@JvmName("TextWidget")
-@Composable
-fun TextWidget(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = Color.Unspecified,
- fontSize: TextUnit = TextUnit.Unspecified,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight? = null,
- fontFamily: FontFamily? = null,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- maxLines: Int = Int.MAX_VALUE,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- Text(text, modifier, color, fontSize, fontStyle, fontWeight, fontFamily, letterSpacing, textDecoration, textAlign,
- lineHeight, overflow, softWrap, maxLines, minLines, onTextLayout, style)
-}
-
-
-@JvmName("AnnotatedStringTextWidget")
-@Composable
-fun AnnotatedStringTextWidget(
- text: AnnotatedString,
- modifier: Modifier = Modifier,
- color: Color = Color.Unspecified,
- fontSize: TextUnit = TextUnit.Unspecified,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight? = null,
- fontFamily: FontFamily? = null,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- maxLines: Int = Int.MAX_VALUE,
- minLines: Int = 1,
- inlineContent: Map = mapOf(),
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- Text(text, modifier, color, fontSize, fontStyle, fontWeight, fontFamily, letterSpacing, textDecoration, textAlign,
- lineHeight, overflow, softWrap, maxLines, minLines, inlineContent, onTextLayout, style)
-}
-
-@JvmName("SimpleColumnWidget")
-@Composable
-fun SimpleColumnWidget(
- modifier: Modifier,
- verticalArrangement: Arrangement.Vertical,
- horizontalAlignment: Alignment.Horizontal,
- content: () -> Unit
-) {
- Column(modifier, verticalArrangement, horizontalAlignment) {
- content()
- }
-}
-
-
-@JvmName("SimpleRowWidget")
-@Composable
-fun SimpleRowWidget(
- modifier: Modifier,
- horizontalArrangement: Arrangement.Horizontal,
- verticalAlignment: Alignment.Vertical,
- content: () -> Unit
-) {
- Row(modifier, horizontalArrangement, verticalAlignment) {
- content()
- }
-}
-
-
-@JvmName("SimpleButtonWidget")
-@Composable
-fun SimpleButtonWidget(
- onClick: () -> Unit,
- enabled: Boolean,
- cornerRadius: Float,
- color: Long,
- content: () -> Unit
-) {
- Button(onClick, Modifier, enabled, RoundedCornerShape(cornerRadius.dp), ButtonColors(
- containerColor = Color(color),
- contentColor = Color.Unspecified,
- disabledContainerColor = Color(color),
- disabledContentColor = Color.Unspecified
- )
- ) {
- content()
- }
-}
-
-
-@JvmName("SimpleCardWidget")
-@Composable
-fun SimpleCardWidget(
- cornerRadius: Float,
- color: Long,
- content: () -> Unit
-) {
- Card(Modifier, RoundedCornerShape(cornerRadius.dp), CardColors(
- containerColor = Color(color),
- contentColor = Color.Unspecified,
- disabledContainerColor = Color(color),
- disabledContentColor = Color.Unspecified
- )
- ){
- content()
- }
-}
-
-
-@JvmName("SimpleTextField")
-@Composable
-fun SimpleTextField(
- textState: MutableState,
- padding: Int
-) {
- TextField(
- value = textState.value, // 외부에서 받은 텍스트 상태 사용
- onValueChange = { textState.value = it }, // 텍스트 값이 변경될 때 호출되는 콜백
- placeholder = null, // placeholder 생략
- modifier = Modifier
- .fillMaxWidth()
- .padding(padding.dp),
- singleLine = false
- )
-}
diff --git a/pythonx/compose/lite/src/main/kotlin/thisisthepy/pycomposeui/Ui.kt b/pythonx/compose/lite/src/main/kotlin/thisisthepy/pycomposeui/Ui.kt
deleted file mode 100644
index 11ca64c..0000000
--- a/pythonx/compose/lite/src/main/kotlin/thisisthepy/pycomposeui/Ui.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package thisisthepy.pycomposeui
-
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-
-
-fun getModifier() = Modifier
-
-fun getAlignment() = Alignment
diff --git a/pythonx/compose/material/__init__.py b/pythonx/compose/material/__init__.py
new file mode 100644
index 0000000..41e5ace
--- /dev/null
+++ b/pythonx/compose/material/__init__.py
@@ -0,0 +1,8 @@
+"""`pythonx.compose.material` -- the Pythonic view of `androidx.compose.material` (see `pythonx/compose/_reexport.py`).
+
+Material 2's own composables are not bound; this package is here for `material.icons`.
+"""
+
+from pythonx.compose._reexport import reexport
+
+__getattr__, __dir__ = reexport(__name__)
diff --git a/pythonx/compose/material/__init__.pyi b/pythonx/compose/material/__init__.pyi
new file mode 100644
index 0000000..b912439
--- /dev/null
+++ b/pythonx/compose/material/__init__.pyi
@@ -0,0 +1 @@
+# GENERATED by pythonx/_build/gen_stubs.py from python-multiplatform's Kotlin-named stubs (artifact kotlin-stubs, workflow run 37103737430, commit a5028618, Compose 1.11.1). Do not edit.
diff --git a/pythonx/compose/material/icons/__init__.py b/pythonx/compose/material/icons/__init__.py
new file mode 100644
index 0000000..f02a782
--- /dev/null
+++ b/pythonx/compose/material/icons/__init__.py
@@ -0,0 +1,9 @@
+"""`pythonx.compose.material.icons` -- the Pythonic view of `androidx.compose.material.icons` (see `pythonx/compose/_reexport.py`).
+
+`Icons.Default.Add` is served by the rule; `material3` lends `Icons.Default` as `DefaultIcons`
+(`[aliases]` in `pythonx-map.toml`, INTENT section 5.7).
+"""
+
+from pythonx.compose._reexport import reexport
+
+__getattr__, __dir__ = reexport(__name__)
diff --git a/pythonx/compose/material/icons/__init__.pyi b/pythonx/compose/material/icons/__init__.pyi
new file mode 100644
index 0000000..7d337f9
--- /dev/null
+++ b/pythonx/compose/material/icons/__init__.pyi
@@ -0,0 +1,1159 @@
+# GENERATED by pythonx/_build/gen_stubs.py from python-multiplatform's Kotlin-named stubs (artifact kotlin-stubs, workflow run 37103737430, commit a5028618, Compose 1.11.1). Do not edit.
+import typing as _t
+import pythonx.compose.ui.graphics.vector
+
+def material_icon(name: str, auto_mirror: bool = ..., *, block: _t.Callable[[pythonx.compose.ui.graphics.vector.ImageVector.Builder], pythonx.compose.ui.graphics.vector.ImageVector.Builder]) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin: androidx.compose.material.icons.materialIcon(name: kotlin.String, autoMirror: kotlin.Boolean, block: kotlin.Function1): androidx.compose.ui.graphics.vector.ImageVector"""
+ ...
+
+def material_path(receiver: pythonx.compose.ui.graphics.vector.ImageVector.Builder, /, fill_alpha: float = ..., stroke_alpha: float = ..., path_fill_type: _t.Any = ..., *, path_builder: _t.Callable[[pythonx.compose.ui.graphics.vector.PathBuilder], None]) -> pythonx.compose.ui.graphics.vector.ImageVector.Builder:
+ """Kotlin: androidx.compose.ui.graphics.vector.ImageVector.Builder.materialPath(fillAlpha: kotlin.Float, strokeAlpha: kotlin.Float, pathFillType: androidx.compose.ui.graphics.PathFillType, pathBuilder: kotlin.Function1): androidx.compose.ui.graphics.vector.ImageVector.Builder"""
+ ...
+
+class Icons:
+ """Kotlin: androidx.compose.material.icons.Icons"""
+ class AutoMirrored:
+ """Kotlin: container of nested classes"""
+ class Filled:
+ """Kotlin: androidx.compose.material.icons.Icons.AutoMirrored.Filled"""
+ @property
+ def ArrowBack(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.filled.ArrowBack (androidx.compose.material.icons.Icons.AutoMirrored.Filled.ArrowBack: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowForward(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.filled.ArrowForward (androidx.compose.material.icons.Icons.AutoMirrored.Filled.ArrowForward: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ExitToApp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.filled.ExitToApp (androidx.compose.material.icons.Icons.AutoMirrored.Filled.ExitToApp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowLeft(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.filled.KeyboardArrowLeft (androidx.compose.material.icons.Icons.AutoMirrored.Filled.KeyboardArrowLeft: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowRight(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight (androidx.compose.material.icons.Icons.AutoMirrored.Filled.KeyboardArrowRight: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def List(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.filled.List (androidx.compose.material.icons.Icons.AutoMirrored.Filled.List: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Send(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.filled.Send (androidx.compose.material.icons.Icons.AutoMirrored.Filled.Send: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ class Outlined:
+ """Kotlin: androidx.compose.material.icons.Icons.AutoMirrored.Outlined"""
+ @property
+ def ArrowBack(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.outlined.ArrowBack (androidx.compose.material.icons.Icons.AutoMirrored.Outlined.ArrowBack: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowForward(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.outlined.ArrowForward (androidx.compose.material.icons.Icons.AutoMirrored.Outlined.ArrowForward: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ExitToApp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.outlined.ExitToApp (androidx.compose.material.icons.Icons.AutoMirrored.Outlined.ExitToApp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowLeft(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.outlined.KeyboardArrowLeft (androidx.compose.material.icons.Icons.AutoMirrored.Outlined.KeyboardArrowLeft: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowRight(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.outlined.KeyboardArrowRight (androidx.compose.material.icons.Icons.AutoMirrored.Outlined.KeyboardArrowRight: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def List(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.outlined.List (androidx.compose.material.icons.Icons.AutoMirrored.Outlined.List: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Send(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.outlined.Send (androidx.compose.material.icons.Icons.AutoMirrored.Outlined.Send: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ class Rounded:
+ """Kotlin: androidx.compose.material.icons.Icons.AutoMirrored.Rounded"""
+ @property
+ def ArrowBack(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.rounded.ArrowBack (androidx.compose.material.icons.Icons.AutoMirrored.Rounded.ArrowBack: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowForward(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.rounded.ArrowForward (androidx.compose.material.icons.Icons.AutoMirrored.Rounded.ArrowForward: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ExitToApp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.rounded.ExitToApp (androidx.compose.material.icons.Icons.AutoMirrored.Rounded.ExitToApp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowLeft(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.rounded.KeyboardArrowLeft (androidx.compose.material.icons.Icons.AutoMirrored.Rounded.KeyboardArrowLeft: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowRight(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.rounded.KeyboardArrowRight (androidx.compose.material.icons.Icons.AutoMirrored.Rounded.KeyboardArrowRight: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def List(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.rounded.List (androidx.compose.material.icons.Icons.AutoMirrored.Rounded.List: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Send(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.rounded.Send (androidx.compose.material.icons.Icons.AutoMirrored.Rounded.Send: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ class Sharp:
+ """Kotlin: androidx.compose.material.icons.Icons.AutoMirrored.Sharp"""
+ @property
+ def ArrowBack(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.sharp.ArrowBack (androidx.compose.material.icons.Icons.AutoMirrored.Sharp.ArrowBack: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowForward(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.sharp.ArrowForward (androidx.compose.material.icons.Icons.AutoMirrored.Sharp.ArrowForward: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ExitToApp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.sharp.ExitToApp (androidx.compose.material.icons.Icons.AutoMirrored.Sharp.ExitToApp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowLeft(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.sharp.KeyboardArrowLeft (androidx.compose.material.icons.Icons.AutoMirrored.Sharp.KeyboardArrowLeft: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowRight(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.sharp.KeyboardArrowRight (androidx.compose.material.icons.Icons.AutoMirrored.Sharp.KeyboardArrowRight: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def List(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.sharp.List (androidx.compose.material.icons.Icons.AutoMirrored.Sharp.List: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Send(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.sharp.Send (androidx.compose.material.icons.Icons.AutoMirrored.Sharp.Send: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ class TwoTone:
+ """Kotlin: androidx.compose.material.icons.Icons.AutoMirrored.TwoTone"""
+ @property
+ def ArrowBack(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.twotone.ArrowBack (androidx.compose.material.icons.Icons.AutoMirrored.TwoTone.ArrowBack: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowForward(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.twotone.ArrowForward (androidx.compose.material.icons.Icons.AutoMirrored.TwoTone.ArrowForward: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ExitToApp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.twotone.ExitToApp (androidx.compose.material.icons.Icons.AutoMirrored.TwoTone.ExitToApp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowLeft(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.twotone.KeyboardArrowLeft (androidx.compose.material.icons.Icons.AutoMirrored.TwoTone.KeyboardArrowLeft: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowRight(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.twotone.KeyboardArrowRight (androidx.compose.material.icons.Icons.AutoMirrored.TwoTone.KeyboardArrowRight: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def List(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.twotone.List (androidx.compose.material.icons.Icons.AutoMirrored.TwoTone.List: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Send(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.twotone.Send (androidx.compose.material.icons.Icons.AutoMirrored.TwoTone.Send: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ class Filled:
+ """Kotlin: androidx.compose.material.icons.Icons.Filled"""
+ @property
+ def AccountBox(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.AccountBox (androidx.compose.material.icons.Icons.Filled.AccountBox: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def AccountCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.AccountCircle (androidx.compose.material.icons.Icons.Filled.AccountCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Add(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Add (androidx.compose.material.icons.Icons.Filled.Add: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def AddCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.AddCircle (androidx.compose.material.icons.Icons.Filled.AddCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowBack(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.ArrowBack (androidx.compose.material.icons.Icons.Filled.ArrowBack: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowDropDown(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.ArrowDropDown (androidx.compose.material.icons.Icons.Filled.ArrowDropDown: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowForward(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.ArrowForward (androidx.compose.material.icons.Icons.Filled.ArrowForward: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Build(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Build (androidx.compose.material.icons.Icons.Filled.Build: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Call(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Call (androidx.compose.material.icons.Icons.Filled.Call: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Check(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Check (androidx.compose.material.icons.Icons.Filled.Check: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def CheckCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.CheckCircle (androidx.compose.material.icons.Icons.Filled.CheckCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Clear(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Clear (androidx.compose.material.icons.Icons.Filled.Clear: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Close(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Close (androidx.compose.material.icons.Icons.Filled.Close: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Create(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Create (androidx.compose.material.icons.Icons.Filled.Create: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def DateRange(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.DateRange (androidx.compose.material.icons.Icons.Filled.DateRange: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Delete(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Delete (androidx.compose.material.icons.Icons.Filled.Delete: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Done(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Done (androidx.compose.material.icons.Icons.Filled.Done: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Edit(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Edit (androidx.compose.material.icons.Icons.Filled.Edit: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Email(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Email (androidx.compose.material.icons.Icons.Filled.Email: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ExitToApp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.ExitToApp (androidx.compose.material.icons.Icons.Filled.ExitToApp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Face(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Face (androidx.compose.material.icons.Icons.Filled.Face: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Favorite(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Favorite (androidx.compose.material.icons.Icons.Filled.Favorite: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def FavoriteBorder(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.FavoriteBorder (androidx.compose.material.icons.Icons.Filled.FavoriteBorder: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Home(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Home (androidx.compose.material.icons.Icons.Filled.Home: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Info(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Info (androidx.compose.material.icons.Icons.Filled.Info: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowDown(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.KeyboardArrowDown (androidx.compose.material.icons.Icons.Filled.KeyboardArrowDown: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowLeft(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.KeyboardArrowLeft (androidx.compose.material.icons.Icons.Filled.KeyboardArrowLeft: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowRight(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.KeyboardArrowRight (androidx.compose.material.icons.Icons.Filled.KeyboardArrowRight: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowUp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.KeyboardArrowUp (androidx.compose.material.icons.Icons.Filled.KeyboardArrowUp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def List(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.List (androidx.compose.material.icons.Icons.Filled.List: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def LocationOn(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.LocationOn (androidx.compose.material.icons.Icons.Filled.LocationOn: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Lock(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Lock (androidx.compose.material.icons.Icons.Filled.Lock: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def MailOutline(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.MailOutline (androidx.compose.material.icons.Icons.Filled.MailOutline: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Menu(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Menu (androidx.compose.material.icons.Icons.Filled.Menu: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def MoreVert(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.MoreVert (androidx.compose.material.icons.Icons.Filled.MoreVert: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Notifications(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Notifications (androidx.compose.material.icons.Icons.Filled.Notifications: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Person(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Person (androidx.compose.material.icons.Icons.Filled.Person: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Phone(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Phone (androidx.compose.material.icons.Icons.Filled.Phone: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Place(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Place (androidx.compose.material.icons.Icons.Filled.Place: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def PlayArrow(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.PlayArrow (androidx.compose.material.icons.Icons.Filled.PlayArrow: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Refresh(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Refresh (androidx.compose.material.icons.Icons.Filled.Refresh: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Search(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Search (androidx.compose.material.icons.Icons.Filled.Search: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Send(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Send (androidx.compose.material.icons.Icons.Filled.Send: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Settings(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Settings (androidx.compose.material.icons.Icons.Filled.Settings: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Share(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Share (androidx.compose.material.icons.Icons.Filled.Share: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ShoppingCart(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.ShoppingCart (androidx.compose.material.icons.Icons.Filled.ShoppingCart: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Star(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Star (androidx.compose.material.icons.Icons.Filled.Star: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ThumbUp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.ThumbUp (androidx.compose.material.icons.Icons.Filled.ThumbUp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Warning(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Warning (androidx.compose.material.icons.Icons.Filled.Warning: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ Default: _t.ClassVar[Icons.Filled]
+ class Outlined:
+ """Kotlin: androidx.compose.material.icons.Icons.Outlined"""
+ @property
+ def AccountBox(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.AccountBox (androidx.compose.material.icons.Icons.Outlined.AccountBox: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def AccountCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.AccountCircle (androidx.compose.material.icons.Icons.Outlined.AccountCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Add(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Add (androidx.compose.material.icons.Icons.Outlined.Add: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def AddCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.AddCircle (androidx.compose.material.icons.Icons.Outlined.AddCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowBack(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.ArrowBack (androidx.compose.material.icons.Icons.Outlined.ArrowBack: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowDropDown(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.ArrowDropDown (androidx.compose.material.icons.Icons.Outlined.ArrowDropDown: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowForward(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.ArrowForward (androidx.compose.material.icons.Icons.Outlined.ArrowForward: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Build(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Build (androidx.compose.material.icons.Icons.Outlined.Build: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Call(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Call (androidx.compose.material.icons.Icons.Outlined.Call: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Check(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Check (androidx.compose.material.icons.Icons.Outlined.Check: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def CheckCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.CheckCircle (androidx.compose.material.icons.Icons.Outlined.CheckCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Clear(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Clear (androidx.compose.material.icons.Icons.Outlined.Clear: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Close(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Close (androidx.compose.material.icons.Icons.Outlined.Close: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Create(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Create (androidx.compose.material.icons.Icons.Outlined.Create: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def DateRange(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.DateRange (androidx.compose.material.icons.Icons.Outlined.DateRange: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Delete(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Delete (androidx.compose.material.icons.Icons.Outlined.Delete: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Done(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Done (androidx.compose.material.icons.Icons.Outlined.Done: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Edit(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Edit (androidx.compose.material.icons.Icons.Outlined.Edit: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Email(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Email (androidx.compose.material.icons.Icons.Outlined.Email: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ExitToApp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.ExitToApp (androidx.compose.material.icons.Icons.Outlined.ExitToApp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Face(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Face (androidx.compose.material.icons.Icons.Outlined.Face: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Favorite(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Favorite (androidx.compose.material.icons.Icons.Outlined.Favorite: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def FavoriteBorder(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.FavoriteBorder (androidx.compose.material.icons.Icons.Outlined.FavoriteBorder: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Home(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Home (androidx.compose.material.icons.Icons.Outlined.Home: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Info(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Info (androidx.compose.material.icons.Icons.Outlined.Info: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowDown(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.KeyboardArrowDown (androidx.compose.material.icons.Icons.Outlined.KeyboardArrowDown: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowLeft(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.KeyboardArrowLeft (androidx.compose.material.icons.Icons.Outlined.KeyboardArrowLeft: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowRight(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.KeyboardArrowRight (androidx.compose.material.icons.Icons.Outlined.KeyboardArrowRight: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowUp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.KeyboardArrowUp (androidx.compose.material.icons.Icons.Outlined.KeyboardArrowUp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def List(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.List (androidx.compose.material.icons.Icons.Outlined.List: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def LocationOn(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.LocationOn (androidx.compose.material.icons.Icons.Outlined.LocationOn: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Lock(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Lock (androidx.compose.material.icons.Icons.Outlined.Lock: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def MailOutline(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.MailOutline (androidx.compose.material.icons.Icons.Outlined.MailOutline: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Menu(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Menu (androidx.compose.material.icons.Icons.Outlined.Menu: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def MoreVert(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.MoreVert (androidx.compose.material.icons.Icons.Outlined.MoreVert: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Notifications(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Notifications (androidx.compose.material.icons.Icons.Outlined.Notifications: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Person(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Person (androidx.compose.material.icons.Icons.Outlined.Person: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Phone(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Phone (androidx.compose.material.icons.Icons.Outlined.Phone: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Place(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Place (androidx.compose.material.icons.Icons.Outlined.Place: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def PlayArrow(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.PlayArrow (androidx.compose.material.icons.Icons.Outlined.PlayArrow: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Refresh(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Refresh (androidx.compose.material.icons.Icons.Outlined.Refresh: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Search(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Search (androidx.compose.material.icons.Icons.Outlined.Search: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Send(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Send (androidx.compose.material.icons.Icons.Outlined.Send: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Settings(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Settings (androidx.compose.material.icons.Icons.Outlined.Settings: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Share(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Share (androidx.compose.material.icons.Icons.Outlined.Share: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ShoppingCart(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.ShoppingCart (androidx.compose.material.icons.Icons.Outlined.ShoppingCart: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Star(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Star (androidx.compose.material.icons.Icons.Outlined.Star: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ThumbUp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.ThumbUp (androidx.compose.material.icons.Icons.Outlined.ThumbUp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Warning(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.outlined.Warning (androidx.compose.material.icons.Icons.Outlined.Warning: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ class Rounded:
+ """Kotlin: androidx.compose.material.icons.Icons.Rounded"""
+ @property
+ def AccountBox(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.AccountBox (androidx.compose.material.icons.Icons.Rounded.AccountBox: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def AccountCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.AccountCircle (androidx.compose.material.icons.Icons.Rounded.AccountCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Add(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Add (androidx.compose.material.icons.Icons.Rounded.Add: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def AddCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.AddCircle (androidx.compose.material.icons.Icons.Rounded.AddCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowBack(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.ArrowBack (androidx.compose.material.icons.Icons.Rounded.ArrowBack: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowDropDown(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.ArrowDropDown (androidx.compose.material.icons.Icons.Rounded.ArrowDropDown: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowForward(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.ArrowForward (androidx.compose.material.icons.Icons.Rounded.ArrowForward: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Build(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Build (androidx.compose.material.icons.Icons.Rounded.Build: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Call(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Call (androidx.compose.material.icons.Icons.Rounded.Call: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Check(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Check (androidx.compose.material.icons.Icons.Rounded.Check: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def CheckCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.CheckCircle (androidx.compose.material.icons.Icons.Rounded.CheckCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Clear(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Clear (androidx.compose.material.icons.Icons.Rounded.Clear: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Close(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Close (androidx.compose.material.icons.Icons.Rounded.Close: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Create(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Create (androidx.compose.material.icons.Icons.Rounded.Create: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def DateRange(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.DateRange (androidx.compose.material.icons.Icons.Rounded.DateRange: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Delete(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Delete (androidx.compose.material.icons.Icons.Rounded.Delete: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Done(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Done (androidx.compose.material.icons.Icons.Rounded.Done: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Edit(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Edit (androidx.compose.material.icons.Icons.Rounded.Edit: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Email(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Email (androidx.compose.material.icons.Icons.Rounded.Email: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ExitToApp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.ExitToApp (androidx.compose.material.icons.Icons.Rounded.ExitToApp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Face(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Face (androidx.compose.material.icons.Icons.Rounded.Face: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Favorite(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Favorite (androidx.compose.material.icons.Icons.Rounded.Favorite: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def FavoriteBorder(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.FavoriteBorder (androidx.compose.material.icons.Icons.Rounded.FavoriteBorder: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Home(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Home (androidx.compose.material.icons.Icons.Rounded.Home: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Info(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Info (androidx.compose.material.icons.Icons.Rounded.Info: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowDown(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.KeyboardArrowDown (androidx.compose.material.icons.Icons.Rounded.KeyboardArrowDown: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowLeft(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.KeyboardArrowLeft (androidx.compose.material.icons.Icons.Rounded.KeyboardArrowLeft: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowRight(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.KeyboardArrowRight (androidx.compose.material.icons.Icons.Rounded.KeyboardArrowRight: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowUp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.KeyboardArrowUp (androidx.compose.material.icons.Icons.Rounded.KeyboardArrowUp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def List(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.List (androidx.compose.material.icons.Icons.Rounded.List: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def LocationOn(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.LocationOn (androidx.compose.material.icons.Icons.Rounded.LocationOn: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Lock(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Lock (androidx.compose.material.icons.Icons.Rounded.Lock: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def MailOutline(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.MailOutline (androidx.compose.material.icons.Icons.Rounded.MailOutline: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Menu(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Menu (androidx.compose.material.icons.Icons.Rounded.Menu: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def MoreVert(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.MoreVert (androidx.compose.material.icons.Icons.Rounded.MoreVert: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Notifications(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Notifications (androidx.compose.material.icons.Icons.Rounded.Notifications: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Person(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Person (androidx.compose.material.icons.Icons.Rounded.Person: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Phone(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Phone (androidx.compose.material.icons.Icons.Rounded.Phone: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Place(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Place (androidx.compose.material.icons.Icons.Rounded.Place: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def PlayArrow(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.PlayArrow (androidx.compose.material.icons.Icons.Rounded.PlayArrow: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Refresh(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Refresh (androidx.compose.material.icons.Icons.Rounded.Refresh: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Search(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Search (androidx.compose.material.icons.Icons.Rounded.Search: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Send(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Send (androidx.compose.material.icons.Icons.Rounded.Send: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Settings(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Settings (androidx.compose.material.icons.Icons.Rounded.Settings: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Share(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Share (androidx.compose.material.icons.Icons.Rounded.Share: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ShoppingCart(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.ShoppingCart (androidx.compose.material.icons.Icons.Rounded.ShoppingCart: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Star(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Star (androidx.compose.material.icons.Icons.Rounded.Star: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ThumbUp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.ThumbUp (androidx.compose.material.icons.Icons.Rounded.ThumbUp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Warning(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.rounded.Warning (androidx.compose.material.icons.Icons.Rounded.Warning: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ class Sharp:
+ """Kotlin: androidx.compose.material.icons.Icons.Sharp"""
+ @property
+ def AccountBox(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.AccountBox (androidx.compose.material.icons.Icons.Sharp.AccountBox: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def AccountCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.AccountCircle (androidx.compose.material.icons.Icons.Sharp.AccountCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Add(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Add (androidx.compose.material.icons.Icons.Sharp.Add: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def AddCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.AddCircle (androidx.compose.material.icons.Icons.Sharp.AddCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowBack(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.ArrowBack (androidx.compose.material.icons.Icons.Sharp.ArrowBack: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowDropDown(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.ArrowDropDown (androidx.compose.material.icons.Icons.Sharp.ArrowDropDown: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowForward(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.ArrowForward (androidx.compose.material.icons.Icons.Sharp.ArrowForward: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Build(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Build (androidx.compose.material.icons.Icons.Sharp.Build: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Call(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Call (androidx.compose.material.icons.Icons.Sharp.Call: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Check(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Check (androidx.compose.material.icons.Icons.Sharp.Check: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def CheckCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.CheckCircle (androidx.compose.material.icons.Icons.Sharp.CheckCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Clear(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Clear (androidx.compose.material.icons.Icons.Sharp.Clear: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Close(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Close (androidx.compose.material.icons.Icons.Sharp.Close: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Create(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Create (androidx.compose.material.icons.Icons.Sharp.Create: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def DateRange(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.DateRange (androidx.compose.material.icons.Icons.Sharp.DateRange: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Delete(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Delete (androidx.compose.material.icons.Icons.Sharp.Delete: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Done(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Done (androidx.compose.material.icons.Icons.Sharp.Done: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Edit(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Edit (androidx.compose.material.icons.Icons.Sharp.Edit: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Email(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Email (androidx.compose.material.icons.Icons.Sharp.Email: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ExitToApp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.ExitToApp (androidx.compose.material.icons.Icons.Sharp.ExitToApp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Face(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Face (androidx.compose.material.icons.Icons.Sharp.Face: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Favorite(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Favorite (androidx.compose.material.icons.Icons.Sharp.Favorite: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def FavoriteBorder(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.FavoriteBorder (androidx.compose.material.icons.Icons.Sharp.FavoriteBorder: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Home(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Home (androidx.compose.material.icons.Icons.Sharp.Home: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Info(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Info (androidx.compose.material.icons.Icons.Sharp.Info: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowDown(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.KeyboardArrowDown (androidx.compose.material.icons.Icons.Sharp.KeyboardArrowDown: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowLeft(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.KeyboardArrowLeft (androidx.compose.material.icons.Icons.Sharp.KeyboardArrowLeft: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowRight(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.KeyboardArrowRight (androidx.compose.material.icons.Icons.Sharp.KeyboardArrowRight: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowUp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.KeyboardArrowUp (androidx.compose.material.icons.Icons.Sharp.KeyboardArrowUp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def List(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.List (androidx.compose.material.icons.Icons.Sharp.List: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def LocationOn(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.LocationOn (androidx.compose.material.icons.Icons.Sharp.LocationOn: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Lock(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Lock (androidx.compose.material.icons.Icons.Sharp.Lock: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def MailOutline(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.MailOutline (androidx.compose.material.icons.Icons.Sharp.MailOutline: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Menu(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Menu (androidx.compose.material.icons.Icons.Sharp.Menu: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def MoreVert(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.MoreVert (androidx.compose.material.icons.Icons.Sharp.MoreVert: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Notifications(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Notifications (androidx.compose.material.icons.Icons.Sharp.Notifications: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Person(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Person (androidx.compose.material.icons.Icons.Sharp.Person: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Phone(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Phone (androidx.compose.material.icons.Icons.Sharp.Phone: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Place(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Place (androidx.compose.material.icons.Icons.Sharp.Place: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def PlayArrow(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.PlayArrow (androidx.compose.material.icons.Icons.Sharp.PlayArrow: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Refresh(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Refresh (androidx.compose.material.icons.Icons.Sharp.Refresh: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Search(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Search (androidx.compose.material.icons.Icons.Sharp.Search: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Send(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Send (androidx.compose.material.icons.Icons.Sharp.Send: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Settings(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Settings (androidx.compose.material.icons.Icons.Sharp.Settings: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Share(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Share (androidx.compose.material.icons.Icons.Sharp.Share: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ShoppingCart(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.ShoppingCart (androidx.compose.material.icons.Icons.Sharp.ShoppingCart: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Star(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Star (androidx.compose.material.icons.Icons.Sharp.Star: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ThumbUp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.ThumbUp (androidx.compose.material.icons.Icons.Sharp.ThumbUp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Warning(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.sharp.Warning (androidx.compose.material.icons.Icons.Sharp.Warning: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ class TwoTone:
+ """Kotlin: androidx.compose.material.icons.Icons.TwoTone"""
+ @property
+ def AccountBox(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.AccountBox (androidx.compose.material.icons.Icons.TwoTone.AccountBox: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def AccountCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.AccountCircle (androidx.compose.material.icons.Icons.TwoTone.AccountCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Add(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Add (androidx.compose.material.icons.Icons.TwoTone.Add: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def AddCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.AddCircle (androidx.compose.material.icons.Icons.TwoTone.AddCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowBack(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.ArrowBack (androidx.compose.material.icons.Icons.TwoTone.ArrowBack: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowDropDown(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.ArrowDropDown (androidx.compose.material.icons.Icons.TwoTone.ArrowDropDown: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ArrowForward(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.ArrowForward (androidx.compose.material.icons.Icons.TwoTone.ArrowForward: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Build(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Build (androidx.compose.material.icons.Icons.TwoTone.Build: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Call(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Call (androidx.compose.material.icons.Icons.TwoTone.Call: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Check(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Check (androidx.compose.material.icons.Icons.TwoTone.Check: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def CheckCircle(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.CheckCircle (androidx.compose.material.icons.Icons.TwoTone.CheckCircle: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Clear(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Clear (androidx.compose.material.icons.Icons.TwoTone.Clear: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Close(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Close (androidx.compose.material.icons.Icons.TwoTone.Close: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Create(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Create (androidx.compose.material.icons.Icons.TwoTone.Create: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def DateRange(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.DateRange (androidx.compose.material.icons.Icons.TwoTone.DateRange: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Delete(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Delete (androidx.compose.material.icons.Icons.TwoTone.Delete: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Done(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Done (androidx.compose.material.icons.Icons.TwoTone.Done: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Edit(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Edit (androidx.compose.material.icons.Icons.TwoTone.Edit: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Email(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Email (androidx.compose.material.icons.Icons.TwoTone.Email: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ExitToApp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.ExitToApp (androidx.compose.material.icons.Icons.TwoTone.ExitToApp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Face(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Face (androidx.compose.material.icons.Icons.TwoTone.Face: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Favorite(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Favorite (androidx.compose.material.icons.Icons.TwoTone.Favorite: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def FavoriteBorder(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.FavoriteBorder (androidx.compose.material.icons.Icons.TwoTone.FavoriteBorder: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Home(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Home (androidx.compose.material.icons.Icons.TwoTone.Home: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Info(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Info (androidx.compose.material.icons.Icons.TwoTone.Info: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowDown(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.KeyboardArrowDown (androidx.compose.material.icons.Icons.TwoTone.KeyboardArrowDown: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowLeft(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.KeyboardArrowLeft (androidx.compose.material.icons.Icons.TwoTone.KeyboardArrowLeft: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowRight(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.KeyboardArrowRight (androidx.compose.material.icons.Icons.TwoTone.KeyboardArrowRight: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def KeyboardArrowUp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.KeyboardArrowUp (androidx.compose.material.icons.Icons.TwoTone.KeyboardArrowUp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def List(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.List (androidx.compose.material.icons.Icons.TwoTone.List: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def LocationOn(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.LocationOn (androidx.compose.material.icons.Icons.TwoTone.LocationOn: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Lock(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Lock (androidx.compose.material.icons.Icons.TwoTone.Lock: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def MailOutline(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.MailOutline (androidx.compose.material.icons.Icons.TwoTone.MailOutline: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Menu(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Menu (androidx.compose.material.icons.Icons.TwoTone.Menu: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def MoreVert(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.MoreVert (androidx.compose.material.icons.Icons.TwoTone.MoreVert: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Notifications(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Notifications (androidx.compose.material.icons.Icons.TwoTone.Notifications: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Person(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Person (androidx.compose.material.icons.Icons.TwoTone.Person: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Phone(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Phone (androidx.compose.material.icons.Icons.TwoTone.Phone: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Place(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Place (androidx.compose.material.icons.Icons.TwoTone.Place: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def PlayArrow(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.PlayArrow (androidx.compose.material.icons.Icons.TwoTone.PlayArrow: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Refresh(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Refresh (androidx.compose.material.icons.Icons.TwoTone.Refresh: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Search(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Search (androidx.compose.material.icons.Icons.TwoTone.Search: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Send(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Send (androidx.compose.material.icons.Icons.TwoTone.Send: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Settings(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Settings (androidx.compose.material.icons.Icons.TwoTone.Settings: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Share(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Share (androidx.compose.material.icons.Icons.TwoTone.Share: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ShoppingCart(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.ShoppingCart (androidx.compose.material.icons.Icons.TwoTone.ShoppingCart: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Star(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Star (androidx.compose.material.icons.Icons.TwoTone.Star: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def ThumbUp(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.ThumbUp (androidx.compose.material.icons.Icons.TwoTone.ThumbUp: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ @property
+ def Warning(self) -> pythonx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.twotone.Warning (androidx.compose.material.icons.Icons.TwoTone.Warning: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+ Default: _t.ClassVar[Icons.Filled]
+ """Kotlin: androidx.compose.material.icons.Icons.Default(): androidx.compose.material.icons.Icons.Filled"""
diff --git a/pythonx/compose/material3/__init__.py b/pythonx/compose/material3/__init__.py
index 942b80c..2973b78 100644
--- a/pythonx/compose/material3/__init__.py
+++ b/pythonx/compose/material3/__init__.py
@@ -1,46 +1,24 @@
-# Theming
-from .material_theming import *
-from .color_scheme import *
-from .dynamic_color import *
-from .typography import *
-from .shape import *
+"""`pythonx.compose.material3` -- the Pythonic view of `androidx.compose.material3`.
-# Components
-from .badge import *
-from .bottom_app_bar import *
-from .bottom_sheet import *
-from .buttons import *
-from .cards import *
-from .checkbox import *
-from .date_picker import *
-from .dialogs import *
-from .dividers import *
-from .extended_fab import *
-from .fab import *
-from .icon_button import *
-from .lists import *
-from .menus import *
-from .navigation_bar import *
-from .navigation_drawer import *
-from .navigation_rail import *
-from .progress_indicators import *
-from .radio_button import *
-from .search_bar import *
-from .segmented_button import *
-from .sliders import *
-from .snackbars import *
-from .swipe_to_dismiss import *
-from .switch import *
-from .tabs import *
-from .text_field import *
-from .time_picker import *
-from .tool_tip import *
-from .top_app_bar import *
+Every Material 3 composable (`Text`, `Button`, `Card`, `TextField`, `Checkbox`, ...) is served by
+the one rule in `pythonx/compose/_reexport.py`: Kotlin's own declaration, upper-case names kept,
+keyword arguments in snake_case (`on_click=`). There is no per-widget file here, on purpose
+(AGENTS.md section 13). The notebook's `Column`, `Row` and `Spacer` are answered from
+`pythonx.compose.layout` by the manifest's `[aliases]` (INTENT section 5.2).
-# Surfaces and layout
-from .surfaces import *
-from .scaffold import *
+## What used to be here
-# Icons and text
-from .icon import *
-from .text import *
+Per-widget wrappers from 2024 (`text.py`, `buttons.py`, `cards.py`, `icon_button.py`,
+`text_field.py`, ...), each a copy of one template that looked a Kotlin function up by a
+mangled-name prefix (`name.startswith("Button-")`), which Kotlin's value-class mangling makes
+impossible. They were deleted as the binder rendered each declaration with no wrapper
+(python-multiplatform `c60bcfeb`, `a6742a1c`, `3fde8bd6`, `cac8243f`). `icon.py` and
+`color_scheme.py` were kept as records of two declarations that cannot be called yet, and 29
+sibling files had always been empty; all were deleted in pythonx-compose #31. What `icon.py`
+recorded -- `Icon` needs an `ImageVector` nothing bound produces -- is SPEC S5.3. `git log` on this
+directory has the rest.
+"""
+
+from pythonx.compose._reexport import reexport
+
+__getattr__, __dir__ = reexport(__name__)
diff --git a/pythonx/compose/material3/__init__.pyi b/pythonx/compose/material3/__init__.pyi
new file mode 100644
index 0000000..fbfde90
--- /dev/null
+++ b/pythonx/compose/material3/__init__.pyi
@@ -0,0 +1,3305 @@
+# GENERATED by pythonx/_build/gen_stubs.py from python-multiplatform's Kotlin-named stubs (artifact kotlin-stubs, workflow run 37103737430, commit a5028618, Compose 1.11.1). Do not edit.
+import typing as _t
+import pythonx.compose.foundation
+import pythonx.compose.foundation.text.input
+import pythonx.compose.layout
+import pythonx.compose.ui
+import pythonx.compose.ui.graphics
+import pythonx.compose.ui.graphics.vector
+import pythonx.compose.ui.text
+from pythonx.compose.layout import Column as Column
+from pythonx.compose.layout import Row as Row
+from pythonx.compose.layout import Spacer as Spacer
+import pythonx.compose.material.icons as _alias_0
+
+DefaultIcons = _alias_0.Icons.Default
+
+class _ColorScheme_contentColorFor(_t.Protocol):
+ def __call__(self, background_color: _t.Any) -> _t.Any: ...
+
+class _ColorScheme_contentColorFor__ColorScheme_Color(_t.Protocol):
+ def __call__(self, background_color: _t.Any) -> _t.Any: ...
+
+class _ColorScheme_surfaceColorAtElevation(_t.Protocol):
+ def __call__(self, elevation: float) -> _t.Any: ...
+
+class _MultiChoiceSegmentedButtonRowScope_SegmentedButton(_t.Protocol):
+ def __call__(self, checked: bool, on_checked_change: _t.Callable[[bool], None], shape: pythonx.compose.ui.graphics.Shape, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SegmentedButtonColors = ..., border: pythonx.compose.foundation.BorderStroke = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., icon: _t.Callable[[], None] = ..., *, label: _t.Callable[[], None]) -> None: ...
+
+class _MultiChoiceSegmentedButtonRowScope_SegmentedButton__MultiChoiceSegmentedButtonRowScope_Boolean_Unit_Shape_Modifier_Boolean_SegmentedButtonColors_BorderStroke_PaddingValues_MutableInteractionSource_Unit_Unit(_t.Protocol):
+ def __call__(self, checked: bool, on_checked_change: _t.Callable[[bool], None], shape: pythonx.compose.ui.graphics.Shape, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SegmentedButtonColors = ..., border: pythonx.compose.foundation.BorderStroke = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., icon: _t.Callable[[], None] = ..., *, label: _t.Callable[[], None]) -> None: ...
+
+class _SingleChoiceSegmentedButtonRowScope_SegmentedButton(_t.Protocol):
+ def __call__(self, selected: bool, on_click: _t.Callable[[], None], shape: pythonx.compose.ui.graphics.Shape, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SegmentedButtonColors = ..., border: pythonx.compose.foundation.BorderStroke = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., icon: _t.Callable[[], None] = ..., *, label: _t.Callable[[], None]) -> None: ...
+
+class _SingleChoiceSegmentedButtonRowScope_SegmentedButton__SingleChoiceSegmentedButtonRowScope_Boolean_Unit_Shape_Modifier_Boolean_SegmentedButtonColors_BorderStroke_PaddingValues_MutableInteractionSource_Unit_Unit(_t.Protocol):
+ def __call__(self, selected: bool, on_click: _t.Callable[[], None], shape: pythonx.compose.ui.graphics.Shape, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SegmentedButtonColors = ..., border: pythonx.compose.foundation.BorderStroke = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., icon: _t.Callable[[], None] = ..., *, label: _t.Callable[[], None]) -> None: ...
+
+class _TooltipScope_PlainTooltip(_t.Protocol):
+ def __call__(self, modifier: pythonx.compose.ui.Modifier = ..., caret_shape: pythonx.compose.ui.graphics.Shape | None = ..., max_width: float = ..., shape: pythonx.compose.ui.graphics.Shape = ..., content_color: _t.Any = ..., container_color: _t.Any = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., *, content: _t.Callable[[], None]) -> None: ...
+
+class _TooltipScope_RichTooltip(_t.Protocol):
+ def __call__(self, modifier: pythonx.compose.ui.Modifier = ..., title: _t.Callable[[], None] | None = ..., action: _t.Callable[[], None] | None = ..., caret_shape: pythonx.compose.ui.graphics.Shape | None = ..., max_width: float = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: RichTooltipColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., *, text: _t.Callable[[], None]) -> None: ...
+
+class AppBarColumnScope:
+ """Kotlin: androidx.compose.material3.AppBarColumnScope"""
+
+class AppBarMenuState:
+ """Kotlin: androidx.compose.material3.AppBarMenuState"""
+ def __init__(self) -> None:
+ """Kotlin constructor: androidx.compose.material3.AppBarMenuState (androidx.compose.material3.AppBarMenuState(): androidx.compose.material3.AppBarMenuState)"""
+ ...
+ @property
+ def is_expanded(self) -> bool:
+ """Kotlin property: androidx.compose.material3.AppBarMenuState.isExpanded (androidx.compose.material3.AppBarMenuState.isExpanded: kotlin.Boolean)"""
+ ...
+
+class AppBarRowScope:
+ """Kotlin: androidx.compose.material3.AppBarRowScope"""
+
+class BottomAppBarScrollBehavior:
+ """Kotlin: androidx.compose.material3.BottomAppBarScrollBehavior"""
+ @property
+ def is_pinned(self) -> bool:
+ """Kotlin property: androidx.compose.material3.BottomAppBarScrollBehavior.isPinned (androidx.compose.material3.BottomAppBarScrollBehavior.isPinned: kotlin.Boolean)"""
+ ...
+ @property
+ def nested_scroll_connection(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.BottomAppBarScrollBehavior.nestedScrollConnection (androidx.compose.material3.BottomAppBarScrollBehavior.nestedScrollConnection: androidx.compose.ui.input.nestedscroll.NestedScrollConnection)"""
+ ...
+ @property
+ def state(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.BottomAppBarScrollBehavior.state (androidx.compose.material3.BottomAppBarScrollBehavior.state: androidx.compose.material3.BottomAppBarState)"""
+ ...
+
+class BottomSheetScaffoldState:
+ """Kotlin: androidx.compose.material3.BottomSheetScaffoldState"""
+ def __init__(self, bottomSheetState: SheetState, snackbarHostState: SnackbarHostState) -> None:
+ """Kotlin constructor: androidx.compose.material3.BottomSheetScaffoldState (androidx.compose.material3.BottomSheetScaffoldState(bottomSheetState: androidx.compose.material3.SheetState, snackbarHostState: androidx.compose.material3.SnackbarHostState): androidx.compose.material3.BottomSheetScaffoldState)"""
+ ...
+ @property
+ def bottom_sheet_state(self) -> SheetState:
+ """Kotlin property: androidx.compose.material3.BottomSheetScaffoldState.bottomSheetState (androidx.compose.material3.BottomSheetScaffoldState.bottomSheetState: androidx.compose.material3.SheetState)"""
+ ...
+ @property
+ def snackbar_host_state(self) -> SnackbarHostState:
+ """Kotlin property: androidx.compose.material3.BottomSheetScaffoldState.snackbarHostState (androidx.compose.material3.BottomSheetScaffoldState.snackbarHostState: androidx.compose.material3.SnackbarHostState)"""
+ ...
+
+class ButtonColors:
+ """Kotlin: androidx.compose.material3.ButtonColors"""
+ def __init__(self, containerColor: _t.Any, contentColor: _t.Any, disabledContainerColor: _t.Any, disabledContentColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.ButtonColors (androidx.compose.material3.ButtonColors(containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, disabledContainerColor: androidx.compose.ui.graphics.Color, disabledContentColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.ButtonColors)"""
+ ...
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ButtonColors.containerColor (androidx.compose.material3.ButtonColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ButtonColors.contentColor (androidx.compose.material3.ButtonColors.contentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ButtonColors.disabledContainerColor (androidx.compose.material3.ButtonColors.disabledContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ButtonColors.disabledContentColor (androidx.compose.material3.ButtonColors.disabledContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class ButtonElevation:
+ """Kotlin: androidx.compose.material3.ButtonElevation"""
+
+class CardColors:
+ """Kotlin: androidx.compose.material3.CardColors"""
+ def __init__(self, containerColor: _t.Any, contentColor: _t.Any, disabledContainerColor: _t.Any, disabledContentColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.CardColors (androidx.compose.material3.CardColors(containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, disabledContainerColor: androidx.compose.ui.graphics.Color, disabledContentColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.CardColors)"""
+ ...
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CardColors.containerColor (androidx.compose.material3.CardColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CardColors.contentColor (androidx.compose.material3.CardColors.contentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CardColors.disabledContainerColor (androidx.compose.material3.CardColors.disabledContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CardColors.disabledContentColor (androidx.compose.material3.CardColors.disabledContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class CardElevation:
+ """Kotlin: androidx.compose.material3.CardElevation"""
+
+class CheckboxColors:
+ """Kotlin: androidx.compose.material3.CheckboxColors"""
+ def __init__(self, checkedCheckmarkColor: _t.Any, uncheckedCheckmarkColor: _t.Any, checkedBoxColor: _t.Any, uncheckedBoxColor: _t.Any, disabledCheckedBoxColor: _t.Any, disabledUncheckedBoxColor: _t.Any, disabledIndeterminateBoxColor: _t.Any, checkedBorderColor: _t.Any, uncheckedBorderColor: _t.Any, disabledBorderColor: _t.Any, disabledUncheckedBorderColor: _t.Any, disabledIndeterminateBorderColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.CheckboxColors (androidx.compose.material3.CheckboxColors(checkedCheckmarkColor: androidx.compose.ui.graphics.Color, uncheckedCheckmarkColor: androidx.compose.ui.graphics.Color, checkedBoxColor: androidx.compose.ui.graphics.Color, uncheckedBoxColor: androidx.compose.ui.graphics.Color, disabledCheckedBoxColor: androidx.compose.ui.graphics.Color, disabledUncheckedBoxColor: androidx.compose.ui.graphics.Color, disabledIndeterminateBoxColor: androidx.compose.ui.graphics.Color, checkedBorderColor: androidx.compose.ui.graphics.Color, uncheckedBorderColor: androidx.compose.ui.graphics.Color, disabledBorderColor: androidx.compose.ui.graphics.Color, disabledUncheckedBorderColor: androidx.compose.ui.graphics.Color, disabledIndeterminateBorderColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.CheckboxColors)"""
+ ...
+ @property
+ def checked_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.checkedBorderColor (androidx.compose.material3.CheckboxColors.checkedBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def checked_box_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.checkedBoxColor (androidx.compose.material3.CheckboxColors.checkedBoxColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def checked_checkmark_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.checkedCheckmarkColor (androidx.compose.material3.CheckboxColors.checkedCheckmarkColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.disabledBorderColor (androidx.compose.material3.CheckboxColors.disabledBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_checked_box_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.disabledCheckedBoxColor (androidx.compose.material3.CheckboxColors.disabledCheckedBoxColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_indeterminate_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.disabledIndeterminateBorderColor (androidx.compose.material3.CheckboxColors.disabledIndeterminateBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_indeterminate_box_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.disabledIndeterminateBoxColor (androidx.compose.material3.CheckboxColors.disabledIndeterminateBoxColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_unchecked_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.disabledUncheckedBorderColor (androidx.compose.material3.CheckboxColors.disabledUncheckedBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_unchecked_box_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.disabledUncheckedBoxColor (androidx.compose.material3.CheckboxColors.disabledUncheckedBoxColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unchecked_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.uncheckedBorderColor (androidx.compose.material3.CheckboxColors.uncheckedBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unchecked_box_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.uncheckedBoxColor (androidx.compose.material3.CheckboxColors.uncheckedBoxColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unchecked_checkmark_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.CheckboxColors.uncheckedCheckmarkColor (androidx.compose.material3.CheckboxColors.uncheckedCheckmarkColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class ChipColors:
+ """Kotlin: androidx.compose.material3.ChipColors"""
+ def __init__(self, containerColor: _t.Any, labelColor: _t.Any, leadingIconContentColor: _t.Any, trailingIconContentColor: _t.Any, disabledContainerColor: _t.Any, disabledLabelColor: _t.Any, disabledLeadingIconContentColor: _t.Any, disabledTrailingIconContentColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.ChipColors (androidx.compose.material3.ChipColors(containerColor: androidx.compose.ui.graphics.Color, labelColor: androidx.compose.ui.graphics.Color, leadingIconContentColor: androidx.compose.ui.graphics.Color, trailingIconContentColor: androidx.compose.ui.graphics.Color, disabledContainerColor: androidx.compose.ui.graphics.Color, disabledLabelColor: androidx.compose.ui.graphics.Color, disabledLeadingIconContentColor: androidx.compose.ui.graphics.Color, disabledTrailingIconContentColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.ChipColors)"""
+ ...
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ChipColors.containerColor (androidx.compose.material3.ChipColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ChipColors.disabledContainerColor (androidx.compose.material3.ChipColors.disabledContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_label_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ChipColors.disabledLabelColor (androidx.compose.material3.ChipColors.disabledLabelColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_leading_icon_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ChipColors.disabledLeadingIconContentColor (androidx.compose.material3.ChipColors.disabledLeadingIconContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_trailing_icon_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ChipColors.disabledTrailingIconContentColor (androidx.compose.material3.ChipColors.disabledTrailingIconContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def label_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ChipColors.labelColor (androidx.compose.material3.ChipColors.labelColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def leading_icon_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ChipColors.leadingIconContentColor (androidx.compose.material3.ChipColors.leadingIconContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def trailing_icon_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ChipColors.trailingIconContentColor (androidx.compose.material3.ChipColors.trailingIconContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class ChipElevation:
+ """Kotlin: androidx.compose.material3.ChipElevation"""
+ def __init__(self, elevation: float, pressedElevation: float, focusedElevation: float, hoveredElevation: float, draggedElevation: float, disabledElevation: float) -> None:
+ """Kotlin constructor: androidx.compose.material3.ChipElevation (androidx.compose.material3.ChipElevation(elevation: androidx.compose.ui.unit.Dp, pressedElevation: androidx.compose.ui.unit.Dp, focusedElevation: androidx.compose.ui.unit.Dp, hoveredElevation: androidx.compose.ui.unit.Dp, draggedElevation: androidx.compose.ui.unit.Dp, disabledElevation: androidx.compose.ui.unit.Dp): androidx.compose.material3.ChipElevation)"""
+ ...
+ @property
+ def disabled_elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.ChipElevation.disabledElevation (androidx.compose.material3.ChipElevation.disabledElevation: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def dragged_elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.ChipElevation.draggedElevation (androidx.compose.material3.ChipElevation.draggedElevation: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.ChipElevation.elevation (androidx.compose.material3.ChipElevation.elevation: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def focused_elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.ChipElevation.focusedElevation (androidx.compose.material3.ChipElevation.focusedElevation: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def hovered_elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.ChipElevation.hoveredElevation (androidx.compose.material3.ChipElevation.hoveredElevation: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def pressed_elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.ChipElevation.pressedElevation (androidx.compose.material3.ChipElevation.pressedElevation: androidx.compose.ui.unit.Dp)"""
+ ...
+
+class ColorScheme:
+ """Kotlin: androidx.compose.material3.ColorScheme"""
+ @_t.overload
+ def __init__(self, primary: _t.Any, onPrimary: _t.Any, primaryContainer: _t.Any, onPrimaryContainer: _t.Any, inversePrimary: _t.Any, secondary: _t.Any, onSecondary: _t.Any, secondaryContainer: _t.Any, onSecondaryContainer: _t.Any, tertiary: _t.Any, onTertiary: _t.Any, tertiaryContainer: _t.Any, onTertiaryContainer: _t.Any, background: _t.Any, onBackground: _t.Any, surface: _t.Any, onSurface: _t.Any, surfaceVariant: _t.Any, onSurfaceVariant: _t.Any, surfaceTint: _t.Any, inverseSurface: _t.Any, inverseOnSurface: _t.Any, error: _t.Any, onError: _t.Any, errorContainer: _t.Any, onErrorContainer: _t.Any, outline: _t.Any, outlineVariant: _t.Any, scrim: _t.Any) -> None: ...
+ @_t.overload
+ def __init__(self, primary: _t.Any, onPrimary: _t.Any, primaryContainer: _t.Any, onPrimaryContainer: _t.Any, inversePrimary: _t.Any, secondary: _t.Any, onSecondary: _t.Any, secondaryContainer: _t.Any, onSecondaryContainer: _t.Any, tertiary: _t.Any, onTertiary: _t.Any, tertiaryContainer: _t.Any, onTertiaryContainer: _t.Any, background: _t.Any, onBackground: _t.Any, surface: _t.Any, onSurface: _t.Any, surfaceVariant: _t.Any, onSurfaceVariant: _t.Any, surfaceTint: _t.Any, inverseSurface: _t.Any, inverseOnSurface: _t.Any, error: _t.Any, onError: _t.Any, errorContainer: _t.Any, onErrorContainer: _t.Any, outline: _t.Any, outlineVariant: _t.Any, scrim: _t.Any, surfaceBright: _t.Any, surfaceDim: _t.Any, surfaceContainer: _t.Any, surfaceContainerHigh: _t.Any, surfaceContainerHighest: _t.Any, surfaceContainerLow: _t.Any, surfaceContainerLowest: _t.Any) -> None: ... # type: ignore[overload-cannot-match]
+ @_t.overload
+ def __init__(self, primary: _t.Any, onPrimary: _t.Any, primaryContainer: _t.Any, onPrimaryContainer: _t.Any, inversePrimary: _t.Any, secondary: _t.Any, onSecondary: _t.Any, secondaryContainer: _t.Any, onSecondaryContainer: _t.Any, tertiary: _t.Any, onTertiary: _t.Any, tertiaryContainer: _t.Any, onTertiaryContainer: _t.Any, background: _t.Any, onBackground: _t.Any, surface: _t.Any, onSurface: _t.Any, surfaceVariant: _t.Any, onSurfaceVariant: _t.Any, surfaceTint: _t.Any, inverseSurface: _t.Any, inverseOnSurface: _t.Any, error: _t.Any, onError: _t.Any, errorContainer: _t.Any, onErrorContainer: _t.Any, outline: _t.Any, outlineVariant: _t.Any, scrim: _t.Any, surfaceBright: _t.Any, surfaceDim: _t.Any, surfaceContainer: _t.Any, surfaceContainerHigh: _t.Any, surfaceContainerHighest: _t.Any, surfaceContainerLow: _t.Any, surfaceContainerLowest: _t.Any, primaryFixed: _t.Any, primaryFixedDim: _t.Any, onPrimaryFixed: _t.Any, onPrimaryFixedVariant: _t.Any, secondaryFixed: _t.Any, secondaryFixedDim: _t.Any, onSecondaryFixed: _t.Any, onSecondaryFixedVariant: _t.Any, tertiaryFixed: _t.Any, tertiaryFixedDim: _t.Any, onTertiaryFixed: _t.Any, onTertiaryFixedVariant: _t.Any) -> None: ... # type: ignore[overload-cannot-match]
+ content_color_for: _t.ClassVar[_ColorScheme_contentColorFor]
+ content_color_for__ColorScheme_Color: _t.ClassVar[_ColorScheme_contentColorFor__ColorScheme_Color]
+ surface_color_at_elevation: _t.ClassVar[_ColorScheme_surfaceColorAtElevation]
+ @property
+ def background(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.background (androidx.compose.material3.ColorScheme.background: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.error (androidx.compose.material3.ColorScheme.error: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_container(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.errorContainer (androidx.compose.material3.ColorScheme.errorContainer: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def inverse_on_surface(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.inverseOnSurface (androidx.compose.material3.ColorScheme.inverseOnSurface: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def inverse_primary(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.inversePrimary (androidx.compose.material3.ColorScheme.inversePrimary: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def inverse_surface(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.inverseSurface (androidx.compose.material3.ColorScheme.inverseSurface: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_background(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onBackground (androidx.compose.material3.ColorScheme.onBackground: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_error(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onError (androidx.compose.material3.ColorScheme.onError: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_error_container(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onErrorContainer (androidx.compose.material3.ColorScheme.onErrorContainer: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_primary(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onPrimary (androidx.compose.material3.ColorScheme.onPrimary: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_primary_container(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onPrimaryContainer (androidx.compose.material3.ColorScheme.onPrimaryContainer: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_primary_fixed(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onPrimaryFixed (androidx.compose.material3.ColorScheme.onPrimaryFixed: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_primary_fixed_variant(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onPrimaryFixedVariant (androidx.compose.material3.ColorScheme.onPrimaryFixedVariant: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_secondary(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onSecondary (androidx.compose.material3.ColorScheme.onSecondary: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_secondary_container(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onSecondaryContainer (androidx.compose.material3.ColorScheme.onSecondaryContainer: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_secondary_fixed(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onSecondaryFixed (androidx.compose.material3.ColorScheme.onSecondaryFixed: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_secondary_fixed_variant(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onSecondaryFixedVariant (androidx.compose.material3.ColorScheme.onSecondaryFixedVariant: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_surface(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onSurface (androidx.compose.material3.ColorScheme.onSurface: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_surface_variant(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onSurfaceVariant (androidx.compose.material3.ColorScheme.onSurfaceVariant: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_tertiary(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onTertiary (androidx.compose.material3.ColorScheme.onTertiary: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_tertiary_container(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onTertiaryContainer (androidx.compose.material3.ColorScheme.onTertiaryContainer: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_tertiary_fixed(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onTertiaryFixed (androidx.compose.material3.ColorScheme.onTertiaryFixed: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def on_tertiary_fixed_variant(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.onTertiaryFixedVariant (androidx.compose.material3.ColorScheme.onTertiaryFixedVariant: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def outline(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.outline (androidx.compose.material3.ColorScheme.outline: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def outline_variant(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.outlineVariant (androidx.compose.material3.ColorScheme.outlineVariant: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def primary(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.primary (androidx.compose.material3.ColorScheme.primary: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def primary_container(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.primaryContainer (androidx.compose.material3.ColorScheme.primaryContainer: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def primary_fixed(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.primaryFixed (androidx.compose.material3.ColorScheme.primaryFixed: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def primary_fixed_dim(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.primaryFixedDim (androidx.compose.material3.ColorScheme.primaryFixedDim: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def scrim(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.scrim (androidx.compose.material3.ColorScheme.scrim: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def secondary(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.secondary (androidx.compose.material3.ColorScheme.secondary: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def secondary_container(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.secondaryContainer (androidx.compose.material3.ColorScheme.secondaryContainer: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def secondary_fixed(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.secondaryFixed (androidx.compose.material3.ColorScheme.secondaryFixed: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def secondary_fixed_dim(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.secondaryFixedDim (androidx.compose.material3.ColorScheme.secondaryFixedDim: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def surface(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.surface (androidx.compose.material3.ColorScheme.surface: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def surface_bright(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.surfaceBright (androidx.compose.material3.ColorScheme.surfaceBright: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def surface_container(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.surfaceContainer (androidx.compose.material3.ColorScheme.surfaceContainer: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def surface_container_high(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.surfaceContainerHigh (androidx.compose.material3.ColorScheme.surfaceContainerHigh: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def surface_container_highest(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.surfaceContainerHighest (androidx.compose.material3.ColorScheme.surfaceContainerHighest: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def surface_container_low(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.surfaceContainerLow (androidx.compose.material3.ColorScheme.surfaceContainerLow: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def surface_container_lowest(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.surfaceContainerLowest (androidx.compose.material3.ColorScheme.surfaceContainerLowest: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def surface_dim(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.surfaceDim (androidx.compose.material3.ColorScheme.surfaceDim: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def surface_tint(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.surfaceTint (androidx.compose.material3.ColorScheme.surfaceTint: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def surface_variant(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.surfaceVariant (androidx.compose.material3.ColorScheme.surfaceVariant: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def tertiary(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.tertiary (androidx.compose.material3.ColorScheme.tertiary: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def tertiary_container(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.tertiaryContainer (androidx.compose.material3.ColorScheme.tertiaryContainer: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def tertiary_fixed(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.tertiaryFixed (androidx.compose.material3.ColorScheme.tertiaryFixed: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def tertiary_fixed_dim(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ColorScheme.tertiaryFixedDim (androidx.compose.material3.ColorScheme.tertiaryFixedDim: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class DatePickerColors:
+ """Kotlin: androidx.compose.material3.DatePickerColors"""
+ def __init__(self, containerColor: _t.Any, titleContentColor: _t.Any, headlineContentColor: _t.Any, weekdayContentColor: _t.Any, subheadContentColor: _t.Any, navigationContentColor: _t.Any, yearContentColor: _t.Any, disabledYearContentColor: _t.Any, currentYearContentColor: _t.Any, selectedYearContentColor: _t.Any, disabledSelectedYearContentColor: _t.Any, selectedYearContainerColor: _t.Any, disabledSelectedYearContainerColor: _t.Any, dayContentColor: _t.Any, disabledDayContentColor: _t.Any, selectedDayContentColor: _t.Any, disabledSelectedDayContentColor: _t.Any, selectedDayContainerColor: _t.Any, disabledSelectedDayContainerColor: _t.Any, todayContentColor: _t.Any, todayDateBorderColor: _t.Any, dayInSelectionRangeContainerColor: _t.Any, dayInSelectionRangeContentColor: _t.Any, dividerColor: _t.Any, dateTextFieldColors: TextFieldColors) -> None:
+ """Kotlin constructor: androidx.compose.material3.DatePickerColors (androidx.compose.material3.DatePickerColors(containerColor: androidx.compose.ui.graphics.Color, titleContentColor: androidx.compose.ui.graphics.Color, headlineContentColor: androidx.compose.ui.graphics.Color, weekdayContentColor: androidx.compose.ui.graphics.Color, subheadContentColor: androidx.compose.ui.graphics.Color, navigationContentColor: androidx.compose.ui.graphics.Color, yearContentColor: androidx.compose.ui.graphics.Color, disabledYearContentColor: androidx.compose.ui.graphics.Color, currentYearContentColor: androidx.compose.ui.graphics.Color, selectedYearContentColor: androidx.compose.ui.graphics.Color, disabledSelectedYearContentColor: androidx.compose.ui.graphics.Color, selectedYearContainerColor: androidx.compose.ui.graphics.Color, disabledSelectedYearContainerColor: androidx.compose.ui.graphics.Color, dayContentColor: androidx.compose.ui.graphics.Color, disabledDayContentColor: androidx.compose.ui.graphics.Color, selectedDayContentColor: androidx.compose.ui.graphics.Color, disabledSelectedDayContentColor: androidx.compose.ui.graphics.Color, selectedDayContainerColor: androidx.compose.ui.graphics.Color, disabledSelectedDayContainerColor: androidx.compose.ui.graphics.Color, todayContentColor: androidx.compose.ui.graphics.Color, todayDateBorderColor: androidx.compose.ui.graphics.Color, dayInSelectionRangeContainerColor: androidx.compose.ui.graphics.Color, dayInSelectionRangeContentColor: androidx.compose.ui.graphics.Color, dividerColor: androidx.compose.ui.graphics.Color, dateTextFieldColors: androidx.compose.material3.TextFieldColors): androidx.compose.material3.DatePickerColors)"""
+ ...
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.containerColor (androidx.compose.material3.DatePickerColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def current_year_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.currentYearContentColor (androidx.compose.material3.DatePickerColors.currentYearContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def date_text_field_colors(self) -> TextFieldColors:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.dateTextFieldColors (androidx.compose.material3.DatePickerColors.dateTextFieldColors: androidx.compose.material3.TextFieldColors)"""
+ ...
+ @property
+ def day_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.dayContentColor (androidx.compose.material3.DatePickerColors.dayContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def day_in_selection_range_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.dayInSelectionRangeContainerColor (androidx.compose.material3.DatePickerColors.dayInSelectionRangeContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def day_in_selection_range_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.dayInSelectionRangeContentColor (androidx.compose.material3.DatePickerColors.dayInSelectionRangeContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_day_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.disabledDayContentColor (androidx.compose.material3.DatePickerColors.disabledDayContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_selected_day_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.disabledSelectedDayContainerColor (androidx.compose.material3.DatePickerColors.disabledSelectedDayContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_selected_day_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.disabledSelectedDayContentColor (androidx.compose.material3.DatePickerColors.disabledSelectedDayContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_selected_year_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.disabledSelectedYearContainerColor (androidx.compose.material3.DatePickerColors.disabledSelectedYearContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_selected_year_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.disabledSelectedYearContentColor (androidx.compose.material3.DatePickerColors.disabledSelectedYearContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_year_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.disabledYearContentColor (androidx.compose.material3.DatePickerColors.disabledYearContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def divider_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.dividerColor (androidx.compose.material3.DatePickerColors.dividerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def headline_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.headlineContentColor (androidx.compose.material3.DatePickerColors.headlineContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def navigation_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.navigationContentColor (androidx.compose.material3.DatePickerColors.navigationContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_day_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.selectedDayContainerColor (androidx.compose.material3.DatePickerColors.selectedDayContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_day_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.selectedDayContentColor (androidx.compose.material3.DatePickerColors.selectedDayContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_year_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.selectedYearContainerColor (androidx.compose.material3.DatePickerColors.selectedYearContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_year_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.selectedYearContentColor (androidx.compose.material3.DatePickerColors.selectedYearContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def subhead_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.subheadContentColor (androidx.compose.material3.DatePickerColors.subheadContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def title_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.titleContentColor (androidx.compose.material3.DatePickerColors.titleContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def today_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.todayContentColor (androidx.compose.material3.DatePickerColors.todayContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def today_date_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.todayDateBorderColor (androidx.compose.material3.DatePickerColors.todayDateBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def weekday_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.weekdayContentColor (androidx.compose.material3.DatePickerColors.weekdayContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def year_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerColors.yearContentColor (androidx.compose.material3.DatePickerColors.yearContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class DatePickerFormatter:
+ """Kotlin: androidx.compose.material3.DatePickerFormatter"""
+
+class DatePickerState:
+ """Kotlin: androidx.compose.material3.DatePickerState"""
+ @property
+ def display_mode(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerState.displayMode (androidx.compose.material3.DatePickerState.displayMode: androidx.compose.material3.DisplayMode)"""
+ ...
+ @display_mode.setter
+ def display_mode(self, value: _t.Any) -> None:
+ """Kotlin property: androidx.compose.material3.DatePickerState.displayMode="""
+ ...
+ @property
+ def displayed_month_millis(self) -> int:
+ """Kotlin property: androidx.compose.material3.DatePickerState.displayedMonthMillis (androidx.compose.material3.DatePickerState.displayedMonthMillis: kotlin.Long)"""
+ ...
+ @displayed_month_millis.setter
+ def displayed_month_millis(self, value: int) -> None:
+ """Kotlin property: androidx.compose.material3.DatePickerState.displayedMonthMillis="""
+ ...
+ @property
+ def selectable_dates(self) -> SelectableDates:
+ """Kotlin property: androidx.compose.material3.DatePickerState.selectableDates (androidx.compose.material3.DatePickerState.selectableDates: androidx.compose.material3.SelectableDates)"""
+ ...
+ @property
+ def year_range(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DatePickerState.yearRange (androidx.compose.material3.DatePickerState.yearRange: kotlin.ranges.IntRange)"""
+ ...
+
+class DateRangePickerState:
+ """Kotlin: androidx.compose.material3.DateRangePickerState"""
+ @property
+ def display_mode(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DateRangePickerState.displayMode (androidx.compose.material3.DateRangePickerState.displayMode: androidx.compose.material3.DisplayMode)"""
+ ...
+ @display_mode.setter
+ def display_mode(self, value: _t.Any) -> None:
+ """Kotlin property: androidx.compose.material3.DateRangePickerState.displayMode="""
+ ...
+ @property
+ def displayed_month_millis(self) -> int:
+ """Kotlin property: androidx.compose.material3.DateRangePickerState.displayedMonthMillis (androidx.compose.material3.DateRangePickerState.displayedMonthMillis: kotlin.Long)"""
+ ...
+ @displayed_month_millis.setter
+ def displayed_month_millis(self, value: int) -> None:
+ """Kotlin property: androidx.compose.material3.DateRangePickerState.displayedMonthMillis="""
+ ...
+ @property
+ def selectable_dates(self) -> SelectableDates:
+ """Kotlin property: androidx.compose.material3.DateRangePickerState.selectableDates (androidx.compose.material3.DateRangePickerState.selectableDates: androidx.compose.material3.SelectableDates)"""
+ ...
+ @property
+ def year_range(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DateRangePickerState.yearRange (androidx.compose.material3.DateRangePickerState.yearRange: kotlin.ranges.IntRange)"""
+ ...
+
+class DefaultTooltipCaretShape(pythonx.compose.ui.graphics.Shape):
+ """Kotlin: androidx.compose.material3.DefaultTooltipCaretShape"""
+ def __init__(self, caretSize: _t.Any = ...) -> None:
+ """Kotlin constructor: androidx.compose.material3.DefaultTooltipCaretShape (androidx.compose.material3.DefaultTooltipCaretShape(caretSize: androidx.compose.ui.unit.DpSize): androidx.compose.material3.DefaultTooltipCaretShape)"""
+ ...
+ @property
+ def caret_size(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DefaultTooltipCaretShape.caretSize (androidx.compose.material3.DefaultTooltipCaretShape.caretSize: androidx.compose.ui.unit.DpSize)"""
+ ...
+
+class DragHandleColors:
+ """Kotlin: androidx.compose.material3.DragHandleColors"""
+ def __init__(self, color: _t.Any, pressedColor: _t.Any, draggedColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.DragHandleColors (androidx.compose.material3.DragHandleColors(color: androidx.compose.ui.graphics.Color, pressedColor: androidx.compose.ui.graphics.Color, draggedColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.DragHandleColors)"""
+ ...
+ @property
+ def color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DragHandleColors.color (androidx.compose.material3.DragHandleColors.color: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def dragged_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DragHandleColors.draggedColor (androidx.compose.material3.DragHandleColors.draggedColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def pressed_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DragHandleColors.pressedColor (androidx.compose.material3.DragHandleColors.pressedColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class DragHandleShapes:
+ """Kotlin: androidx.compose.material3.DragHandleShapes"""
+ def __init__(self, shape: pythonx.compose.ui.graphics.Shape, pressedShape: pythonx.compose.ui.graphics.Shape, draggedShape: pythonx.compose.ui.graphics.Shape) -> None:
+ """Kotlin constructor: androidx.compose.material3.DragHandleShapes (androidx.compose.material3.DragHandleShapes(shape: androidx.compose.ui.graphics.Shape, pressedShape: androidx.compose.ui.graphics.Shape, draggedShape: androidx.compose.ui.graphics.Shape): androidx.compose.material3.DragHandleShapes)"""
+ ...
+ @property
+ def dragged_shape(self) -> pythonx.compose.ui.graphics.Shape:
+ """Kotlin property: androidx.compose.material3.DragHandleShapes.draggedShape (androidx.compose.material3.DragHandleShapes.draggedShape: androidx.compose.ui.graphics.Shape)"""
+ ...
+ @property
+ def pressed_shape(self) -> pythonx.compose.ui.graphics.Shape:
+ """Kotlin property: androidx.compose.material3.DragHandleShapes.pressedShape (androidx.compose.material3.DragHandleShapes.pressedShape: androidx.compose.ui.graphics.Shape)"""
+ ...
+ @property
+ def shape(self) -> pythonx.compose.ui.graphics.Shape:
+ """Kotlin property: androidx.compose.material3.DragHandleShapes.shape (androidx.compose.material3.DragHandleShapes.shape: androidx.compose.ui.graphics.Shape)"""
+ ...
+
+class DragHandleSizes:
+ """Kotlin: androidx.compose.material3.DragHandleSizes"""
+ def __init__(self, size: _t.Any, pressedSize: _t.Any, draggedSize: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.DragHandleSizes (androidx.compose.material3.DragHandleSizes(size: androidx.compose.ui.unit.DpSize, pressedSize: androidx.compose.ui.unit.DpSize, draggedSize: androidx.compose.ui.unit.DpSize): androidx.compose.material3.DragHandleSizes)"""
+ ...
+ @property
+ def dragged_size(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DragHandleSizes.draggedSize (androidx.compose.material3.DragHandleSizes.draggedSize: androidx.compose.ui.unit.DpSize)"""
+ ...
+ @property
+ def pressed_size(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DragHandleSizes.pressedSize (androidx.compose.material3.DragHandleSizes.pressedSize: androidx.compose.ui.unit.DpSize)"""
+ ...
+ @property
+ def size(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.DragHandleSizes.size (androidx.compose.material3.DragHandleSizes.size: androidx.compose.ui.unit.DpSize)"""
+ ...
+
+class DrawerState:
+ """Kotlin: androidx.compose.material3.DrawerState"""
+ def __init__(self, initialValue: DrawerValue, confirmStateChange: _t.Callable[[DrawerValue], bool] = ...) -> None:
+ """Kotlin constructor: androidx.compose.material3.DrawerState (androidx.compose.material3.DrawerState(initialValue: androidx.compose.material3.DrawerValue, confirmStateChange: kotlin.Function1): androidx.compose.material3.DrawerState)"""
+ ...
+ @property
+ def current_offset(self) -> float:
+ """Kotlin property: androidx.compose.material3.DrawerState.currentOffset (androidx.compose.material3.DrawerState.currentOffset: kotlin.Float)"""
+ ...
+ @property
+ def current_value(self) -> DrawerValue:
+ """Kotlin property: androidx.compose.material3.DrawerState.currentValue (androidx.compose.material3.DrawerState.currentValue: androidx.compose.material3.DrawerValue)"""
+ ...
+ @property
+ def is_animation_running(self) -> bool:
+ """Kotlin property: androidx.compose.material3.DrawerState.isAnimationRunning (androidx.compose.material3.DrawerState.isAnimationRunning: kotlin.Boolean)"""
+ ...
+ @property
+ def is_closed(self) -> bool:
+ """Kotlin property: androidx.compose.material3.DrawerState.isClosed (androidx.compose.material3.DrawerState.isClosed: kotlin.Boolean)"""
+ ...
+ @property
+ def is_open(self) -> bool:
+ """Kotlin property: androidx.compose.material3.DrawerState.isOpen (androidx.compose.material3.DrawerState.isOpen: kotlin.Boolean)"""
+ ...
+ @property
+ def target_value(self) -> DrawerValue:
+ """Kotlin property: androidx.compose.material3.DrawerState.targetValue (androidx.compose.material3.DrawerState.targetValue: androidx.compose.material3.DrawerValue)"""
+ ...
+
+class DrawerValue:
+ """Kotlin: androidx.compose.material3.DrawerValue"""
+
+class ExposedDropdownMenuBoxScope:
+ """Kotlin: androidx.compose.material3.ExposedDropdownMenuBoxScope"""
+
+class FloatingActionButtonElevation:
+ """Kotlin: androidx.compose.material3.FloatingActionButtonElevation"""
+
+class IconButtonColors:
+ """Kotlin: androidx.compose.material3.IconButtonColors"""
+ def __init__(self, containerColor: _t.Any, contentColor: _t.Any, disabledContainerColor: _t.Any, disabledContentColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.IconButtonColors (androidx.compose.material3.IconButtonColors(containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, disabledContainerColor: androidx.compose.ui.graphics.Color, disabledContentColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.IconButtonColors)"""
+ ...
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.IconButtonColors.containerColor (androidx.compose.material3.IconButtonColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.IconButtonColors.contentColor (androidx.compose.material3.IconButtonColors.contentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.IconButtonColors.disabledContainerColor (androidx.compose.material3.IconButtonColors.disabledContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.IconButtonColors.disabledContentColor (androidx.compose.material3.IconButtonColors.disabledContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class IconToggleButtonColors:
+ """Kotlin: androidx.compose.material3.IconToggleButtonColors"""
+ def __init__(self, containerColor: _t.Any, contentColor: _t.Any, disabledContainerColor: _t.Any, disabledContentColor: _t.Any, checkedContainerColor: _t.Any, checkedContentColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.IconToggleButtonColors (androidx.compose.material3.IconToggleButtonColors(containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, disabledContainerColor: androidx.compose.ui.graphics.Color, disabledContentColor: androidx.compose.ui.graphics.Color, checkedContainerColor: androidx.compose.ui.graphics.Color, checkedContentColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.IconToggleButtonColors)"""
+ ...
+ @property
+ def checked_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.IconToggleButtonColors.checkedContainerColor (androidx.compose.material3.IconToggleButtonColors.checkedContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def checked_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.IconToggleButtonColors.checkedContentColor (androidx.compose.material3.IconToggleButtonColors.checkedContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.IconToggleButtonColors.containerColor (androidx.compose.material3.IconToggleButtonColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.IconToggleButtonColors.contentColor (androidx.compose.material3.IconToggleButtonColors.contentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.IconToggleButtonColors.disabledContainerColor (androidx.compose.material3.IconToggleButtonColors.disabledContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.IconToggleButtonColors.disabledContentColor (androidx.compose.material3.IconToggleButtonColors.disabledContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class ListItemColors:
+ """Kotlin: androidx.compose.material3.ListItemColors"""
+ def __init__(self, containerColor: _t.Any, headlineColor: _t.Any, leadingIconColor: _t.Any, overlineColor: _t.Any, supportingTextColor: _t.Any, trailingIconColor: _t.Any, disabledHeadlineColor: _t.Any, disabledLeadingIconColor: _t.Any, disabledTrailingIconColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.ListItemColors (androidx.compose.material3.ListItemColors(containerColor: androidx.compose.ui.graphics.Color, headlineColor: androidx.compose.ui.graphics.Color, leadingIconColor: androidx.compose.ui.graphics.Color, overlineColor: androidx.compose.ui.graphics.Color, supportingTextColor: androidx.compose.ui.graphics.Color, trailingIconColor: androidx.compose.ui.graphics.Color, disabledHeadlineColor: androidx.compose.ui.graphics.Color, disabledLeadingIconColor: androidx.compose.ui.graphics.Color, disabledTrailingIconColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.ListItemColors)"""
+ ...
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ListItemColors.containerColor (androidx.compose.material3.ListItemColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_headline_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ListItemColors.disabledHeadlineColor (androidx.compose.material3.ListItemColors.disabledHeadlineColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_leading_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ListItemColors.disabledLeadingIconColor (androidx.compose.material3.ListItemColors.disabledLeadingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_trailing_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ListItemColors.disabledTrailingIconColor (androidx.compose.material3.ListItemColors.disabledTrailingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def headline_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ListItemColors.headlineColor (androidx.compose.material3.ListItemColors.headlineColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def leading_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ListItemColors.leadingIconColor (androidx.compose.material3.ListItemColors.leadingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def overline_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ListItemColors.overlineColor (androidx.compose.material3.ListItemColors.overlineColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def supporting_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ListItemColors.supportingTextColor (androidx.compose.material3.ListItemColors.supportingTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def trailing_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.ListItemColors.trailingIconColor (androidx.compose.material3.ListItemColors.trailingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class MenuItemColors:
+ """Kotlin: androidx.compose.material3.MenuItemColors"""
+ def __init__(self, textColor: _t.Any, leadingIconColor: _t.Any, trailingIconColor: _t.Any, disabledTextColor: _t.Any, disabledLeadingIconColor: _t.Any, disabledTrailingIconColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.MenuItemColors (androidx.compose.material3.MenuItemColors(textColor: androidx.compose.ui.graphics.Color, leadingIconColor: androidx.compose.ui.graphics.Color, trailingIconColor: androidx.compose.ui.graphics.Color, disabledTextColor: androidx.compose.ui.graphics.Color, disabledLeadingIconColor: androidx.compose.ui.graphics.Color, disabledTrailingIconColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.MenuItemColors)"""
+ ...
+ @property
+ def disabled_leading_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.MenuItemColors.disabledLeadingIconColor (androidx.compose.material3.MenuItemColors.disabledLeadingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.MenuItemColors.disabledTextColor (androidx.compose.material3.MenuItemColors.disabledTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_trailing_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.MenuItemColors.disabledTrailingIconColor (androidx.compose.material3.MenuItemColors.disabledTrailingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def leading_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.MenuItemColors.leadingIconColor (androidx.compose.material3.MenuItemColors.leadingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.MenuItemColors.textColor (androidx.compose.material3.MenuItemColors.textColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def trailing_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.MenuItemColors.trailingIconColor (androidx.compose.material3.MenuItemColors.trailingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class ModalBottomSheetProperties:
+ """Kotlin: androidx.compose.material3.ModalBottomSheetProperties"""
+ def __init__(self, shouldDismissOnBackPress: bool = ..., shouldDismissOnClickOutside: bool = ...) -> None:
+ """Kotlin constructor: androidx.compose.material3.ModalBottomSheetProperties (androidx.compose.material3.ModalBottomSheetProperties(shouldDismissOnBackPress: kotlin.Boolean, shouldDismissOnClickOutside: kotlin.Boolean): androidx.compose.material3.ModalBottomSheetProperties)"""
+ ...
+ @property
+ def should_dismiss_on_back_press(self) -> bool:
+ """Kotlin property: androidx.compose.material3.ModalBottomSheetProperties.shouldDismissOnBackPress (androidx.compose.material3.ModalBottomSheetProperties.shouldDismissOnBackPress: kotlin.Boolean)"""
+ ...
+ @property
+ def should_dismiss_on_click_outside(self) -> bool:
+ """Kotlin property: androidx.compose.material3.ModalBottomSheetProperties.shouldDismissOnClickOutside (androidx.compose.material3.ModalBottomSheetProperties.shouldDismissOnClickOutside: kotlin.Boolean)"""
+ ...
+
+class ModalWideNavigationRailProperties:
+ """Kotlin: androidx.compose.material3.ModalWideNavigationRailProperties"""
+ def __init__(self, shouldDismissOnBackPress: bool = ...) -> None:
+ """Kotlin constructor: androidx.compose.material3.ModalWideNavigationRailProperties (androidx.compose.material3.ModalWideNavigationRailProperties(shouldDismissOnBackPress: kotlin.Boolean): androidx.compose.material3.ModalWideNavigationRailProperties)"""
+ ...
+ @property
+ def should_dismiss_on_back_press(self) -> bool:
+ """Kotlin property: androidx.compose.material3.ModalWideNavigationRailProperties.shouldDismissOnBackPress (androidx.compose.material3.ModalWideNavigationRailProperties.shouldDismissOnBackPress: kotlin.Boolean)"""
+ ...
+
+class MultiChoiceSegmentedButtonRowScope:
+ """Kotlin: androidx.compose.material3.MultiChoiceSegmentedButtonRowScope"""
+ SegmentedButton: _t.ClassVar[_MultiChoiceSegmentedButtonRowScope_SegmentedButton]
+ SegmentedButton__MultiChoiceSegmentedButtonRowScope_Boolean_Unit_Shape_Modifier_Boolean_SegmentedButtonColors_BorderStroke_PaddingValues_MutableInteractionSource_Unit_Unit: _t.ClassVar[_MultiChoiceSegmentedButtonRowScope_SegmentedButton__MultiChoiceSegmentedButtonRowScope_Boolean_Unit_Shape_Modifier_Boolean_SegmentedButtonColors_BorderStroke_PaddingValues_MutableInteractionSource_Unit_Unit]
+
+class NavigationBarItemColors:
+ """Kotlin: androidx.compose.material3.NavigationBarItemColors"""
+ def __init__(self, selectedIconColor: _t.Any, selectedTextColor: _t.Any, selectedIndicatorColor: _t.Any, unselectedIconColor: _t.Any, unselectedTextColor: _t.Any, disabledIconColor: _t.Any, disabledTextColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.NavigationBarItemColors (androidx.compose.material3.NavigationBarItemColors(selectedIconColor: androidx.compose.ui.graphics.Color, selectedTextColor: androidx.compose.ui.graphics.Color, selectedIndicatorColor: androidx.compose.ui.graphics.Color, unselectedIconColor: androidx.compose.ui.graphics.Color, unselectedTextColor: androidx.compose.ui.graphics.Color, disabledIconColor: androidx.compose.ui.graphics.Color, disabledTextColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.NavigationBarItemColors)"""
+ ...
+ @property
+ def disabled_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationBarItemColors.disabledIconColor (androidx.compose.material3.NavigationBarItemColors.disabledIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationBarItemColors.disabledTextColor (androidx.compose.material3.NavigationBarItemColors.disabledTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationBarItemColors.selectedIconColor (androidx.compose.material3.NavigationBarItemColors.selectedIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_indicator_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationBarItemColors.selectedIndicatorColor (androidx.compose.material3.NavigationBarItemColors.selectedIndicatorColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationBarItemColors.selectedTextColor (androidx.compose.material3.NavigationBarItemColors.selectedTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unselected_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationBarItemColors.unselectedIconColor (androidx.compose.material3.NavigationBarItemColors.unselectedIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unselected_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationBarItemColors.unselectedTextColor (androidx.compose.material3.NavigationBarItemColors.unselectedTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class NavigationDrawerItemColors:
+ """Kotlin: androidx.compose.material3.NavigationDrawerItemColors"""
+
+class NavigationItemColors:
+ """Kotlin: androidx.compose.material3.NavigationItemColors"""
+ def __init__(self, selectedIconColor: _t.Any, selectedTextColor: _t.Any, selectedIndicatorColor: _t.Any, unselectedIconColor: _t.Any, unselectedTextColor: _t.Any, disabledIconColor: _t.Any, disabledTextColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.NavigationItemColors (androidx.compose.material3.NavigationItemColors(selectedIconColor: androidx.compose.ui.graphics.Color, selectedTextColor: androidx.compose.ui.graphics.Color, selectedIndicatorColor: androidx.compose.ui.graphics.Color, unselectedIconColor: androidx.compose.ui.graphics.Color, unselectedTextColor: androidx.compose.ui.graphics.Color, disabledIconColor: androidx.compose.ui.graphics.Color, disabledTextColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.NavigationItemColors)"""
+ ...
+ @property
+ def disabled_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationItemColors.disabledIconColor (androidx.compose.material3.NavigationItemColors.disabledIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationItemColors.disabledTextColor (androidx.compose.material3.NavigationItemColors.disabledTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationItemColors.selectedIconColor (androidx.compose.material3.NavigationItemColors.selectedIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_indicator_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationItemColors.selectedIndicatorColor (androidx.compose.material3.NavigationItemColors.selectedIndicatorColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationItemColors.selectedTextColor (androidx.compose.material3.NavigationItemColors.selectedTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unselected_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationItemColors.unselectedIconColor (androidx.compose.material3.NavigationItemColors.unselectedIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unselected_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationItemColors.unselectedTextColor (androidx.compose.material3.NavigationItemColors.unselectedTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class NavigationRailItemColors:
+ """Kotlin: androidx.compose.material3.NavigationRailItemColors"""
+ def __init__(self, selectedIconColor: _t.Any, selectedTextColor: _t.Any, selectedIndicatorColor: _t.Any, unselectedIconColor: _t.Any, unselectedTextColor: _t.Any, disabledIconColor: _t.Any, disabledTextColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.NavigationRailItemColors (androidx.compose.material3.NavigationRailItemColors(selectedIconColor: androidx.compose.ui.graphics.Color, selectedTextColor: androidx.compose.ui.graphics.Color, selectedIndicatorColor: androidx.compose.ui.graphics.Color, unselectedIconColor: androidx.compose.ui.graphics.Color, unselectedTextColor: androidx.compose.ui.graphics.Color, disabledIconColor: androidx.compose.ui.graphics.Color, disabledTextColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.NavigationRailItemColors)"""
+ ...
+ @property
+ def disabled_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationRailItemColors.disabledIconColor (androidx.compose.material3.NavigationRailItemColors.disabledIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationRailItemColors.disabledTextColor (androidx.compose.material3.NavigationRailItemColors.disabledTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationRailItemColors.selectedIconColor (androidx.compose.material3.NavigationRailItemColors.selectedIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_indicator_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationRailItemColors.selectedIndicatorColor (androidx.compose.material3.NavigationRailItemColors.selectedIndicatorColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationRailItemColors.selectedTextColor (androidx.compose.material3.NavigationRailItemColors.selectedTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unselected_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationRailItemColors.unselectedIconColor (androidx.compose.material3.NavigationRailItemColors.unselectedIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unselected_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.NavigationRailItemColors.unselectedTextColor (androidx.compose.material3.NavigationRailItemColors.unselectedTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class RadioButtonColors:
+ """Kotlin: androidx.compose.material3.RadioButtonColors"""
+ def __init__(self, selectedColor: _t.Any, unselectedColor: _t.Any, disabledSelectedColor: _t.Any, disabledUnselectedColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.RadioButtonColors (androidx.compose.material3.RadioButtonColors(selectedColor: androidx.compose.ui.graphics.Color, unselectedColor: androidx.compose.ui.graphics.Color, disabledSelectedColor: androidx.compose.ui.graphics.Color, disabledUnselectedColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.RadioButtonColors)"""
+ ...
+ @property
+ def disabled_selected_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.RadioButtonColors.disabledSelectedColor (androidx.compose.material3.RadioButtonColors.disabledSelectedColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_unselected_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.RadioButtonColors.disabledUnselectedColor (androidx.compose.material3.RadioButtonColors.disabledUnselectedColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selected_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.RadioButtonColors.selectedColor (androidx.compose.material3.RadioButtonColors.selectedColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unselected_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.RadioButtonColors.unselectedColor (androidx.compose.material3.RadioButtonColors.unselectedColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class RangeSliderState:
+ """Kotlin: androidx.compose.material3.RangeSliderState"""
+ @property
+ def active_range_end(self) -> float:
+ """Kotlin property: androidx.compose.material3.RangeSliderState.activeRangeEnd (androidx.compose.material3.RangeSliderState.activeRangeEnd: kotlin.Float)"""
+ ...
+ @active_range_end.setter
+ def active_range_end(self, value: float) -> None:
+ """Kotlin property: androidx.compose.material3.RangeSliderState.activeRangeEnd="""
+ ...
+ @property
+ def active_range_start(self) -> float:
+ """Kotlin property: androidx.compose.material3.RangeSliderState.activeRangeStart (androidx.compose.material3.RangeSliderState.activeRangeStart: kotlin.Float)"""
+ ...
+ @active_range_start.setter
+ def active_range_start(self, value: float) -> None:
+ """Kotlin property: androidx.compose.material3.RangeSliderState.activeRangeStart="""
+ ...
+ @property
+ def steps(self) -> int:
+ """Kotlin property: androidx.compose.material3.RangeSliderState.steps (androidx.compose.material3.RangeSliderState.steps: kotlin.Int)"""
+ ...
+
+class RichTooltipColors:
+ """Kotlin: androidx.compose.material3.RichTooltipColors"""
+ def __init__(self, containerColor: _t.Any, contentColor: _t.Any, titleContentColor: _t.Any, actionContentColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.RichTooltipColors (androidx.compose.material3.RichTooltipColors(containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, titleContentColor: androidx.compose.ui.graphics.Color, actionContentColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.RichTooltipColors)"""
+ ...
+ @property
+ def action_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.RichTooltipColors.actionContentColor (androidx.compose.material3.RichTooltipColors.actionContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.RichTooltipColors.containerColor (androidx.compose.material3.RichTooltipColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.RichTooltipColors.contentColor (androidx.compose.material3.RichTooltipColors.contentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def title_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.RichTooltipColors.titleContentColor (androidx.compose.material3.RichTooltipColors.titleContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class RippleConfiguration:
+ """Kotlin: androidx.compose.material3.RippleConfiguration"""
+ def __init__(self, color: _t.Any = ..., rippleAlpha: _t.Any | None = ...) -> None:
+ """Kotlin constructor: androidx.compose.material3.RippleConfiguration (androidx.compose.material3.RippleConfiguration(color: androidx.compose.ui.graphics.Color, rippleAlpha: androidx.compose.material.ripple.RippleAlpha?): androidx.compose.material3.RippleConfiguration)"""
+ ...
+ @property
+ def color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.RippleConfiguration.color (androidx.compose.material3.RippleConfiguration.color: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def ripple_alpha(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.material3.RippleConfiguration.rippleAlpha (androidx.compose.material3.RippleConfiguration.rippleAlpha: androidx.compose.material.ripple.RippleAlpha?)"""
+ ...
+
+class SearchBarColors:
+ """Kotlin: androidx.compose.material3.SearchBarColors"""
+ @_t.overload
+ def __init__(self, containerColor: _t.Any, dividerColor: _t.Any) -> None: ...
+ @_t.overload
+ def __init__(self, containerColor: _t.Any, dividerColor: _t.Any, inputFieldColors: TextFieldColors) -> None: ... # type: ignore[overload-cannot-match]
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SearchBarColors.containerColor (androidx.compose.material3.SearchBarColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def divider_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SearchBarColors.dividerColor (androidx.compose.material3.SearchBarColors.dividerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def input_field_colors(self) -> TextFieldColors:
+ """Kotlin property: androidx.compose.material3.SearchBarColors.inputFieldColors (androidx.compose.material3.SearchBarColors.inputFieldColors: androidx.compose.material3.TextFieldColors)"""
+ ...
+
+class SearchBarScrollBehavior:
+ """Kotlin: androidx.compose.material3.SearchBarScrollBehavior"""
+ @property
+ def nested_scroll_connection(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SearchBarScrollBehavior.nestedScrollConnection (androidx.compose.material3.SearchBarScrollBehavior.nestedScrollConnection: androidx.compose.ui.input.nestedscroll.NestedScrollConnection)"""
+ ...
+ @property
+ def scroll_offset(self) -> float:
+ """Kotlin property: androidx.compose.material3.SearchBarScrollBehavior.scrollOffset (androidx.compose.material3.SearchBarScrollBehavior.scrollOffset: kotlin.Float)"""
+ ...
+ @scroll_offset.setter
+ def scroll_offset(self, value: float) -> None:
+ """Kotlin property: androidx.compose.material3.SearchBarScrollBehavior.scrollOffset="""
+ ...
+ @property
+ def scroll_offset_limit(self) -> float:
+ """Kotlin property: androidx.compose.material3.SearchBarScrollBehavior.scrollOffsetLimit (androidx.compose.material3.SearchBarScrollBehavior.scrollOffsetLimit: kotlin.Float)"""
+ ...
+ @scroll_offset_limit.setter
+ def scroll_offset_limit(self, value: float) -> None:
+ """Kotlin property: androidx.compose.material3.SearchBarScrollBehavior.scrollOffsetLimit="""
+ ...
+
+class SearchBarState:
+ """Kotlin: androidx.compose.material3.SearchBarState"""
+ @property
+ def collapsed_coords(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.material3.SearchBarState.collapsedCoords (androidx.compose.material3.SearchBarState.collapsedCoords: androidx.compose.ui.layout.LayoutCoordinates?)"""
+ ...
+ @collapsed_coords.setter
+ def collapsed_coords(self, value: _t.Any | None) -> None:
+ """Kotlin property: androidx.compose.material3.SearchBarState.collapsedCoords="""
+ ...
+ @property
+ def current_value(self) -> SearchBarValue:
+ """Kotlin property: androidx.compose.material3.SearchBarState.currentValue (androidx.compose.material3.SearchBarState.currentValue: androidx.compose.material3.SearchBarValue)"""
+ ...
+ @property
+ def is_animating(self) -> bool:
+ """Kotlin property: androidx.compose.material3.SearchBarState.isAnimating (androidx.compose.material3.SearchBarState.isAnimating: kotlin.Boolean)"""
+ ...
+ @property
+ def progress(self) -> float:
+ """Kotlin property: androidx.compose.material3.SearchBarState.progress (androidx.compose.material3.SearchBarState.progress: kotlin.Float)"""
+ ...
+ @property
+ def target_value(self) -> SearchBarValue:
+ """Kotlin property: androidx.compose.material3.SearchBarState.targetValue (androidx.compose.material3.SearchBarState.targetValue: androidx.compose.material3.SearchBarValue)"""
+ ...
+
+class SearchBarValue:
+ """Kotlin: androidx.compose.material3.SearchBarValue"""
+
+class SegmentedButtonColors:
+ """Kotlin: androidx.compose.material3.SegmentedButtonColors"""
+ def __init__(self, activeContainerColor: _t.Any, activeContentColor: _t.Any, activeBorderColor: _t.Any, inactiveContainerColor: _t.Any, inactiveContentColor: _t.Any, inactiveBorderColor: _t.Any, disabledActiveContainerColor: _t.Any, disabledActiveContentColor: _t.Any, disabledActiveBorderColor: _t.Any, disabledInactiveContainerColor: _t.Any, disabledInactiveContentColor: _t.Any, disabledInactiveBorderColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.SegmentedButtonColors (androidx.compose.material3.SegmentedButtonColors(activeContainerColor: androidx.compose.ui.graphics.Color, activeContentColor: androidx.compose.ui.graphics.Color, activeBorderColor: androidx.compose.ui.graphics.Color, inactiveContainerColor: androidx.compose.ui.graphics.Color, inactiveContentColor: androidx.compose.ui.graphics.Color, inactiveBorderColor: androidx.compose.ui.graphics.Color, disabledActiveContainerColor: androidx.compose.ui.graphics.Color, disabledActiveContentColor: androidx.compose.ui.graphics.Color, disabledActiveBorderColor: androidx.compose.ui.graphics.Color, disabledInactiveContainerColor: androidx.compose.ui.graphics.Color, disabledInactiveContentColor: androidx.compose.ui.graphics.Color, disabledInactiveBorderColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.SegmentedButtonColors)"""
+ ...
+ @property
+ def active_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.activeBorderColor (androidx.compose.material3.SegmentedButtonColors.activeBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def active_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.activeContainerColor (androidx.compose.material3.SegmentedButtonColors.activeContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def active_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.activeContentColor (androidx.compose.material3.SegmentedButtonColors.activeContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_active_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.disabledActiveBorderColor (androidx.compose.material3.SegmentedButtonColors.disabledActiveBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_active_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.disabledActiveContainerColor (androidx.compose.material3.SegmentedButtonColors.disabledActiveContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_active_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.disabledActiveContentColor (androidx.compose.material3.SegmentedButtonColors.disabledActiveContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_inactive_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.disabledInactiveBorderColor (androidx.compose.material3.SegmentedButtonColors.disabledInactiveBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_inactive_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.disabledInactiveContainerColor (androidx.compose.material3.SegmentedButtonColors.disabledInactiveContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_inactive_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.disabledInactiveContentColor (androidx.compose.material3.SegmentedButtonColors.disabledInactiveContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def inactive_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.inactiveBorderColor (androidx.compose.material3.SegmentedButtonColors.inactiveBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def inactive_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.inactiveContainerColor (androidx.compose.material3.SegmentedButtonColors.inactiveContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def inactive_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SegmentedButtonColors.inactiveContentColor (androidx.compose.material3.SegmentedButtonColors.inactiveContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class SelectableChipColors:
+ """Kotlin: androidx.compose.material3.SelectableChipColors"""
+ def __init__(self, containerColor: _t.Any, labelColor: _t.Any, leadingIconColor: _t.Any, trailingIconColor: _t.Any, disabledContainerColor: _t.Any, disabledLabelColor: _t.Any, disabledLeadingIconColor: _t.Any, disabledTrailingIconColor: _t.Any, selectedContainerColor: _t.Any, disabledSelectedContainerColor: _t.Any, selectedLabelColor: _t.Any, selectedLeadingIconColor: _t.Any, selectedTrailingIconColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.SelectableChipColors (androidx.compose.material3.SelectableChipColors(containerColor: androidx.compose.ui.graphics.Color, labelColor: androidx.compose.ui.graphics.Color, leadingIconColor: androidx.compose.ui.graphics.Color, trailingIconColor: androidx.compose.ui.graphics.Color, disabledContainerColor: androidx.compose.ui.graphics.Color, disabledLabelColor: androidx.compose.ui.graphics.Color, disabledLeadingIconColor: androidx.compose.ui.graphics.Color, disabledTrailingIconColor: androidx.compose.ui.graphics.Color, selectedContainerColor: androidx.compose.ui.graphics.Color, disabledSelectedContainerColor: androidx.compose.ui.graphics.Color, selectedLabelColor: androidx.compose.ui.graphics.Color, selectedLeadingIconColor: androidx.compose.ui.graphics.Color, selectedTrailingIconColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.SelectableChipColors)"""
+ ...
+
+class SelectableChipElevation:
+ """Kotlin: androidx.compose.material3.SelectableChipElevation"""
+ def __init__(self, elevation: float, pressedElevation: float, focusedElevation: float, hoveredElevation: float, draggedElevation: float, disabledElevation: float) -> None:
+ """Kotlin constructor: androidx.compose.material3.SelectableChipElevation (androidx.compose.material3.SelectableChipElevation(elevation: androidx.compose.ui.unit.Dp, pressedElevation: androidx.compose.ui.unit.Dp, focusedElevation: androidx.compose.ui.unit.Dp, hoveredElevation: androidx.compose.ui.unit.Dp, draggedElevation: androidx.compose.ui.unit.Dp, disabledElevation: androidx.compose.ui.unit.Dp): androidx.compose.material3.SelectableChipElevation)"""
+ ...
+ @property
+ def disabled_elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.SelectableChipElevation.disabledElevation (androidx.compose.material3.SelectableChipElevation.disabledElevation: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def dragged_elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.SelectableChipElevation.draggedElevation (androidx.compose.material3.SelectableChipElevation.draggedElevation: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.SelectableChipElevation.elevation (androidx.compose.material3.SelectableChipElevation.elevation: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def focused_elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.SelectableChipElevation.focusedElevation (androidx.compose.material3.SelectableChipElevation.focusedElevation: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def hovered_elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.SelectableChipElevation.hoveredElevation (androidx.compose.material3.SelectableChipElevation.hoveredElevation: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def pressed_elevation(self) -> float:
+ """Kotlin property: androidx.compose.material3.SelectableChipElevation.pressedElevation (androidx.compose.material3.SelectableChipElevation.pressedElevation: androidx.compose.ui.unit.Dp)"""
+ ...
+
+class SelectableDates:
+ """Kotlin: androidx.compose.material3.SelectableDates"""
+
+class Shapes:
+ """Kotlin: androidx.compose.material3.Shapes"""
+ def __init__(self, extraSmall: _t.Any = ..., small: _t.Any = ..., medium: _t.Any = ..., large: _t.Any = ..., extraLarge: _t.Any = ...) -> None:
+ """Kotlin constructor: androidx.compose.material3.Shapes (androidx.compose.material3.Shapes(extraSmall: androidx.compose.foundation.shape.CornerBasedShape, small: androidx.compose.foundation.shape.CornerBasedShape, medium: androidx.compose.foundation.shape.CornerBasedShape, large: androidx.compose.foundation.shape.CornerBasedShape, extraLarge: androidx.compose.foundation.shape.CornerBasedShape): androidx.compose.material3.Shapes)"""
+ ...
+ @property
+ def extra_large(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Shapes.extraLarge (androidx.compose.material3.Shapes.extraLarge: androidx.compose.foundation.shape.CornerBasedShape)"""
+ ...
+ @property
+ def extra_small(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Shapes.extraSmall (androidx.compose.material3.Shapes.extraSmall: androidx.compose.foundation.shape.CornerBasedShape)"""
+ ...
+ @property
+ def large(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Shapes.large (androidx.compose.material3.Shapes.large: androidx.compose.foundation.shape.CornerBasedShape)"""
+ ...
+ @property
+ def medium(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Shapes.medium (androidx.compose.material3.Shapes.medium: androidx.compose.foundation.shape.CornerBasedShape)"""
+ ...
+ @property
+ def small(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Shapes.small (androidx.compose.material3.Shapes.small: androidx.compose.foundation.shape.CornerBasedShape)"""
+ ...
+
+class SheetState:
+ """Kotlin: androidx.compose.material3.SheetState"""
+ def __init__(self, skipPartiallyExpanded: bool, positionalThreshold: _t.Callable[[], float], velocityThreshold: _t.Callable[[], float], initialValue: SheetValue = ..., confirmValueChange: _t.Callable[[SheetValue], bool] = ..., skipHiddenState: bool = ...) -> None:
+ """Kotlin constructor: androidx.compose.material3.SheetState (androidx.compose.material3.SheetState(skipPartiallyExpanded: kotlin.Boolean, positionalThreshold: kotlin.Function0, velocityThreshold: kotlin.Function0, initialValue: androidx.compose.material3.SheetValue, confirmValueChange: kotlin.Function1, skipHiddenState: kotlin.Boolean): androidx.compose.material3.SheetState)"""
+ ...
+ @property
+ def current_value(self) -> SheetValue:
+ """Kotlin property: androidx.compose.material3.SheetState.currentValue (androidx.compose.material3.SheetState.currentValue: androidx.compose.material3.SheetValue)"""
+ ...
+ @property
+ def has_expanded_state(self) -> bool:
+ """Kotlin property: androidx.compose.material3.SheetState.hasExpandedState (androidx.compose.material3.SheetState.hasExpandedState: kotlin.Boolean)"""
+ ...
+ @property
+ def has_partially_expanded_state(self) -> bool:
+ """Kotlin property: androidx.compose.material3.SheetState.hasPartiallyExpandedState (androidx.compose.material3.SheetState.hasPartiallyExpandedState: kotlin.Boolean)"""
+ ...
+ @property
+ def is_animation_running(self) -> bool:
+ """Kotlin property: androidx.compose.material3.SheetState.isAnimationRunning (androidx.compose.material3.SheetState.isAnimationRunning: kotlin.Boolean)"""
+ ...
+ @property
+ def is_visible(self) -> bool:
+ """Kotlin property: androidx.compose.material3.SheetState.isVisible (androidx.compose.material3.SheetState.isVisible: kotlin.Boolean)"""
+ ...
+ @property
+ def target_value(self) -> SheetValue:
+ """Kotlin property: androidx.compose.material3.SheetState.targetValue (androidx.compose.material3.SheetState.targetValue: androidx.compose.material3.SheetValue)"""
+ ...
+
+class SheetValue:
+ """Kotlin: androidx.compose.material3.SheetValue"""
+
+class SingleChoiceSegmentedButtonRowScope:
+ """Kotlin: androidx.compose.material3.SingleChoiceSegmentedButtonRowScope"""
+ SegmentedButton: _t.ClassVar[_SingleChoiceSegmentedButtonRowScope_SegmentedButton]
+ SegmentedButton__SingleChoiceSegmentedButtonRowScope_Boolean_Unit_Shape_Modifier_Boolean_SegmentedButtonColors_BorderStroke_PaddingValues_MutableInteractionSource_Unit_Unit: _t.ClassVar[_SingleChoiceSegmentedButtonRowScope_SegmentedButton__SingleChoiceSegmentedButtonRowScope_Boolean_Unit_Shape_Modifier_Boolean_SegmentedButtonColors_BorderStroke_PaddingValues_MutableInteractionSource_Unit_Unit]
+
+class SliderColors:
+ """Kotlin: androidx.compose.material3.SliderColors"""
+ def __init__(self, thumbColor: _t.Any, activeTrackColor: _t.Any, activeTickColor: _t.Any, inactiveTrackColor: _t.Any, inactiveTickColor: _t.Any, disabledThumbColor: _t.Any, disabledActiveTrackColor: _t.Any, disabledActiveTickColor: _t.Any, disabledInactiveTrackColor: _t.Any, disabledInactiveTickColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.SliderColors (androidx.compose.material3.SliderColors(thumbColor: androidx.compose.ui.graphics.Color, activeTrackColor: androidx.compose.ui.graphics.Color, activeTickColor: androidx.compose.ui.graphics.Color, inactiveTrackColor: androidx.compose.ui.graphics.Color, inactiveTickColor: androidx.compose.ui.graphics.Color, disabledThumbColor: androidx.compose.ui.graphics.Color, disabledActiveTrackColor: androidx.compose.ui.graphics.Color, disabledActiveTickColor: androidx.compose.ui.graphics.Color, disabledInactiveTrackColor: androidx.compose.ui.graphics.Color, disabledInactiveTickColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.SliderColors)"""
+ ...
+ @property
+ def active_tick_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SliderColors.activeTickColor (androidx.compose.material3.SliderColors.activeTickColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def active_track_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SliderColors.activeTrackColor (androidx.compose.material3.SliderColors.activeTrackColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_active_tick_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SliderColors.disabledActiveTickColor (androidx.compose.material3.SliderColors.disabledActiveTickColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_active_track_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SliderColors.disabledActiveTrackColor (androidx.compose.material3.SliderColors.disabledActiveTrackColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_inactive_tick_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SliderColors.disabledInactiveTickColor (androidx.compose.material3.SliderColors.disabledInactiveTickColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_inactive_track_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SliderColors.disabledInactiveTrackColor (androidx.compose.material3.SliderColors.disabledInactiveTrackColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_thumb_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SliderColors.disabledThumbColor (androidx.compose.material3.SliderColors.disabledThumbColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def inactive_tick_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SliderColors.inactiveTickColor (androidx.compose.material3.SliderColors.inactiveTickColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def inactive_track_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SliderColors.inactiveTrackColor (androidx.compose.material3.SliderColors.inactiveTrackColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def thumb_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SliderColors.thumbColor (androidx.compose.material3.SliderColors.thumbColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class SliderState(_t.Any):
+ """Kotlin: androidx.compose.material3.SliderState"""
+ @property
+ def coerced_value_as_fraction(self) -> float:
+ """Kotlin property: androidx.compose.material3.SliderState.coercedValueAsFraction (androidx.compose.material3.SliderState.coercedValueAsFraction: kotlin.Float)"""
+ ...
+ @property
+ def is_dragging(self) -> bool:
+ """Kotlin property: androidx.compose.material3.SliderState.isDragging (androidx.compose.material3.SliderState.isDragging: kotlin.Boolean)"""
+ ...
+ @property
+ def should_auto_snap(self) -> bool:
+ """Kotlin property: androidx.compose.material3.SliderState.shouldAutoSnap (androidx.compose.material3.SliderState.shouldAutoSnap: kotlin.Boolean)"""
+ ...
+ @should_auto_snap.setter
+ def should_auto_snap(self, value: bool) -> None:
+ """Kotlin property: androidx.compose.material3.SliderState.shouldAutoSnap="""
+ ...
+ @property
+ def steps(self) -> int:
+ """Kotlin property: androidx.compose.material3.SliderState.steps (androidx.compose.material3.SliderState.steps: kotlin.Int)"""
+ ...
+ @property
+ def value(self) -> float:
+ """Kotlin property: androidx.compose.material3.SliderState.value (androidx.compose.material3.SliderState.value: kotlin.Float)"""
+ ...
+ @value.setter
+ def value(self, value: float) -> None:
+ """Kotlin property: androidx.compose.material3.SliderState.value="""
+ ...
+
+class SnackbarData:
+ """Kotlin: androidx.compose.material3.SnackbarData"""
+ @property
+ def visuals(self) -> SnackbarVisuals:
+ """Kotlin property: androidx.compose.material3.SnackbarData.visuals (androidx.compose.material3.SnackbarData.visuals: androidx.compose.material3.SnackbarVisuals)"""
+ ...
+
+class SnackbarDuration:
+ """Kotlin: androidx.compose.material3.SnackbarDuration"""
+
+class SnackbarHostState:
+ """Kotlin: androidx.compose.material3.SnackbarHostState"""
+ def __init__(self) -> None:
+ """Kotlin constructor: androidx.compose.material3.SnackbarHostState (androidx.compose.material3.SnackbarHostState(): androidx.compose.material3.SnackbarHostState)"""
+ ...
+ @property
+ def current_snackbar_data(self) -> SnackbarData | None:
+ """Kotlin property: androidx.compose.material3.SnackbarHostState.currentSnackbarData (androidx.compose.material3.SnackbarHostState.currentSnackbarData: androidx.compose.material3.SnackbarData?)"""
+ ...
+
+class SnackbarVisuals:
+ """Kotlin: androidx.compose.material3.SnackbarVisuals"""
+ @property
+ def action_label(self) -> str | None:
+ """Kotlin property: androidx.compose.material3.SnackbarVisuals.actionLabel (androidx.compose.material3.SnackbarVisuals.actionLabel: kotlin.String?)"""
+ ...
+ @property
+ def duration(self) -> SnackbarDuration:
+ """Kotlin property: androidx.compose.material3.SnackbarVisuals.duration (androidx.compose.material3.SnackbarVisuals.duration: androidx.compose.material3.SnackbarDuration)"""
+ ...
+ @property
+ def message(self) -> str:
+ """Kotlin property: androidx.compose.material3.SnackbarVisuals.message (androidx.compose.material3.SnackbarVisuals.message: kotlin.String)"""
+ ...
+ @property
+ def with_dismiss_action(self) -> bool:
+ """Kotlin property: androidx.compose.material3.SnackbarVisuals.withDismissAction (androidx.compose.material3.SnackbarVisuals.withDismissAction: kotlin.Boolean)"""
+ ...
+
+class SwipeToDismissBoxState:
+ """Kotlin: androidx.compose.material3.SwipeToDismissBoxState"""
+ @_t.overload
+ def __init__(self, initialValue: SwipeToDismissBoxValue, density: _t.Any, confirmValueChange: _t.Callable[[SwipeToDismissBoxValue], bool] = ..., *, positionalThreshold: _t.Callable[[float], float]) -> None: ...
+ @_t.overload
+ def __init__(self, initialValue: SwipeToDismissBoxValue, positionalThreshold: _t.Callable[[float], float]) -> None: ... # type: ignore[overload-cannot-match]
+ @property
+ def current_value(self) -> SwipeToDismissBoxValue:
+ """Kotlin property: androidx.compose.material3.SwipeToDismissBoxState.currentValue (androidx.compose.material3.SwipeToDismissBoxState.currentValue: androidx.compose.material3.SwipeToDismissBoxValue)"""
+ ...
+ @property
+ def dismiss_direction(self) -> SwipeToDismissBoxValue:
+ """Kotlin property: androidx.compose.material3.SwipeToDismissBoxState.dismissDirection (androidx.compose.material3.SwipeToDismissBoxState.dismissDirection: androidx.compose.material3.SwipeToDismissBoxValue)"""
+ ...
+ @property
+ def progress(self) -> float:
+ """Kotlin property: androidx.compose.material3.SwipeToDismissBoxState.progress (androidx.compose.material3.SwipeToDismissBoxState.progress: kotlin.Float)"""
+ ...
+ @property
+ def settled_value(self) -> SwipeToDismissBoxValue:
+ """Kotlin property: androidx.compose.material3.SwipeToDismissBoxState.settledValue (androidx.compose.material3.SwipeToDismissBoxState.settledValue: androidx.compose.material3.SwipeToDismissBoxValue)"""
+ ...
+ @property
+ def target_value(self) -> SwipeToDismissBoxValue:
+ """Kotlin property: androidx.compose.material3.SwipeToDismissBoxState.targetValue (androidx.compose.material3.SwipeToDismissBoxState.targetValue: androidx.compose.material3.SwipeToDismissBoxValue)"""
+ ...
+
+class SwipeToDismissBoxValue:
+ """Kotlin: androidx.compose.material3.SwipeToDismissBoxValue"""
+
+class SwitchColors:
+ """Kotlin: androidx.compose.material3.SwitchColors"""
+ def __init__(self, checkedThumbColor: _t.Any, checkedTrackColor: _t.Any, checkedBorderColor: _t.Any, checkedIconColor: _t.Any, uncheckedThumbColor: _t.Any, uncheckedTrackColor: _t.Any, uncheckedBorderColor: _t.Any, uncheckedIconColor: _t.Any, disabledCheckedThumbColor: _t.Any, disabledCheckedTrackColor: _t.Any, disabledCheckedBorderColor: _t.Any, disabledCheckedIconColor: _t.Any, disabledUncheckedThumbColor: _t.Any, disabledUncheckedTrackColor: _t.Any, disabledUncheckedBorderColor: _t.Any, disabledUncheckedIconColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.SwitchColors (androidx.compose.material3.SwitchColors(checkedThumbColor: androidx.compose.ui.graphics.Color, checkedTrackColor: androidx.compose.ui.graphics.Color, checkedBorderColor: androidx.compose.ui.graphics.Color, checkedIconColor: androidx.compose.ui.graphics.Color, uncheckedThumbColor: androidx.compose.ui.graphics.Color, uncheckedTrackColor: androidx.compose.ui.graphics.Color, uncheckedBorderColor: androidx.compose.ui.graphics.Color, uncheckedIconColor: androidx.compose.ui.graphics.Color, disabledCheckedThumbColor: androidx.compose.ui.graphics.Color, disabledCheckedTrackColor: androidx.compose.ui.graphics.Color, disabledCheckedBorderColor: androidx.compose.ui.graphics.Color, disabledCheckedIconColor: androidx.compose.ui.graphics.Color, disabledUncheckedThumbColor: androidx.compose.ui.graphics.Color, disabledUncheckedTrackColor: androidx.compose.ui.graphics.Color, disabledUncheckedBorderColor: androidx.compose.ui.graphics.Color, disabledUncheckedIconColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.SwitchColors)"""
+ ...
+ @property
+ def checked_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.checkedBorderColor (androidx.compose.material3.SwitchColors.checkedBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def checked_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.checkedIconColor (androidx.compose.material3.SwitchColors.checkedIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def checked_thumb_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.checkedThumbColor (androidx.compose.material3.SwitchColors.checkedThumbColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def checked_track_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.checkedTrackColor (androidx.compose.material3.SwitchColors.checkedTrackColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_checked_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.disabledCheckedBorderColor (androidx.compose.material3.SwitchColors.disabledCheckedBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_checked_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.disabledCheckedIconColor (androidx.compose.material3.SwitchColors.disabledCheckedIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_checked_thumb_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.disabledCheckedThumbColor (androidx.compose.material3.SwitchColors.disabledCheckedThumbColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_checked_track_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.disabledCheckedTrackColor (androidx.compose.material3.SwitchColors.disabledCheckedTrackColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_unchecked_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.disabledUncheckedBorderColor (androidx.compose.material3.SwitchColors.disabledUncheckedBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_unchecked_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.disabledUncheckedIconColor (androidx.compose.material3.SwitchColors.disabledUncheckedIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_unchecked_thumb_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.disabledUncheckedThumbColor (androidx.compose.material3.SwitchColors.disabledUncheckedThumbColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_unchecked_track_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.disabledUncheckedTrackColor (androidx.compose.material3.SwitchColors.disabledUncheckedTrackColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unchecked_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.uncheckedBorderColor (androidx.compose.material3.SwitchColors.uncheckedBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unchecked_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.uncheckedIconColor (androidx.compose.material3.SwitchColors.uncheckedIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unchecked_thumb_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.uncheckedThumbColor (androidx.compose.material3.SwitchColors.uncheckedThumbColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unchecked_track_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.SwitchColors.uncheckedTrackColor (androidx.compose.material3.SwitchColors.uncheckedTrackColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class TabIndicatorScope:
+ """Kotlin: androidx.compose.material3.TabIndicatorScope"""
+
+class TabPosition:
+ """Kotlin: androidx.compose.material3.TabPosition"""
+ @property
+ def content_width(self) -> float:
+ """Kotlin property: androidx.compose.material3.TabPosition.contentWidth (androidx.compose.material3.TabPosition.contentWidth: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def left(self) -> float:
+ """Kotlin property: androidx.compose.material3.TabPosition.left (androidx.compose.material3.TabPosition.left: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def right(self) -> float:
+ """Kotlin property: androidx.compose.material3.TabPosition.right (androidx.compose.material3.TabPosition.right: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def width(self) -> float:
+ """Kotlin property: androidx.compose.material3.TabPosition.width (androidx.compose.material3.TabPosition.width: androidx.compose.ui.unit.Dp)"""
+ ...
+
+class TextFieldColors:
+ """Kotlin: androidx.compose.material3.TextFieldColors"""
+ def __init__(self, focusedTextColor: _t.Any, unfocusedTextColor: _t.Any, disabledTextColor: _t.Any, errorTextColor: _t.Any, focusedContainerColor: _t.Any, unfocusedContainerColor: _t.Any, disabledContainerColor: _t.Any, errorContainerColor: _t.Any, cursorColor: _t.Any, errorCursorColor: _t.Any, textSelectionColors: _t.Any, focusedIndicatorColor: _t.Any, unfocusedIndicatorColor: _t.Any, disabledIndicatorColor: _t.Any, errorIndicatorColor: _t.Any, focusedLeadingIconColor: _t.Any, unfocusedLeadingIconColor: _t.Any, disabledLeadingIconColor: _t.Any, errorLeadingIconColor: _t.Any, focusedTrailingIconColor: _t.Any, unfocusedTrailingIconColor: _t.Any, disabledTrailingIconColor: _t.Any, errorTrailingIconColor: _t.Any, focusedLabelColor: _t.Any, unfocusedLabelColor: _t.Any, disabledLabelColor: _t.Any, errorLabelColor: _t.Any, focusedPlaceholderColor: _t.Any, unfocusedPlaceholderColor: _t.Any, disabledPlaceholderColor: _t.Any, errorPlaceholderColor: _t.Any, focusedSupportingTextColor: _t.Any, unfocusedSupportingTextColor: _t.Any, disabledSupportingTextColor: _t.Any, errorSupportingTextColor: _t.Any, focusedPrefixColor: _t.Any, unfocusedPrefixColor: _t.Any, disabledPrefixColor: _t.Any, errorPrefixColor: _t.Any, focusedSuffixColor: _t.Any, unfocusedSuffixColor: _t.Any, disabledSuffixColor: _t.Any, errorSuffixColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.TextFieldColors (androidx.compose.material3.TextFieldColors(focusedTextColor: androidx.compose.ui.graphics.Color, unfocusedTextColor: androidx.compose.ui.graphics.Color, disabledTextColor: androidx.compose.ui.graphics.Color, errorTextColor: androidx.compose.ui.graphics.Color, focusedContainerColor: androidx.compose.ui.graphics.Color, unfocusedContainerColor: androidx.compose.ui.graphics.Color, disabledContainerColor: androidx.compose.ui.graphics.Color, errorContainerColor: androidx.compose.ui.graphics.Color, cursorColor: androidx.compose.ui.graphics.Color, errorCursorColor: androidx.compose.ui.graphics.Color, textSelectionColors: androidx.compose.foundation.text.selection.TextSelectionColors, focusedIndicatorColor: androidx.compose.ui.graphics.Color, unfocusedIndicatorColor: androidx.compose.ui.graphics.Color, disabledIndicatorColor: androidx.compose.ui.graphics.Color, errorIndicatorColor: androidx.compose.ui.graphics.Color, focusedLeadingIconColor: androidx.compose.ui.graphics.Color, unfocusedLeadingIconColor: androidx.compose.ui.graphics.Color, disabledLeadingIconColor: androidx.compose.ui.graphics.Color, errorLeadingIconColor: androidx.compose.ui.graphics.Color, focusedTrailingIconColor: androidx.compose.ui.graphics.Color, unfocusedTrailingIconColor: androidx.compose.ui.graphics.Color, disabledTrailingIconColor: androidx.compose.ui.graphics.Color, errorTrailingIconColor: androidx.compose.ui.graphics.Color, focusedLabelColor: androidx.compose.ui.graphics.Color, unfocusedLabelColor: androidx.compose.ui.graphics.Color, disabledLabelColor: androidx.compose.ui.graphics.Color, errorLabelColor: androidx.compose.ui.graphics.Color, focusedPlaceholderColor: androidx.compose.ui.graphics.Color, unfocusedPlaceholderColor: androidx.compose.ui.graphics.Color, disabledPlaceholderColor: androidx.compose.ui.graphics.Color, errorPlaceholderColor: androidx.compose.ui.graphics.Color, focusedSupportingTextColor: androidx.compose.ui.graphics.Color, unfocusedSupportingTextColor: androidx.compose.ui.graphics.Color, disabledSupportingTextColor: androidx.compose.ui.graphics.Color, errorSupportingTextColor: androidx.compose.ui.graphics.Color, focusedPrefixColor: androidx.compose.ui.graphics.Color, unfocusedPrefixColor: androidx.compose.ui.graphics.Color, disabledPrefixColor: androidx.compose.ui.graphics.Color, errorPrefixColor: androidx.compose.ui.graphics.Color, focusedSuffixColor: androidx.compose.ui.graphics.Color, unfocusedSuffixColor: androidx.compose.ui.graphics.Color, disabledSuffixColor: androidx.compose.ui.graphics.Color, errorSuffixColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.TextFieldColors)"""
+ ...
+ @property
+ def cursor_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.cursorColor (androidx.compose.material3.TextFieldColors.cursorColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.disabledContainerColor (androidx.compose.material3.TextFieldColors.disabledContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_indicator_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.disabledIndicatorColor (androidx.compose.material3.TextFieldColors.disabledIndicatorColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_label_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.disabledLabelColor (androidx.compose.material3.TextFieldColors.disabledLabelColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_leading_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.disabledLeadingIconColor (androidx.compose.material3.TextFieldColors.disabledLeadingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_placeholder_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.disabledPlaceholderColor (androidx.compose.material3.TextFieldColors.disabledPlaceholderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_prefix_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.disabledPrefixColor (androidx.compose.material3.TextFieldColors.disabledPrefixColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_suffix_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.disabledSuffixColor (androidx.compose.material3.TextFieldColors.disabledSuffixColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_supporting_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.disabledSupportingTextColor (androidx.compose.material3.TextFieldColors.disabledSupportingTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.disabledTextColor (androidx.compose.material3.TextFieldColors.disabledTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def disabled_trailing_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.disabledTrailingIconColor (androidx.compose.material3.TextFieldColors.disabledTrailingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.errorContainerColor (androidx.compose.material3.TextFieldColors.errorContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_cursor_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.errorCursorColor (androidx.compose.material3.TextFieldColors.errorCursorColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_indicator_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.errorIndicatorColor (androidx.compose.material3.TextFieldColors.errorIndicatorColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_label_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.errorLabelColor (androidx.compose.material3.TextFieldColors.errorLabelColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_leading_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.errorLeadingIconColor (androidx.compose.material3.TextFieldColors.errorLeadingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_placeholder_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.errorPlaceholderColor (androidx.compose.material3.TextFieldColors.errorPlaceholderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_prefix_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.errorPrefixColor (androidx.compose.material3.TextFieldColors.errorPrefixColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_suffix_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.errorSuffixColor (androidx.compose.material3.TextFieldColors.errorSuffixColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_supporting_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.errorSupportingTextColor (androidx.compose.material3.TextFieldColors.errorSupportingTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.errorTextColor (androidx.compose.material3.TextFieldColors.errorTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def error_trailing_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.errorTrailingIconColor (androidx.compose.material3.TextFieldColors.errorTrailingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def focused_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.focusedContainerColor (androidx.compose.material3.TextFieldColors.focusedContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def focused_indicator_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.focusedIndicatorColor (androidx.compose.material3.TextFieldColors.focusedIndicatorColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def focused_label_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.focusedLabelColor (androidx.compose.material3.TextFieldColors.focusedLabelColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def focused_leading_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.focusedLeadingIconColor (androidx.compose.material3.TextFieldColors.focusedLeadingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def focused_placeholder_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.focusedPlaceholderColor (androidx.compose.material3.TextFieldColors.focusedPlaceholderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def focused_prefix_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.focusedPrefixColor (androidx.compose.material3.TextFieldColors.focusedPrefixColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def focused_suffix_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.focusedSuffixColor (androidx.compose.material3.TextFieldColors.focusedSuffixColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def focused_supporting_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.focusedSupportingTextColor (androidx.compose.material3.TextFieldColors.focusedSupportingTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def focused_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.focusedTextColor (androidx.compose.material3.TextFieldColors.focusedTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def focused_trailing_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.focusedTrailingIconColor (androidx.compose.material3.TextFieldColors.focusedTrailingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def text_selection_colors(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.textSelectionColors (androidx.compose.material3.TextFieldColors.textSelectionColors: androidx.compose.foundation.text.selection.TextSelectionColors)"""
+ ...
+ @property
+ def unfocused_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.unfocusedContainerColor (androidx.compose.material3.TextFieldColors.unfocusedContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unfocused_indicator_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.unfocusedIndicatorColor (androidx.compose.material3.TextFieldColors.unfocusedIndicatorColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unfocused_label_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.unfocusedLabelColor (androidx.compose.material3.TextFieldColors.unfocusedLabelColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unfocused_leading_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.unfocusedLeadingIconColor (androidx.compose.material3.TextFieldColors.unfocusedLeadingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unfocused_placeholder_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.unfocusedPlaceholderColor (androidx.compose.material3.TextFieldColors.unfocusedPlaceholderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unfocused_prefix_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.unfocusedPrefixColor (androidx.compose.material3.TextFieldColors.unfocusedPrefixColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unfocused_suffix_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.unfocusedSuffixColor (androidx.compose.material3.TextFieldColors.unfocusedSuffixColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unfocused_supporting_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.unfocusedSupportingTextColor (androidx.compose.material3.TextFieldColors.unfocusedSupportingTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unfocused_text_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.unfocusedTextColor (androidx.compose.material3.TextFieldColors.unfocusedTextColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def unfocused_trailing_icon_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TextFieldColors.unfocusedTrailingIconColor (androidx.compose.material3.TextFieldColors.unfocusedTrailingIconColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class TextFieldLabelPosition:
+ """Kotlin: androidx.compose.material3.TextFieldLabelPosition"""
+
+class TextFieldLabelScope:
+ """Kotlin: androidx.compose.material3.TextFieldLabelScope"""
+ @property
+ def label_minimized_progress(self) -> float:
+ """Kotlin property: androidx.compose.material3.TextFieldLabelScope.labelMinimizedProgress (androidx.compose.material3.TextFieldLabelScope.labelMinimizedProgress: kotlin.Float)"""
+ ...
+
+class TimePickerColors:
+ """Kotlin: androidx.compose.material3.TimePickerColors"""
+ def __init__(self, clockDialColor: _t.Any, selectorColor: _t.Any, containerColor: _t.Any, periodSelectorBorderColor: _t.Any, clockDialSelectedContentColor: _t.Any, clockDialUnselectedContentColor: _t.Any, periodSelectorSelectedContainerColor: _t.Any, periodSelectorUnselectedContainerColor: _t.Any, periodSelectorSelectedContentColor: _t.Any, periodSelectorUnselectedContentColor: _t.Any, timeSelectorSelectedContainerColor: _t.Any, timeSelectorUnselectedContainerColor: _t.Any, timeSelectorSelectedContentColor: _t.Any, timeSelectorUnselectedContentColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.TimePickerColors (androidx.compose.material3.TimePickerColors(clockDialColor: androidx.compose.ui.graphics.Color, selectorColor: androidx.compose.ui.graphics.Color, containerColor: androidx.compose.ui.graphics.Color, periodSelectorBorderColor: androidx.compose.ui.graphics.Color, clockDialSelectedContentColor: androidx.compose.ui.graphics.Color, clockDialUnselectedContentColor: androidx.compose.ui.graphics.Color, periodSelectorSelectedContainerColor: androidx.compose.ui.graphics.Color, periodSelectorUnselectedContainerColor: androidx.compose.ui.graphics.Color, periodSelectorSelectedContentColor: androidx.compose.ui.graphics.Color, periodSelectorUnselectedContentColor: androidx.compose.ui.graphics.Color, timeSelectorSelectedContainerColor: androidx.compose.ui.graphics.Color, timeSelectorUnselectedContainerColor: androidx.compose.ui.graphics.Color, timeSelectorSelectedContentColor: androidx.compose.ui.graphics.Color, timeSelectorUnselectedContentColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.TimePickerColors)"""
+ ...
+ @property
+ def clock_dial_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.clockDialColor (androidx.compose.material3.TimePickerColors.clockDialColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def clock_dial_selected_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.clockDialSelectedContentColor (androidx.compose.material3.TimePickerColors.clockDialSelectedContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def clock_dial_unselected_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.clockDialUnselectedContentColor (androidx.compose.material3.TimePickerColors.clockDialUnselectedContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.containerColor (androidx.compose.material3.TimePickerColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def period_selector_border_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.periodSelectorBorderColor (androidx.compose.material3.TimePickerColors.periodSelectorBorderColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def period_selector_selected_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.periodSelectorSelectedContainerColor (androidx.compose.material3.TimePickerColors.periodSelectorSelectedContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def period_selector_selected_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.periodSelectorSelectedContentColor (androidx.compose.material3.TimePickerColors.periodSelectorSelectedContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def period_selector_unselected_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.periodSelectorUnselectedContainerColor (androidx.compose.material3.TimePickerColors.periodSelectorUnselectedContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def period_selector_unselected_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.periodSelectorUnselectedContentColor (androidx.compose.material3.TimePickerColors.periodSelectorUnselectedContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def selector_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.selectorColor (androidx.compose.material3.TimePickerColors.selectorColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def time_selector_selected_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.timeSelectorSelectedContainerColor (androidx.compose.material3.TimePickerColors.timeSelectorSelectedContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def time_selector_selected_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.timeSelectorSelectedContentColor (androidx.compose.material3.TimePickerColors.timeSelectorSelectedContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def time_selector_unselected_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.timeSelectorUnselectedContainerColor (androidx.compose.material3.TimePickerColors.timeSelectorUnselectedContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def time_selector_unselected_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TimePickerColors.timeSelectorUnselectedContentColor (androidx.compose.material3.TimePickerColors.timeSelectorUnselectedContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class TooltipScope:
+ """Kotlin: androidx.compose.material3.TooltipScope"""
+ PlainTooltip: _t.ClassVar[_TooltipScope_PlainTooltip]
+ RichTooltip: _t.ClassVar[_TooltipScope_RichTooltip]
+
+class TopAppBarColors:
+ """Kotlin: androidx.compose.material3.TopAppBarColors"""
+ @_t.overload
+ def __init__(self, containerColor: _t.Any, scrolledContainerColor: _t.Any, navigationIconContentColor: _t.Any, titleContentColor: _t.Any, actionIconContentColor: _t.Any) -> None: ...
+ @_t.overload
+ def __init__(self, containerColor: _t.Any, scrolledContainerColor: _t.Any, navigationIconContentColor: _t.Any, titleContentColor: _t.Any, actionIconContentColor: _t.Any, subtitleContentColor: _t.Any) -> None: ... # type: ignore[overload-cannot-match]
+ @property
+ def action_icon_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TopAppBarColors.actionIconContentColor (androidx.compose.material3.TopAppBarColors.actionIconContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TopAppBarColors.containerColor (androidx.compose.material3.TopAppBarColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def navigation_icon_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TopAppBarColors.navigationIconContentColor (androidx.compose.material3.TopAppBarColors.navigationIconContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def scrolled_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TopAppBarColors.scrolledContainerColor (androidx.compose.material3.TopAppBarColors.scrolledContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def subtitle_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TopAppBarColors.subtitleContentColor (androidx.compose.material3.TopAppBarColors.subtitleContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def title_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TopAppBarColors.titleContentColor (androidx.compose.material3.TopAppBarColors.titleContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class TopAppBarScrollBehavior:
+ """Kotlin: androidx.compose.material3.TopAppBarScrollBehavior"""
+ @property
+ def is_pinned(self) -> bool:
+ """Kotlin property: androidx.compose.material3.TopAppBarScrollBehavior.isPinned (androidx.compose.material3.TopAppBarScrollBehavior.isPinned: kotlin.Boolean)"""
+ ...
+ @property
+ def nested_scroll_connection(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TopAppBarScrollBehavior.nestedScrollConnection (androidx.compose.material3.TopAppBarScrollBehavior.nestedScrollConnection: androidx.compose.ui.input.nestedscroll.NestedScrollConnection)"""
+ ...
+ @property
+ def state(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.TopAppBarScrollBehavior.state (androidx.compose.material3.TopAppBarScrollBehavior.state: androidx.compose.material3.TopAppBarState)"""
+ ...
+
+class Typography:
+ """Kotlin: androidx.compose.material3.Typography"""
+ def __init__(self, displayLarge: _t.Any, displayMedium: _t.Any, displaySmall: _t.Any, headlineLarge: _t.Any, headlineMedium: _t.Any, headlineSmall: _t.Any, titleLarge: _t.Any, titleMedium: _t.Any, titleSmall: _t.Any, bodyLarge: _t.Any, bodyMedium: _t.Any, bodySmall: _t.Any, labelLarge: _t.Any, labelMedium: _t.Any, labelSmall: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.Typography (androidx.compose.material3.Typography(displayLarge: androidx.compose.ui.text.TextStyle, displayMedium: androidx.compose.ui.text.TextStyle, displaySmall: androidx.compose.ui.text.TextStyle, headlineLarge: androidx.compose.ui.text.TextStyle, headlineMedium: androidx.compose.ui.text.TextStyle, headlineSmall: androidx.compose.ui.text.TextStyle, titleLarge: androidx.compose.ui.text.TextStyle, titleMedium: androidx.compose.ui.text.TextStyle, titleSmall: androidx.compose.ui.text.TextStyle, bodyLarge: androidx.compose.ui.text.TextStyle, bodyMedium: androidx.compose.ui.text.TextStyle, bodySmall: androidx.compose.ui.text.TextStyle, labelLarge: androidx.compose.ui.text.TextStyle, labelMedium: androidx.compose.ui.text.TextStyle, labelSmall: androidx.compose.ui.text.TextStyle): androidx.compose.material3.Typography)"""
+ ...
+ @property
+ def body_large(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.bodyLarge (androidx.compose.material3.Typography.bodyLarge: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def body_medium(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.bodyMedium (androidx.compose.material3.Typography.bodyMedium: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def body_small(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.bodySmall (androidx.compose.material3.Typography.bodySmall: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def display_large(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.displayLarge (androidx.compose.material3.Typography.displayLarge: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def display_medium(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.displayMedium (androidx.compose.material3.Typography.displayMedium: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def display_small(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.displaySmall (androidx.compose.material3.Typography.displaySmall: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def headline_large(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.headlineLarge (androidx.compose.material3.Typography.headlineLarge: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def headline_medium(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.headlineMedium (androidx.compose.material3.Typography.headlineMedium: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def headline_small(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.headlineSmall (androidx.compose.material3.Typography.headlineSmall: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def label_large(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.labelLarge (androidx.compose.material3.Typography.labelLarge: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def label_medium(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.labelMedium (androidx.compose.material3.Typography.labelMedium: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def label_small(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.labelSmall (androidx.compose.material3.Typography.labelSmall: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def title_large(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.titleLarge (androidx.compose.material3.Typography.titleLarge: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def title_medium(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.titleMedium (androidx.compose.material3.Typography.titleMedium: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def title_small(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.Typography.titleSmall (androidx.compose.material3.Typography.titleSmall: androidx.compose.ui.text.TextStyle)"""
+ ...
+
+class WideNavigationRailColors:
+ """Kotlin: androidx.compose.material3.WideNavigationRailColors"""
+ def __init__(self, containerColor: _t.Any, contentColor: _t.Any, modalContainerColor: _t.Any, modalScrimColor: _t.Any, modalContentColor: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.material3.WideNavigationRailColors (androidx.compose.material3.WideNavigationRailColors(containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, modalContainerColor: androidx.compose.ui.graphics.Color, modalScrimColor: androidx.compose.ui.graphics.Color, modalContentColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.WideNavigationRailColors)"""
+ ...
+ @property
+ def container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.WideNavigationRailColors.containerColor (androidx.compose.material3.WideNavigationRailColors.containerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.WideNavigationRailColors.contentColor (androidx.compose.material3.WideNavigationRailColors.contentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def modal_container_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.WideNavigationRailColors.modalContainerColor (androidx.compose.material3.WideNavigationRailColors.modalContainerColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def modal_content_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.WideNavigationRailColors.modalContentColor (androidx.compose.material3.WideNavigationRailColors.modalContentColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def modal_scrim_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.material3.WideNavigationRailColors.modalScrimColor (androidx.compose.material3.WideNavigationRailColors.modalScrimColor: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class WideNavigationRailState:
+ """Kotlin: androidx.compose.material3.WideNavigationRailState"""
+ @property
+ def current_value(self) -> WideNavigationRailValue:
+ """Kotlin property: androidx.compose.material3.WideNavigationRailState.currentValue (androidx.compose.material3.WideNavigationRailState.currentValue: androidx.compose.material3.WideNavigationRailValue)"""
+ ...
+ @property
+ def is_animating(self) -> bool:
+ """Kotlin property: androidx.compose.material3.WideNavigationRailState.isAnimating (androidx.compose.material3.WideNavigationRailState.isAnimating: kotlin.Boolean)"""
+ ...
+ @property
+ def target_value(self) -> WideNavigationRailValue:
+ """Kotlin property: androidx.compose.material3.WideNavigationRailState.targetValue (androidx.compose.material3.WideNavigationRailState.targetValue: androidx.compose.material3.WideNavigationRailValue)"""
+ ...
+
+class WideNavigationRailValue:
+ """Kotlin: androidx.compose.material3.WideNavigationRailValue"""
+
+def AlertDialog__Unit_Modifier_DialogProperties_Unit(on_dismiss_request: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., properties: _t.Any = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.AlertDialog(onDismissRequest: kotlin.Function0, modifier: androidx.compose.ui.Modifier, properties: androidx.compose.ui.window.DialogProperties, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def AlertDialog__Unit_Unit_Modifier_Unit_Unit_Unit_Unit_Shape_Color_Color_Color_Color_Dp_DialogProperties(on_dismiss_request: _t.Callable[[], None], confirm_button: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., dismiss_button: _t.Callable[[], None] | None = ..., icon: _t.Callable[[], None] | None = ..., title: _t.Callable[[], None] | None = ..., text: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., icon_content_color: _t.Any = ..., title_content_color: _t.Any = ..., text_content_color: _t.Any = ..., tonal_elevation: float = ..., properties: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.AlertDialog(onDismissRequest: kotlin.Function0, confirmButton: kotlin.Function0, modifier: androidx.compose.ui.Modifier, dismissButton: kotlin.Function0?, icon: kotlin.Function0?, title: kotlin.Function0?, text: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, containerColor: androidx.compose.ui.graphics.Color, iconContentColor: androidx.compose.ui.graphics.Color, titleContentColor: androidx.compose.ui.graphics.Color, textContentColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, properties: androidx.compose.ui.window.DialogProperties): kotlin.Unit"""
+ ...
+
+def AppBarColumn(overflow_indicator: _t.Callable[[AppBarMenuState], None], modifier: pythonx.compose.ui.Modifier = ..., max_item_count: int = ..., *, content: _t.Callable[[AppBarColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.AppBarColumn(overflowIndicator: kotlin.Function1, modifier: androidx.compose.ui.Modifier, maxItemCount: kotlin.Int, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def AppBarRow(overflow_indicator: _t.Callable[[AppBarMenuState], None], modifier: pythonx.compose.ui.Modifier = ..., max_item_count: int = ..., *, content: _t.Callable[[AppBarRowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.AppBarRow(overflowIndicator: kotlin.Function1, modifier: androidx.compose.ui.Modifier, maxItemCount: kotlin.Int, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def AssistChip(on_click: _t.Callable[[], None], label: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: ChipColors = ..., elevation: ChipElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.AssistChip(onClick: kotlin.Function0, label: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.ChipColors, elevation: androidx.compose.material3.ChipElevation?, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def Badge(modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., content: _t.Callable[[pythonx.compose.layout.RowScope], None] | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.Badge(modifier: androidx.compose.ui.Modifier, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, content: kotlin.Function1?): kotlin.Unit"""
+ ...
+
+def BadgedBox(badge: _t.Callable[[pythonx.compose.layout.BoxScope], None], modifier: pythonx.compose.ui.Modifier = ..., *, content: _t.Callable[[pythonx.compose.layout.BoxScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.BadgedBox(badge: kotlin.Function1, modifier: androidx.compose.ui.Modifier, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def BasicAlertDialog(on_dismiss_request: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., properties: _t.Any = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.BasicAlertDialog(onDismissRequest: kotlin.Function0, modifier: androidx.compose.ui.Modifier, properties: androidx.compose.ui.window.DialogProperties, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def BottomAppBarState(initial_height_offset_limit: float, initial_height_offset: float, initial_content_offset: float) -> _t.Any:
+ """Kotlin: androidx.compose.material3.BottomAppBarState(initialHeightOffsetLimit: kotlin.Float, initialHeightOffset: kotlin.Float, initialContentOffset: kotlin.Float): androidx.compose.material3.BottomAppBarState"""
+ ...
+
+def BottomAppBar__Modifier_Color_Color_Dp_PaddingValues_WindowInsets_BottomAppBarScrollBehavior_Unit(modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., content_padding: _t.Any = ..., window_insets: _t.Any = ..., scroll_behavior: BottomAppBarScrollBehavior | None = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.BottomAppBar(modifier: androidx.compose.ui.Modifier, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, contentPadding: androidx.compose.foundation.layout.PaddingValues, windowInsets: androidx.compose.foundation.layout.WindowInsets, scrollBehavior: androidx.compose.material3.BottomAppBarScrollBehavior?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def BottomAppBar__Modifier_Color_Color_Dp_PaddingValues_WindowInsets_Unit(modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., content_padding: _t.Any = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.BottomAppBar(modifier: androidx.compose.ui.Modifier, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, contentPadding: androidx.compose.foundation.layout.PaddingValues, windowInsets: androidx.compose.foundation.layout.WindowInsets, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def BottomAppBar__Unit_Modifier_Unit_Color_Color_Dp_PaddingValues_WindowInsets(actions: _t.Callable[[pythonx.compose.layout.RowScope], None], modifier: pythonx.compose.ui.Modifier = ..., floating_action_button: _t.Callable[[], None] | None = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., content_padding: _t.Any = ..., window_insets: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.BottomAppBar(actions: kotlin.Function1, modifier: androidx.compose.ui.Modifier, floatingActionButton: kotlin.Function0?, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, contentPadding: androidx.compose.foundation.layout.PaddingValues, windowInsets: androidx.compose.foundation.layout.WindowInsets): kotlin.Unit"""
+ ...
+
+def BottomAppBar__Unit_Modifier_Unit_Color_Color_Dp_PaddingValues_WindowInsets_BottomAppBarScrollBehavior(actions: _t.Callable[[pythonx.compose.layout.RowScope], None], modifier: pythonx.compose.ui.Modifier = ..., floating_action_button: _t.Callable[[], None] | None = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., content_padding: _t.Any = ..., window_insets: _t.Any = ..., scroll_behavior: BottomAppBarScrollBehavior | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.BottomAppBar(actions: kotlin.Function1, modifier: androidx.compose.ui.Modifier, floatingActionButton: kotlin.Function0?, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, contentPadding: androidx.compose.foundation.layout.PaddingValues, windowInsets: androidx.compose.foundation.layout.WindowInsets, scrollBehavior: androidx.compose.material3.BottomAppBarScrollBehavior?): kotlin.Unit"""
+ ...
+
+def BottomSheetScaffold(sheet_content: _t.Callable[[pythonx.compose.layout.ColumnScope], None], modifier: pythonx.compose.ui.Modifier = ..., scaffold_state: BottomSheetScaffoldState = ..., sheet_peek_height: float = ..., sheet_max_width: float = ..., sheet_shape: pythonx.compose.ui.graphics.Shape = ..., sheet_container_color: _t.Any = ..., sheet_content_color: _t.Any = ..., sheet_tonal_elevation: float = ..., sheet_shadow_elevation: float = ..., sheet_drag_handle: _t.Callable[[], None] | None = ..., sheet_swipe_enabled: bool = ..., top_bar: _t.Callable[[], None] | None = ..., snackbar_host: _t.Callable[[SnackbarHostState], None] = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., *, content: _t.Callable[[_t.Any], None]) -> None:
+ """Kotlin: androidx.compose.material3.BottomSheetScaffold(sheetContent: kotlin.Function1, modifier: androidx.compose.ui.Modifier, scaffoldState: androidx.compose.material3.BottomSheetScaffoldState, sheetPeekHeight: androidx.compose.ui.unit.Dp, sheetMaxWidth: androidx.compose.ui.unit.Dp, sheetShape: androidx.compose.ui.graphics.Shape, sheetContainerColor: androidx.compose.ui.graphics.Color, sheetContentColor: androidx.compose.ui.graphics.Color, sheetTonalElevation: androidx.compose.ui.unit.Dp, sheetShadowElevation: androidx.compose.ui.unit.Dp, sheetDragHandle: kotlin.Function0?, sheetSwipeEnabled: kotlin.Boolean, topBar: kotlin.Function0?, snackbarHost: kotlin.Function1, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def Button(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: ButtonColors = ..., elevation: ButtonElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.Button(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.ButtonColors, elevation: androidx.compose.material3.ButtonElevation?, border: androidx.compose.foundation.BorderStroke?, contentPadding: androidx.compose.foundation.layout.PaddingValues, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def Card__Modifier_Shape_CardColors_CardElevation_BorderStroke_Unit(modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.Card(modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.CardColors, elevation: androidx.compose.material3.CardElevation, border: androidx.compose.foundation.BorderStroke?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def Card__Unit_Modifier_Boolean_Shape_CardColors_CardElevation_BorderStroke_MutableInteractionSource_Unit(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.Card(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.CardColors, elevation: androidx.compose.material3.CardElevation, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def CenterAlignedTopAppBar(title: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., navigation_icon: _t.Callable[[], None] = ..., actions: _t.Callable[[pythonx.compose.layout.RowScope], None] = ..., expanded_height: float = ..., window_insets: _t.Any = ..., colors: TopAppBarColors = ..., scroll_behavior: TopAppBarScrollBehavior | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.CenterAlignedTopAppBar(title: kotlin.Function0, modifier: androidx.compose.ui.Modifier, navigationIcon: kotlin.Function0, actions: kotlin.Function1, expandedHeight: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, colors: androidx.compose.material3.TopAppBarColors, scrollBehavior: androidx.compose.material3.TopAppBarScrollBehavior?): kotlin.Unit"""
+ ...
+
+def Checkbox__Boolean_Unit_Modifier_Boolean_CheckboxColors_MutableInteractionSource(checked: bool, on_checked_change: _t.Callable[[bool], None] | None, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: CheckboxColors = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.Checkbox(checked: kotlin.Boolean, onCheckedChange: kotlin.Function1?, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, colors: androidx.compose.material3.CheckboxColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def Checkbox__Boolean_Unit_Stroke_Stroke_Modifier_Boolean_CheckboxColors_MutableInteractionSource(checked: bool, on_checked_change: _t.Callable[[bool], None] | None, checkmark_stroke: _t.Any, outline_stroke: _t.Any, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: CheckboxColors = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.Checkbox(checked: kotlin.Boolean, onCheckedChange: kotlin.Function1?, checkmarkStroke: androidx.compose.ui.graphics.drawscope.Stroke, outlineStroke: androidx.compose.ui.graphics.drawscope.Stroke, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, colors: androidx.compose.material3.CheckboxColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def CircularProgressIndicator__Float_Modifier_Color_Dp_Color_StrokeCap(progress: float, modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., stroke_width: float = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.CircularProgressIndicator(progress: kotlin.Float, modifier: androidx.compose.ui.Modifier, color: androidx.compose.ui.graphics.Color, strokeWidth: androidx.compose.ui.unit.Dp, trackColor: androidx.compose.ui.graphics.Color, strokeCap: androidx.compose.ui.graphics.StrokeCap): kotlin.Unit"""
+ ...
+
+def CircularProgressIndicator__Float_Modifier_Color_Dp_Color_StrokeCap_Dp(progress: _t.Callable[[], float], modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., stroke_width: float = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ..., gap_size: float = ...) -> None:
+ """Kotlin: androidx.compose.material3.CircularProgressIndicator(progress: kotlin.Function0, modifier: androidx.compose.ui.Modifier, color: androidx.compose.ui.graphics.Color, strokeWidth: androidx.compose.ui.unit.Dp, trackColor: androidx.compose.ui.graphics.Color, strokeCap: androidx.compose.ui.graphics.StrokeCap, gapSize: androidx.compose.ui.unit.Dp): kotlin.Unit"""
+ ...
+
+def CircularProgressIndicator__Modifier_Color_Dp_Color_StrokeCap_Dp(modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., stroke_width: float = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ..., gap_size: float = ...) -> None:
+ """Kotlin: androidx.compose.material3.CircularProgressIndicator(modifier: androidx.compose.ui.Modifier, color: androidx.compose.ui.graphics.Color, strokeWidth: androidx.compose.ui.unit.Dp, trackColor: androidx.compose.ui.graphics.Color, strokeCap: androidx.compose.ui.graphics.StrokeCap, gapSize: androidx.compose.ui.unit.Dp): kotlin.Unit"""
+ ...
+
+def DatePicker(state: DatePickerState, modifier: pythonx.compose.ui.Modifier = ..., date_formatter: DatePickerFormatter = ..., colors: DatePickerColors = ..., title: _t.Callable[[], None] | None = ..., headline: _t.Callable[[], None] | None = ..., show_mode_toggle: bool = ..., focus_requester: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.DatePicker(state: androidx.compose.material3.DatePickerState, modifier: androidx.compose.ui.Modifier, dateFormatter: androidx.compose.material3.DatePickerFormatter, colors: androidx.compose.material3.DatePickerColors, title: kotlin.Function0?, headline: kotlin.Function0?, showModeToggle: kotlin.Boolean, focusRequester: androidx.compose.ui.focus.FocusRequester?): kotlin.Unit"""
+ ...
+
+def DatePickerDialog(on_dismiss_request: _t.Callable[[], None], confirm_button: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., dismiss_button: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., tonal_elevation: float = ..., colors: DatePickerColors = ..., properties: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.DatePickerDialog(onDismissRequest: kotlin.Function0, confirmButton: kotlin.Function0, modifier: androidx.compose.ui.Modifier, dismissButton: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, tonalElevation: androidx.compose.ui.unit.Dp, colors: androidx.compose.material3.DatePickerColors, properties: androidx.compose.ui.window.DialogProperties, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def DateRangePicker(state: DateRangePickerState, modifier: pythonx.compose.ui.Modifier = ..., date_formatter: DatePickerFormatter = ..., colors: DatePickerColors = ..., title: _t.Callable[[], None] | None = ..., headline: _t.Callable[[], None] | None = ..., show_mode_toggle: bool = ..., focus_requester: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.DateRangePicker(state: androidx.compose.material3.DateRangePickerState, modifier: androidx.compose.ui.Modifier, dateFormatter: androidx.compose.material3.DatePickerFormatter, colors: androidx.compose.material3.DatePickerColors, title: kotlin.Function0?, headline: kotlin.Function0?, showModeToggle: kotlin.Boolean, focusRequester: androidx.compose.ui.focus.FocusRequester?): kotlin.Unit"""
+ ...
+
+def DismissibleDrawerSheet__DrawerState_Modifier_Shape_Color_Color_Dp_WindowInsets_Unit(drawer_state: DrawerState, modifier: pythonx.compose.ui.Modifier = ..., drawer_shape: pythonx.compose.ui.graphics.Shape = ..., drawer_container_color: _t.Any = ..., drawer_content_color: _t.Any = ..., drawer_tonal_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.DismissibleDrawerSheet(drawerState: androidx.compose.material3.DrawerState, modifier: androidx.compose.ui.Modifier, drawerShape: androidx.compose.ui.graphics.Shape, drawerContainerColor: androidx.compose.ui.graphics.Color, drawerContentColor: androidx.compose.ui.graphics.Color, drawerTonalElevation: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def DismissibleDrawerSheet__Modifier_Shape_Color_Color_Dp_WindowInsets_Unit(modifier: pythonx.compose.ui.Modifier = ..., drawer_shape: pythonx.compose.ui.graphics.Shape = ..., drawer_container_color: _t.Any = ..., drawer_content_color: _t.Any = ..., drawer_tonal_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.DismissibleDrawerSheet(modifier: androidx.compose.ui.Modifier, drawerShape: androidx.compose.ui.graphics.Shape, drawerContainerColor: androidx.compose.ui.graphics.Color, drawerContentColor: androidx.compose.ui.graphics.Color, drawerTonalElevation: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def DismissibleNavigationDrawer(drawer_content: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., drawer_state: DrawerState = ..., gestures_enabled: bool = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.DismissibleNavigationDrawer(drawerContent: kotlin.Function0, modifier: androidx.compose.ui.Modifier, drawerState: androidx.compose.material3.DrawerState, gesturesEnabled: kotlin.Boolean, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def Divider(modifier: pythonx.compose.ui.Modifier = ..., thickness: float = ..., color: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.Divider(modifier: androidx.compose.ui.Modifier, thickness: androidx.compose.ui.unit.Dp, color: androidx.compose.ui.graphics.Color): kotlin.Unit"""
+ ...
+
+def DockedSearchBar__String_Unit_Unit_Boolean_Unit_Modifier_Boolean_Unit_Unit_Unit_Shape_SearchBarColors_Dp_Dp_MutableInteractionSource_Unit(query: str, on_query_change: _t.Callable[[str], None], on_search: _t.Callable[[str], None], active: bool, on_active_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.DockedSearchBar(query: kotlin.String, onQueryChange: kotlin.Function1, onSearch: kotlin.Function1, active: kotlin.Boolean, onActiveChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, placeholder: kotlin.Function0?, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.SearchBarColors, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def DockedSearchBar__Unit_Boolean_Unit_Modifier_Shape_SearchBarColors_Dp_Dp_Unit(input_field: _t.Callable[[], None], expanded: bool, on_expanded_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.DockedSearchBar(inputField: kotlin.Function0, expanded: kotlin.Boolean, onExpandedChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.SearchBarColors, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def DropdownMenu(expanded: bool, on_dismiss_request: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., offset: int = ..., scroll_state: pythonx.compose.foundation.ScrollState = ..., properties: _t.Any = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.DropdownMenu(expanded: kotlin.Boolean, onDismissRequest: kotlin.Function0, modifier: androidx.compose.ui.Modifier, offset: androidx.compose.ui.unit.DpOffset, scrollState: androidx.compose.foundation.ScrollState, properties: androidx.compose.ui.window.PopupProperties, shape: androidx.compose.ui.graphics.Shape, containerColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, border: androidx.compose.foundation.BorderStroke?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def DropdownMenuItem(text: _t.Callable[[], None], on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., enabled: bool = ..., colors: MenuItemColors = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.DropdownMenuItem(text: kotlin.Function0, onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, enabled: kotlin.Boolean, colors: androidx.compose.material3.MenuItemColors, contentPadding: androidx.compose.foundation.layout.PaddingValues, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def ElevatedAssistChip(on_click: _t.Callable[[], None], label: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: ChipColors = ..., elevation: ChipElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.ElevatedAssistChip(onClick: kotlin.Function0, label: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.ChipColors, elevation: androidx.compose.material3.ChipElevation?, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def ElevatedButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: ButtonColors = ..., elevation: ButtonElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.ElevatedButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.ButtonColors, elevation: androidx.compose.material3.ButtonElevation?, border: androidx.compose.foundation.BorderStroke?, contentPadding: androidx.compose.foundation.layout.PaddingValues, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def ElevatedCard__Modifier_Shape_CardColors_CardElevation_Unit(modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.ElevatedCard(modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.CardColors, elevation: androidx.compose.material3.CardElevation, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def ElevatedCard__Unit_Modifier_Boolean_Shape_CardColors_CardElevation_MutableInteractionSource_Unit(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.ElevatedCard(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.CardColors, elevation: androidx.compose.material3.CardElevation, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def ElevatedFilterChip(selected: bool, on_click: _t.Callable[[], None], label: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SelectableChipColors = ..., elevation: SelectableChipElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.ElevatedFilterChip(selected: kotlin.Boolean, onClick: kotlin.Function0, label: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.SelectableChipColors, elevation: androidx.compose.material3.SelectableChipElevation?, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def ElevatedSuggestionChip(on_click: _t.Callable[[], None], label: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., icon: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: ChipColors = ..., elevation: ChipElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.ElevatedSuggestionChip(onClick: kotlin.Function0, label: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, icon: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.ChipColors, elevation: androidx.compose.material3.ChipElevation?, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def ExpandedDockedSearchBar(state: SearchBarState, input_field: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., properties: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.ExpandedDockedSearchBar(state: androidx.compose.material3.SearchBarState, inputField: kotlin.Function0, modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.SearchBarColors, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, properties: androidx.compose.ui.window.PopupProperties, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def ExpandedFullScreenSearchBar(state: SearchBarState, input_field: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., collapsed_shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., window_insets: _t.Callable[[], _t.Any] = ..., properties: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.ExpandedFullScreenSearchBar(state: androidx.compose.material3.SearchBarState, inputField: kotlin.Function0, modifier: androidx.compose.ui.Modifier, collapsedShape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.SearchBarColors, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, windowInsets: kotlin.Function0, properties: androidx.compose.ui.window.DialogProperties, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def ExposedDropdownMenuBox(expanded: bool, on_expanded_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., *, content: _t.Callable[[ExposedDropdownMenuBoxScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.ExposedDropdownMenuBox(expanded: kotlin.Boolean, onExpandedChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def ExtendedFloatingActionButton__Unit_Modifier_Shape_Color_Color_FloatingActionButtonElevation_MutableInteractionSource_Unit(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., elevation: FloatingActionButtonElevation = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.ExtendedFloatingActionButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, elevation: androidx.compose.material3.FloatingActionButtonElevation, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def ExtendedFloatingActionButton__Unit_Unit_Unit_Modifier_Boolean_Shape_Color_Color_FloatingActionButtonElevation_MutableInteractionSource(text: _t.Callable[[], None], icon: _t.Callable[[], None], on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., expanded: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., elevation: FloatingActionButtonElevation = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.ExtendedFloatingActionButton(text: kotlin.Function0, icon: kotlin.Function0, onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, expanded: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, elevation: androidx.compose.material3.FloatingActionButtonElevation, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def FilledIconButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: IconButtonColors = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.FilledIconButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.IconButtonColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def FilledIconToggleButton(checked: bool, on_checked_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: IconToggleButtonColors = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.FilledIconToggleButton(checked: kotlin.Boolean, onCheckedChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.IconToggleButtonColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def FilledTonalButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: ButtonColors = ..., elevation: ButtonElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.FilledTonalButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.ButtonColors, elevation: androidx.compose.material3.ButtonElevation?, border: androidx.compose.foundation.BorderStroke?, contentPadding: androidx.compose.foundation.layout.PaddingValues, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def FilledTonalIconButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: IconButtonColors = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.FilledTonalIconButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.IconButtonColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def FilledTonalIconToggleButton(checked: bool, on_checked_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: IconToggleButtonColors = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.FilledTonalIconToggleButton(checked: kotlin.Boolean, onCheckedChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.IconToggleButtonColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def FilterChip(selected: bool, on_click: _t.Callable[[], None], label: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SelectableChipColors = ..., elevation: SelectableChipElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.FilterChip(selected: kotlin.Boolean, onClick: kotlin.Function0, label: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.SelectableChipColors, elevation: androidx.compose.material3.SelectableChipElevation?, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def FloatingActionButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., elevation: FloatingActionButtonElevation = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.FloatingActionButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, elevation: androidx.compose.material3.FloatingActionButtonElevation, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def HorizontalDivider(modifier: pythonx.compose.ui.Modifier = ..., thickness: float = ..., color: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.HorizontalDivider(modifier: androidx.compose.ui.Modifier, thickness: androidx.compose.ui.unit.Dp, color: androidx.compose.ui.graphics.Color): kotlin.Unit"""
+ ...
+
+def IconButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: IconButtonColors = ..., interaction_source: _t.Any | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.IconButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, colors: androidx.compose.material3.IconButtonColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, shape: androidx.compose.ui.graphics.Shape, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def IconToggleButton(checked: bool, on_checked_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: IconToggleButtonColors = ..., interaction_source: _t.Any | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.IconToggleButton(checked: kotlin.Boolean, onCheckedChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, colors: androidx.compose.material3.IconToggleButtonColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, shape: androidx.compose.ui.graphics.Shape, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def Icon__ImageBitmap_String_Modifier_Color(bitmap: _t.Any, content_description: str | None, modifier: pythonx.compose.ui.Modifier = ..., tint: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.Icon(bitmap: androidx.compose.ui.graphics.ImageBitmap, contentDescription: kotlin.String?, modifier: androidx.compose.ui.Modifier, tint: androidx.compose.ui.graphics.Color): kotlin.Unit"""
+ ...
+
+def Icon__ImageVector_String_Modifier_Color(image_vector: pythonx.compose.ui.graphics.vector.ImageVector, content_description: str | None, modifier: pythonx.compose.ui.Modifier = ..., tint: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.Icon(imageVector: androidx.compose.ui.graphics.vector.ImageVector, contentDescription: kotlin.String?, modifier: androidx.compose.ui.Modifier, tint: androidx.compose.ui.graphics.Color): kotlin.Unit"""
+ ...
+
+def Icon__Painter_ColorProducer_String_Modifier(painter: _t.Any, tint: pythonx.compose.ui.graphics.ColorProducer | None, content_description: str | None, modifier: pythonx.compose.ui.Modifier = ...) -> None:
+ """Kotlin: androidx.compose.material3.Icon(painter: androidx.compose.ui.graphics.painter.Painter, tint: androidx.compose.ui.graphics.ColorProducer?, contentDescription: kotlin.String?, modifier: androidx.compose.ui.Modifier): kotlin.Unit"""
+ ...
+
+def Icon__Painter_String_Modifier_Color(painter: _t.Any, content_description: str | None, modifier: pythonx.compose.ui.Modifier = ..., tint: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.Icon(painter: androidx.compose.ui.graphics.painter.Painter, contentDescription: kotlin.String?, modifier: androidx.compose.ui.Modifier, tint: androidx.compose.ui.graphics.Color): kotlin.Unit"""
+ ...
+
+def InputChip(selected: bool, on_click: _t.Callable[[], None], label: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., leading_icon: _t.Callable[[], None] | None = ..., avatar: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SelectableChipColors = ..., elevation: SelectableChipElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.InputChip(selected: kotlin.Boolean, onClick: kotlin.Function0, label: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, leadingIcon: kotlin.Function0?, avatar: kotlin.Function0?, trailingIcon: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.SelectableChipColors, elevation: androidx.compose.material3.SelectableChipElevation?, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def Label(label: _t.Callable[[TooltipScope], None], modifier: pythonx.compose.ui.Modifier = ..., interaction_source: _t.Any | None = ..., is_persistent: bool = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.Label(label: kotlin.Function1, modifier: androidx.compose.ui.Modifier, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, isPersistent: kotlin.Boolean, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def LargeFloatingActionButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., elevation: FloatingActionButtonElevation = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.LargeFloatingActionButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, elevation: androidx.compose.material3.FloatingActionButtonElevation, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def LargeTopAppBar(title: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., navigation_icon: _t.Callable[[], None] = ..., actions: _t.Callable[[pythonx.compose.layout.RowScope], None] = ..., collapsed_height: float = ..., expanded_height: float = ..., window_insets: _t.Any = ..., colors: TopAppBarColors = ..., scroll_behavior: TopAppBarScrollBehavior | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.LargeTopAppBar(title: kotlin.Function0, modifier: androidx.compose.ui.Modifier, navigationIcon: kotlin.Function0, actions: kotlin.Function1, collapsedHeight: androidx.compose.ui.unit.Dp, expandedHeight: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, colors: androidx.compose.material3.TopAppBarColors, scrollBehavior: androidx.compose.material3.TopAppBarScrollBehavior?): kotlin.Unit"""
+ ...
+
+def LeadingIconTab(selected: bool, on_click: _t.Callable[[], None], text: _t.Callable[[], None], icon: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., selected_content_color: _t.Any = ..., unselected_content_color: _t.Any = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.LeadingIconTab(selected: kotlin.Boolean, onClick: kotlin.Function0, text: kotlin.Function0, icon: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, selectedContentColor: androidx.compose.ui.graphics.Color, unselectedContentColor: androidx.compose.ui.graphics.Color, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def LinearProgressIndicator__Float_Modifier_Color_Color_StrokeCap(progress: float, modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.LinearProgressIndicator(progress: kotlin.Float, modifier: androidx.compose.ui.Modifier, color: androidx.compose.ui.graphics.Color, trackColor: androidx.compose.ui.graphics.Color, strokeCap: androidx.compose.ui.graphics.StrokeCap): kotlin.Unit"""
+ ...
+
+def LinearProgressIndicator__Float_Modifier_Color_Color_StrokeCap_Dp_Unit(progress: _t.Callable[[], float], modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ..., gap_size: float = ..., draw_stop_indicator: _t.Callable[[_t.Any], None] = ...) -> None:
+ """Kotlin: androidx.compose.material3.LinearProgressIndicator(progress: kotlin.Function0, modifier: androidx.compose.ui.Modifier, color: androidx.compose.ui.graphics.Color, trackColor: androidx.compose.ui.graphics.Color, strokeCap: androidx.compose.ui.graphics.StrokeCap, gapSize: androidx.compose.ui.unit.Dp, drawStopIndicator: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def LinearProgressIndicator__Modifier_Color_Color_StrokeCap_Dp(modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ..., gap_size: float = ...) -> None:
+ """Kotlin: androidx.compose.material3.LinearProgressIndicator(modifier: androidx.compose.ui.Modifier, color: androidx.compose.ui.graphics.Color, trackColor: androidx.compose.ui.graphics.Color, strokeCap: androidx.compose.ui.graphics.StrokeCap, gapSize: androidx.compose.ui.unit.Dp): kotlin.Unit"""
+ ...
+
+def ListItem(headline_content: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., overline_content: _t.Callable[[], None] | None = ..., supporting_content: _t.Callable[[], None] | None = ..., leading_content: _t.Callable[[], None] | None = ..., trailing_content: _t.Callable[[], None] | None = ..., colors: ListItemColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ...) -> None:
+ """Kotlin: androidx.compose.material3.ListItem(headlineContent: kotlin.Function0, modifier: androidx.compose.ui.Modifier, overlineContent: kotlin.Function0?, supportingContent: kotlin.Function0?, leadingContent: kotlin.Function0?, trailingContent: kotlin.Function0?, colors: androidx.compose.material3.ListItemColors, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp): kotlin.Unit"""
+ ...
+
+def MaterialTheme(color_scheme: ColorScheme = ..., shapes: Shapes = ..., typography: Typography = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.MaterialTheme(colorScheme: androidx.compose.material3.ColorScheme, shapes: androidx.compose.material3.Shapes, typography: androidx.compose.material3.Typography, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def MediumTopAppBar(title: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., navigation_icon: _t.Callable[[], None] = ..., actions: _t.Callable[[pythonx.compose.layout.RowScope], None] = ..., collapsed_height: float = ..., expanded_height: float = ..., window_insets: _t.Any = ..., colors: TopAppBarColors = ..., scroll_behavior: TopAppBarScrollBehavior | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.MediumTopAppBar(title: kotlin.Function0, modifier: androidx.compose.ui.Modifier, navigationIcon: kotlin.Function0, actions: kotlin.Function1, collapsedHeight: androidx.compose.ui.unit.Dp, expandedHeight: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, colors: androidx.compose.material3.TopAppBarColors, scrollBehavior: androidx.compose.material3.TopAppBarScrollBehavior?): kotlin.Unit"""
+ ...
+
+def ModalBottomSheet(on_dismiss_request: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., sheet_state: SheetState = ..., sheet_max_width: float = ..., sheet_gestures_enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., scrim_color: _t.Any = ..., drag_handle: _t.Callable[[], None] | None = ..., content_window_insets: _t.Callable[[], _t.Any] = ..., properties: ModalBottomSheetProperties = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.ModalBottomSheet(onDismissRequest: kotlin.Function0, modifier: androidx.compose.ui.Modifier, sheetState: androidx.compose.material3.SheetState, sheetMaxWidth: androidx.compose.ui.unit.Dp, sheetGesturesEnabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, scrimColor: androidx.compose.ui.graphics.Color, dragHandle: kotlin.Function0?, contentWindowInsets: kotlin.Function0, properties: androidx.compose.material3.ModalBottomSheetProperties, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def ModalDrawerSheet__DrawerState_Modifier_Shape_Color_Color_Dp_WindowInsets_Unit(drawer_state: DrawerState, modifier: pythonx.compose.ui.Modifier = ..., drawer_shape: pythonx.compose.ui.graphics.Shape = ..., drawer_container_color: _t.Any = ..., drawer_content_color: _t.Any = ..., drawer_tonal_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.ModalDrawerSheet(drawerState: androidx.compose.material3.DrawerState, modifier: androidx.compose.ui.Modifier, drawerShape: androidx.compose.ui.graphics.Shape, drawerContainerColor: androidx.compose.ui.graphics.Color, drawerContentColor: androidx.compose.ui.graphics.Color, drawerTonalElevation: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def ModalDrawerSheet__Modifier_Shape_Color_Color_Dp_WindowInsets_Unit(modifier: pythonx.compose.ui.Modifier = ..., drawer_shape: pythonx.compose.ui.graphics.Shape = ..., drawer_container_color: _t.Any = ..., drawer_content_color: _t.Any = ..., drawer_tonal_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.ModalDrawerSheet(modifier: androidx.compose.ui.Modifier, drawerShape: androidx.compose.ui.graphics.Shape, drawerContainerColor: androidx.compose.ui.graphics.Color, drawerContentColor: androidx.compose.ui.graphics.Color, drawerTonalElevation: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def ModalNavigationDrawer(drawer_content: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., drawer_state: DrawerState = ..., gestures_enabled: bool = ..., scrim_color: _t.Any = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.ModalNavigationDrawer(drawerContent: kotlin.Function0, modifier: androidx.compose.ui.Modifier, drawerState: androidx.compose.material3.DrawerState, gesturesEnabled: kotlin.Boolean, scrimColor: androidx.compose.ui.graphics.Color, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def ModalWideNavigationRail(modifier: pythonx.compose.ui.Modifier = ..., state: WideNavigationRailState = ..., hide_on_collapse: bool = ..., collapsed_shape: pythonx.compose.ui.graphics.Shape = ..., expanded_shape: pythonx.compose.ui.graphics.Shape = ..., colors: WideNavigationRailColors = ..., header: _t.Callable[[], None] | None = ..., expanded_header_top_padding: float = ..., window_insets: _t.Any = ..., arrangement: pythonx.compose.layout.Arrangement.Vertical = ..., expanded_properties: ModalWideNavigationRailProperties = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.ModalWideNavigationRail(modifier: androidx.compose.ui.Modifier, state: androidx.compose.material3.WideNavigationRailState, hideOnCollapse: kotlin.Boolean, collapsedShape: androidx.compose.ui.graphics.Shape, expandedShape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.WideNavigationRailColors, header: kotlin.Function0?, expandedHeaderTopPadding: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, arrangement: androidx.compose.foundation.layout.Arrangement.Vertical, expandedProperties: androidx.compose.material3.ModalWideNavigationRailProperties, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def MultiChoiceSegmentedButtonRow(modifier: pythonx.compose.ui.Modifier = ..., space: float = ..., *, content: _t.Callable[[MultiChoiceSegmentedButtonRowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.MultiChoiceSegmentedButtonRow(modifier: androidx.compose.ui.Modifier, space: androidx.compose.ui.unit.Dp, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def NavigationBar(modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.NavigationBar(modifier: androidx.compose.ui.Modifier, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def NavigationBarItem(receiver: pythonx.compose.layout.RowScope, /, selected: bool, on_click: _t.Callable[[], None], icon: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., label: _t.Callable[[], None] | None = ..., always_show_label: bool = ..., colors: NavigationBarItemColors = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.foundation.layout.RowScope.NavigationBarItem(selected: kotlin.Boolean, onClick: kotlin.Function0, icon: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, label: kotlin.Function0?, alwaysShowLabel: kotlin.Boolean, colors: androidx.compose.material3.NavigationBarItemColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def NavigationDrawerItem(label: _t.Callable[[], None], selected: bool, on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., icon: _t.Callable[[], None] | None = ..., badge: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: NavigationDrawerItemColors = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.NavigationDrawerItem(label: kotlin.Function0, selected: kotlin.Boolean, onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, icon: kotlin.Function0?, badge: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.NavigationDrawerItemColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def NavigationRail(modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., header: _t.Callable[[pythonx.compose.layout.ColumnScope], None] | None = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.NavigationRail(modifier: androidx.compose.ui.Modifier, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, header: kotlin.Function1?, windowInsets: androidx.compose.foundation.layout.WindowInsets, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def NavigationRailItem(selected: bool, on_click: _t.Callable[[], None], icon: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., label: _t.Callable[[], None] | None = ..., always_show_label: bool = ..., colors: NavigationRailItemColors = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.NavigationRailItem(selected: kotlin.Boolean, onClick: kotlin.Function0, icon: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, label: kotlin.Function0?, alwaysShowLabel: kotlin.Boolean, colors: androidx.compose.material3.NavigationRailItemColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def OutlinedButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: ButtonColors = ..., elevation: ButtonElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.OutlinedButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.ButtonColors, elevation: androidx.compose.material3.ButtonElevation?, border: androidx.compose.foundation.BorderStroke?, contentPadding: androidx.compose.foundation.layout.PaddingValues, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def OutlinedCard__Modifier_Shape_CardColors_CardElevation_BorderStroke_Unit(modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., border: pythonx.compose.foundation.BorderStroke = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.OutlinedCard(modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.CardColors, elevation: androidx.compose.material3.CardElevation, border: androidx.compose.foundation.BorderStroke, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def OutlinedCard__Unit_Modifier_Boolean_Shape_CardColors_CardElevation_BorderStroke_MutableInteractionSource_Unit(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., border: pythonx.compose.foundation.BorderStroke = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.OutlinedCard(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.CardColors, elevation: androidx.compose.material3.CardElevation, border: androidx.compose.foundation.BorderStroke, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def OutlinedIconButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: IconButtonColors = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.OutlinedIconButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.IconButtonColors, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def OutlinedIconToggleButton(checked: bool, on_checked_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: IconToggleButtonColors = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.OutlinedIconToggleButton(checked: kotlin.Boolean, onCheckedChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.IconToggleButtonColors, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def OutlinedTextField__String_Unit_Modifier_Boolean_Boolean_TextStyle_Unit_Unit_Unit_Unit_Unit_Unit_Unit_Boolean_VisualTransformation_KeyboardOptions_KeyboardActions_Boolean_Int_Int_MutableInteractionSource_Shape_TextFieldColors(value: str, on_value_change: _t.Callable[[str], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label: _t.Callable[[], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., visual_transformation: _t.Any = ..., keyboard_options: _t.Any = ..., keyboard_actions: _t.Any = ..., single_line: bool = ..., max_lines: int = ..., min_lines: int = ..., interaction_source: _t.Any | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ...) -> None:
+ """Kotlin: androidx.compose.material3.OutlinedTextField(value: kotlin.String, onValueChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, readOnly: kotlin.Boolean, textStyle: androidx.compose.ui.text.TextStyle, label: kotlin.Function0?, placeholder: kotlin.Function0?, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, prefix: kotlin.Function0?, suffix: kotlin.Function0?, supportingText: kotlin.Function0?, isError: kotlin.Boolean, visualTransformation: androidx.compose.ui.text.input.VisualTransformation, keyboardOptions: androidx.compose.foundation.text.KeyboardOptions, keyboardActions: androidx.compose.foundation.text.KeyboardActions, singleLine: kotlin.Boolean, maxLines: kotlin.Int, minLines: kotlin.Int, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.TextFieldColors): kotlin.Unit"""
+ ...
+
+def OutlinedTextField__TextFieldState_Modifier_Boolean_Boolean_TextStyle_TextFieldLabelPosition_Unit_Unit_Unit_Unit_Unit_Unit_Unit_Boolean_InputTransformation_OutputTransformation_KeyboardOptions_KeyboardActionHandler_TextFieldLineLimits_Unit_ScrollState_Shape_TextFieldColors_PaddingValues_MutableInteractionSource(state: pythonx.compose.foundation.text.input.TextFieldState, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label_position: TextFieldLabelPosition = ..., label: _t.Callable[[TextFieldLabelScope], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., input_transformation: pythonx.compose.foundation.text.input.InputTransformation | None = ..., output_transformation: pythonx.compose.foundation.text.input.OutputTransformation | None = ..., keyboard_options: _t.Any = ..., on_keyboard_action: pythonx.compose.foundation.text.input.KeyboardActionHandler | None = ..., line_limits: pythonx.compose.foundation.text.input.TextFieldLineLimits = ..., on_text_layout: _t.Callable[[_t.Any, _t.Callable[[], pythonx.compose.ui.text.TextLayoutResult | None]], None] | None = ..., scroll_state: pythonx.compose.foundation.ScrollState = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.OutlinedTextField(state: androidx.compose.foundation.text.input.TextFieldState, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, readOnly: kotlin.Boolean, textStyle: androidx.compose.ui.text.TextStyle, labelPosition: androidx.compose.material3.TextFieldLabelPosition, label: kotlin.Function1?, placeholder: kotlin.Function0?, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, prefix: kotlin.Function0?, suffix: kotlin.Function0?, supportingText: kotlin.Function0?, isError: kotlin.Boolean, inputTransformation: androidx.compose.foundation.text.input.InputTransformation?, outputTransformation: androidx.compose.foundation.text.input.OutputTransformation?, keyboardOptions: androidx.compose.foundation.text.KeyboardOptions, onKeyboardAction: androidx.compose.foundation.text.input.KeyboardActionHandler?, lineLimits: androidx.compose.foundation.text.input.TextFieldLineLimits, onTextLayout: kotlin.Function2?, scrollState: androidx.compose.foundation.ScrollState, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.TextFieldColors, contentPadding: androidx.compose.foundation.layout.PaddingValues, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def OutlinedTextField__TextFieldValue_Unit_Modifier_Boolean_Boolean_TextStyle_Unit_Unit_Unit_Unit_Unit_Unit_Unit_Boolean_VisualTransformation_KeyboardOptions_KeyboardActions_Boolean_Int_Int_MutableInteractionSource_Shape_TextFieldColors(value: _t.Any, on_value_change: _t.Callable[[_t.Any], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label: _t.Callable[[], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., visual_transformation: _t.Any = ..., keyboard_options: _t.Any = ..., keyboard_actions: _t.Any = ..., single_line: bool = ..., max_lines: int = ..., min_lines: int = ..., interaction_source: _t.Any | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ...) -> None:
+ """Kotlin: androidx.compose.material3.OutlinedTextField(value: androidx.compose.ui.text.input.TextFieldValue, onValueChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, readOnly: kotlin.Boolean, textStyle: androidx.compose.ui.text.TextStyle, label: kotlin.Function0?, placeholder: kotlin.Function0?, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, prefix: kotlin.Function0?, suffix: kotlin.Function0?, supportingText: kotlin.Function0?, isError: kotlin.Boolean, visualTransformation: androidx.compose.ui.text.input.VisualTransformation, keyboardOptions: androidx.compose.foundation.text.KeyboardOptions, keyboardActions: androidx.compose.foundation.text.KeyboardActions, singleLine: kotlin.Boolean, maxLines: kotlin.Int, minLines: kotlin.Int, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.TextFieldColors): kotlin.Unit"""
+ ...
+
+def PermanentDrawerSheet(modifier: pythonx.compose.ui.Modifier = ..., drawer_shape: pythonx.compose.ui.graphics.Shape = ..., drawer_container_color: _t.Any = ..., drawer_content_color: _t.Any = ..., drawer_tonal_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.PermanentDrawerSheet(modifier: androidx.compose.ui.Modifier, drawerShape: androidx.compose.ui.graphics.Shape, drawerContainerColor: androidx.compose.ui.graphics.Color, drawerContentColor: androidx.compose.ui.graphics.Color, drawerTonalElevation: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def PermanentNavigationDrawer(drawer_content: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.PermanentNavigationDrawer(drawerContent: kotlin.Function0, modifier: androidx.compose.ui.Modifier, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def PlainTooltip(receiver: TooltipScope, /, modifier: pythonx.compose.ui.Modifier = ..., caret_shape: pythonx.compose.ui.graphics.Shape | None = ..., max_width: float = ..., shape: pythonx.compose.ui.graphics.Shape = ..., content_color: _t.Any = ..., container_color: _t.Any = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.TooltipScope.PlainTooltip(modifier: androidx.compose.ui.Modifier, caretShape: androidx.compose.ui.graphics.Shape?, maxWidth: androidx.compose.ui.unit.Dp, shape: androidx.compose.ui.graphics.Shape, contentColor: androidx.compose.ui.graphics.Color, containerColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def PrimaryScrollableTabRow(selected_tab_index: int, modifier: pythonx.compose.ui.Modifier = ..., scroll_state: pythonx.compose.foundation.ScrollState = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., edge_padding: float = ..., indicator: _t.Callable[[TabIndicatorScope], None] = ..., divider: _t.Callable[[], None] = ..., min_tab_width: float = ..., *, tabs: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.PrimaryScrollableTabRow(selectedTabIndex: kotlin.Int, modifier: androidx.compose.ui.Modifier, scrollState: androidx.compose.foundation.ScrollState, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, edgePadding: androidx.compose.ui.unit.Dp, indicator: kotlin.Function1, divider: kotlin.Function0, minTabWidth: androidx.compose.ui.unit.Dp, tabs: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def PrimaryTabRow(selected_tab_index: int, modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., indicator: _t.Callable[[TabIndicatorScope], None] = ..., divider: _t.Callable[[], None] = ..., *, tabs: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.PrimaryTabRow(selectedTabIndex: kotlin.Int, modifier: androidx.compose.ui.Modifier, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, indicator: kotlin.Function1, divider: kotlin.Function0, tabs: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def ProvideTextStyle(value: _t.Any, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.ProvideTextStyle(value: androidx.compose.ui.text.TextStyle, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def RadioButton(selected: bool, on_click: _t.Callable[[], None] | None, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: RadioButtonColors = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.RadioButton(selected: kotlin.Boolean, onClick: kotlin.Function0?, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, colors: androidx.compose.material3.RadioButtonColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def RangeSlider__ClosedFloatingPointRange_Unit_Modifier_Boolean_ClosedFloatingPointRange_Int_Unit_SliderColors(value: _t.Any, on_value_change: _t.Callable[[_t.Any], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., value_range: _t.Any = ..., steps: int = ..., on_value_change_finished: _t.Callable[[], None] | None = ..., colors: SliderColors = ...) -> None:
+ """Kotlin: androidx.compose.material3.RangeSlider(value: kotlin.ranges.ClosedFloatingPointRange, onValueChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, valueRange: kotlin.ranges.ClosedFloatingPointRange, steps: kotlin.Int, onValueChangeFinished: kotlin.Function0?, colors: androidx.compose.material3.SliderColors): kotlin.Unit"""
+ ...
+
+def RangeSlider__ClosedFloatingPointRange_Unit_Modifier_Boolean_ClosedFloatingPointRange_Unit_SliderColors_MutableInteractionSource_MutableInteractionSource_Unit_Unit_Unit_Int(value: _t.Any, on_value_change: _t.Callable[[_t.Any], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., value_range: _t.Any = ..., on_value_change_finished: _t.Callable[[], None] | None = ..., colors: SliderColors = ..., start_interaction_source: _t.Any = ..., end_interaction_source: _t.Any = ..., start_thumb: _t.Callable[[RangeSliderState], None] = ..., end_thumb: _t.Callable[[RangeSliderState], None] = ..., track: _t.Callable[[RangeSliderState], None] = ..., steps: int = ...) -> None:
+ """Kotlin: androidx.compose.material3.RangeSlider(value: kotlin.ranges.ClosedFloatingPointRange, onValueChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, valueRange: kotlin.ranges.ClosedFloatingPointRange, onValueChangeFinished: kotlin.Function0?, colors: androidx.compose.material3.SliderColors, startInteractionSource: androidx.compose.foundation.interaction.MutableInteractionSource, endInteractionSource: androidx.compose.foundation.interaction.MutableInteractionSource, startThumb: kotlin.Function1, endThumb: kotlin.Function1, track: kotlin.Function1, steps: kotlin.Int): kotlin.Unit"""
+ ...
+
+def RangeSlider__RangeSliderState_Modifier_Boolean_SliderColors_MutableInteractionSource_MutableInteractionSource_Unit_Unit_Unit(state: RangeSliderState, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SliderColors = ..., start_interaction_source: _t.Any = ..., end_interaction_source: _t.Any = ..., start_thumb: _t.Callable[[RangeSliderState], None] = ..., end_thumb: _t.Callable[[RangeSliderState], None] = ..., track: _t.Callable[[RangeSliderState], None] = ...) -> None:
+ """Kotlin: androidx.compose.material3.RangeSlider(state: androidx.compose.material3.RangeSliderState, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, colors: androidx.compose.material3.SliderColors, startInteractionSource: androidx.compose.foundation.interaction.MutableInteractionSource, endInteractionSource: androidx.compose.foundation.interaction.MutableInteractionSource, startThumb: kotlin.Function1, endThumb: kotlin.Function1, track: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def RichTooltip(receiver: TooltipScope, /, modifier: pythonx.compose.ui.Modifier = ..., title: _t.Callable[[], None] | None = ..., action: _t.Callable[[], None] | None = ..., caret_shape: pythonx.compose.ui.graphics.Shape | None = ..., max_width: float = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: RichTooltipColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., *, text: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.TooltipScope.RichTooltip(modifier: androidx.compose.ui.Modifier, title: kotlin.Function0?, action: kotlin.Function0?, caretShape: androidx.compose.ui.graphics.Shape?, maxWidth: androidx.compose.ui.unit.Dp, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.RichTooltipColors, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, text: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def Scaffold(modifier: pythonx.compose.ui.Modifier = ..., top_bar: _t.Callable[[], None] = ..., bottom_bar: _t.Callable[[], None] = ..., snackbar_host: _t.Callable[[], None] = ..., floating_action_button: _t.Callable[[], None] = ..., floating_action_button_position: _t.Any = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., content_window_insets: _t.Any = ..., *, content: _t.Callable[[_t.Any], None]) -> None:
+ """Kotlin: androidx.compose.material3.Scaffold(modifier: androidx.compose.ui.Modifier, topBar: kotlin.Function0, bottomBar: kotlin.Function0, snackbarHost: kotlin.Function0, floatingActionButton: kotlin.Function0, floatingActionButtonPosition: androidx.compose.material3.FabPosition, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, contentWindowInsets: androidx.compose.foundation.layout.WindowInsets, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def ScrollableTabRow(selected_tab_index: int, modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., edge_padding: float = ..., indicator: _t.Callable[[_t.Any], None] = ..., divider: _t.Callable[[], None] = ..., *, tabs: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.ScrollableTabRow(selectedTabIndex: kotlin.Int, modifier: androidx.compose.ui.Modifier, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, edgePadding: androidx.compose.ui.unit.Dp, indicator: kotlin.Function1, divider: kotlin.Function0, tabs: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def SearchBar__SearchBarState_Unit_Modifier_Shape_SearchBarColors_Dp_Dp(state: SearchBarState, input_field: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ...) -> None:
+ """Kotlin: androidx.compose.material3.SearchBar(state: androidx.compose.material3.SearchBarState, inputField: kotlin.Function0, modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.SearchBarColors, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp): kotlin.Unit"""
+ ...
+
+def SearchBar__String_Unit_Unit_Boolean_Unit_Modifier_Boolean_Unit_Unit_Unit_Shape_SearchBarColors_Dp_Dp_WindowInsets_MutableInteractionSource_Unit(query: str, on_query_change: _t.Callable[[str], None], on_search: _t.Callable[[str], None], active: bool, on_active_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., window_insets: _t.Any = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.SearchBar(query: kotlin.String, onQueryChange: kotlin.Function1, onSearch: kotlin.Function1, active: kotlin.Boolean, onActiveChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, placeholder: kotlin.Function0?, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.SearchBarColors, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def SearchBar__Unit_Boolean_Unit_Modifier_Shape_SearchBarColors_Dp_Dp_WindowInsets_Unit(input_field: _t.Callable[[], None], expanded: bool, on_expanded_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.SearchBar(inputField: kotlin.Function0, expanded: kotlin.Boolean, onExpandedChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.SearchBarColors, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def SecondaryScrollableTabRow(selected_tab_index: int, modifier: pythonx.compose.ui.Modifier = ..., scroll_state: pythonx.compose.foundation.ScrollState = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., edge_padding: float = ..., indicator: _t.Callable[[TabIndicatorScope], None] = ..., divider: _t.Callable[[], None] = ..., min_tab_width: float = ..., *, tabs: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.SecondaryScrollableTabRow(selectedTabIndex: kotlin.Int, modifier: androidx.compose.ui.Modifier, scrollState: androidx.compose.foundation.ScrollState, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, edgePadding: androidx.compose.ui.unit.Dp, indicator: kotlin.Function1, divider: kotlin.Function0, minTabWidth: androidx.compose.ui.unit.Dp, tabs: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def SecondaryTabRow(selected_tab_index: int, modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., indicator: _t.Callable[[TabIndicatorScope], None] = ..., divider: _t.Callable[[], None] = ..., *, tabs: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.SecondaryTabRow(selectedTabIndex: kotlin.Int, modifier: androidx.compose.ui.Modifier, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, indicator: kotlin.Function1, divider: kotlin.Function0, tabs: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def SegmentedButton__MultiChoiceSegmentedButtonRowScope_Boolean_Unit_Shape_Modifier_Boolean_SegmentedButtonColors_BorderStroke_PaddingValues_MutableInteractionSource_Unit_Unit(receiver: MultiChoiceSegmentedButtonRowScope, /, checked: bool, on_checked_change: _t.Callable[[bool], None], shape: pythonx.compose.ui.graphics.Shape, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SegmentedButtonColors = ..., border: pythonx.compose.foundation.BorderStroke = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., icon: _t.Callable[[], None] = ..., *, label: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.MultiChoiceSegmentedButtonRowScope.SegmentedButton(checked: kotlin.Boolean, onCheckedChange: kotlin.Function1, shape: androidx.compose.ui.graphics.Shape, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, colors: androidx.compose.material3.SegmentedButtonColors, border: androidx.compose.foundation.BorderStroke, contentPadding: androidx.compose.foundation.layout.PaddingValues, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, icon: kotlin.Function0, label: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def SegmentedButton__SingleChoiceSegmentedButtonRowScope_Boolean_Unit_Shape_Modifier_Boolean_SegmentedButtonColors_BorderStroke_PaddingValues_MutableInteractionSource_Unit_Unit(receiver: SingleChoiceSegmentedButtonRowScope, /, selected: bool, on_click: _t.Callable[[], None], shape: pythonx.compose.ui.graphics.Shape, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SegmentedButtonColors = ..., border: pythonx.compose.foundation.BorderStroke = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., icon: _t.Callable[[], None] = ..., *, label: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.SingleChoiceSegmentedButtonRowScope.SegmentedButton(selected: kotlin.Boolean, onClick: kotlin.Function0, shape: androidx.compose.ui.graphics.Shape, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, colors: androidx.compose.material3.SegmentedButtonColors, border: androidx.compose.foundation.BorderStroke, contentPadding: androidx.compose.foundation.layout.PaddingValues, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, icon: kotlin.Function0, label: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def ShortNavigationBar(modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., window_insets: _t.Any = ..., arrangement: _t.Any = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.ShortNavigationBar(modifier: androidx.compose.ui.Modifier, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, windowInsets: androidx.compose.foundation.layout.WindowInsets, arrangement: androidx.compose.material3.ShortNavigationBarArrangement, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def ShortNavigationBarItem(selected: bool, on_click: _t.Callable[[], None], icon: _t.Callable[[], None], label: _t.Callable[[], None] | None, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., icon_position: _t.Any = ..., colors: NavigationItemColors = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.ShortNavigationBarItem(selected: kotlin.Boolean, onClick: kotlin.Function0, icon: kotlin.Function0, label: kotlin.Function0?, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, iconPosition: androidx.compose.material3.NavigationItemIconPosition, colors: androidx.compose.material3.NavigationItemColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def SingleChoiceSegmentedButtonRow(modifier: pythonx.compose.ui.Modifier = ..., space: float = ..., *, content: _t.Callable[[SingleChoiceSegmentedButtonRowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.SingleChoiceSegmentedButtonRow(modifier: androidx.compose.ui.Modifier, space: androidx.compose.ui.unit.Dp, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def Slider__Float_Unit_Modifier_Boolean_ClosedFloatingPointRange_Int_Unit_SliderColors_MutableInteractionSource(value: float, on_value_change: _t.Callable[[float], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., value_range: _t.Any = ..., steps: int = ..., on_value_change_finished: _t.Callable[[], None] | None = ..., colors: SliderColors = ..., interaction_source: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.Slider(value: kotlin.Float, onValueChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, valueRange: kotlin.ranges.ClosedFloatingPointRange, steps: kotlin.Int, onValueChangeFinished: kotlin.Function0?, colors: androidx.compose.material3.SliderColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource): kotlin.Unit"""
+ ...
+
+def Slider__Float_Unit_Modifier_Boolean_Unit_SliderColors_MutableInteractionSource_Int_Unit_Unit_ClosedFloatingPointRange(value: float, on_value_change: _t.Callable[[float], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., on_value_change_finished: _t.Callable[[], None] | None = ..., colors: SliderColors = ..., interaction_source: _t.Any = ..., steps: int = ..., thumb: _t.Callable[[SliderState], None] = ..., track: _t.Callable[[SliderState], None] = ..., value_range: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.Slider(value: kotlin.Float, onValueChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, onValueChangeFinished: kotlin.Function0?, colors: androidx.compose.material3.SliderColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource, steps: kotlin.Int, thumb: kotlin.Function1, track: kotlin.Function1, valueRange: kotlin.ranges.ClosedFloatingPointRange): kotlin.Unit"""
+ ...
+
+def Slider__SliderState_Modifier_Boolean_SliderColors_MutableInteractionSource_Unit_Unit(state: SliderState, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SliderColors = ..., interaction_source: _t.Any = ..., thumb: _t.Callable[[SliderState], None] = ..., track: _t.Callable[[SliderState], None] = ...) -> None:
+ """Kotlin: androidx.compose.material3.Slider(state: androidx.compose.material3.SliderState, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, colors: androidx.compose.material3.SliderColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource, thumb: kotlin.Function1, track: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def SmallFloatingActionButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., elevation: FloatingActionButtonElevation = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.SmallFloatingActionButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, elevation: androidx.compose.material3.FloatingActionButtonElevation, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def SnackbarHost(host_state: SnackbarHostState, modifier: pythonx.compose.ui.Modifier = ..., snackbar: _t.Callable[[SnackbarData], None] = ...) -> None:
+ """Kotlin: androidx.compose.material3.SnackbarHost(hostState: androidx.compose.material3.SnackbarHostState, modifier: androidx.compose.ui.Modifier, snackbar: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def Snackbar__Modifier_Unit_Unit_Boolean_Shape_Color_Color_Color_Color_Unit(modifier: pythonx.compose.ui.Modifier = ..., action: _t.Callable[[], None] | None = ..., dismiss_action: _t.Callable[[], None] | None = ..., action_on_new_line: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., action_content_color: _t.Any = ..., dismiss_action_content_color: _t.Any = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.Snackbar(modifier: androidx.compose.ui.Modifier, action: kotlin.Function0?, dismissAction: kotlin.Function0?, actionOnNewLine: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, actionContentColor: androidx.compose.ui.graphics.Color, dismissActionContentColor: androidx.compose.ui.graphics.Color, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def Snackbar__SnackbarData_Modifier_Boolean_Shape_Color_Color_Color_Color_Color(snackbar_data: SnackbarData, modifier: pythonx.compose.ui.Modifier = ..., action_on_new_line: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., action_color: _t.Any = ..., action_content_color: _t.Any = ..., dismiss_action_content_color: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.Snackbar(snackbarData: androidx.compose.material3.SnackbarData, modifier: androidx.compose.ui.Modifier, actionOnNewLine: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, actionColor: androidx.compose.ui.graphics.Color, actionContentColor: androidx.compose.ui.graphics.Color, dismissActionContentColor: androidx.compose.ui.graphics.Color): kotlin.Unit"""
+ ...
+
+def SuggestionChip(on_click: _t.Callable[[], None], label: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., icon: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: ChipColors = ..., elevation: ChipElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.SuggestionChip(onClick: kotlin.Function0, label: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, icon: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.ChipColors, elevation: androidx.compose.material3.ChipElevation?, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def Surface__androidx_compose_ui_Modifier_androidx_compose_ui_graphics_Shape_androidx_compose_ui_graphics_Color_androidx_compose_ui_graphics_Color_androidx_compose_ui_unit_Dp_androidx_compose_ui_unit_Dp_androidx_compose_foundation_BorderStroke_kotlin_Function2_Composable____kotlin_Unit(modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.Surface(modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, color: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, border: androidx.compose.foundation.BorderStroke?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def Surface__kotlin_Boolean_kotlin_Function0____kotlin_Unit_androidx_compose_ui_Modifier_kotlin_Boolean_androidx_compose_ui_graphics_Shape_androidx_compose_ui_graphics_Color_androidx_compose_ui_graphics_Color_androidx_compose_ui_unit_Dp_androidx_compose_ui_unit_Dp_androidx_compose_foundation_BorderStroke_androidx_compose_foundation_interaction_MutableInteractionSource_kotlin_Function2_Composable____kotlin_Unit(selected: bool, on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.Surface(selected: kotlin.Boolean, onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, color: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def Surface__kotlin_Boolean_kotlin_Function1_kotlin_Boolean___kotlin_Unit_androidx_compose_ui_Modifier_kotlin_Boolean_androidx_compose_ui_graphics_Shape_androidx_compose_ui_graphics_Color_androidx_compose_ui_graphics_Color_androidx_compose_ui_unit_Dp_androidx_compose_ui_unit_Dp_androidx_compose_foundation_BorderStroke_androidx_compose_foundation_interaction_MutableInteractionSource_kotlin_Function2_Composable____kotlin_Unit(checked: bool, on_checked_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.Surface(checked: kotlin.Boolean, onCheckedChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, color: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def Surface__kotlin_Function0____kotlin_Unit_androidx_compose_ui_Modifier_kotlin_Boolean_androidx_compose_ui_graphics_Shape_androidx_compose_ui_graphics_Color_androidx_compose_ui_graphics_Color_androidx_compose_ui_unit_Dp_androidx_compose_ui_unit_Dp_androidx_compose_foundation_BorderStroke_androidx_compose_foundation_interaction_MutableInteractionSource_kotlin_Function2_Composable____kotlin_Unit(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.Surface(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, color: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, border: androidx.compose.foundation.BorderStroke?, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def SwipeToDismissBox(state: SwipeToDismissBoxState, background_content: _t.Callable[[pythonx.compose.layout.RowScope], None], modifier: pythonx.compose.ui.Modifier = ..., enable_dismiss_from_start_to_end: bool = ..., enable_dismiss_from_end_to_start: bool = ..., gestures_enabled: bool = ..., on_dismiss: _t.Callable[[SwipeToDismissBoxValue], None] = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.SwipeToDismissBox(state: androidx.compose.material3.SwipeToDismissBoxState, backgroundContent: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enableDismissFromStartToEnd: kotlin.Boolean, enableDismissFromEndToStart: kotlin.Boolean, gesturesEnabled: kotlin.Boolean, onDismiss: kotlin.Function1, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def Switch(checked: bool, on_checked_change: _t.Callable[[bool], None] | None, modifier: pythonx.compose.ui.Modifier = ..., thumb_content: _t.Callable[[], None] | None = ..., enabled: bool = ..., colors: SwitchColors = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.Switch(checked: kotlin.Boolean, onCheckedChange: kotlin.Function1?, modifier: androidx.compose.ui.Modifier, thumbContent: kotlin.Function0?, enabled: kotlin.Boolean, colors: androidx.compose.material3.SwitchColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def TabRow(selected_tab_index: int, modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., indicator: _t.Callable[[_t.Any], None] = ..., divider: _t.Callable[[], None] = ..., *, tabs: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.TabRow(selectedTabIndex: kotlin.Int, modifier: androidx.compose.ui.Modifier, containerColor: androidx.compose.ui.graphics.Color, contentColor: androidx.compose.ui.graphics.Color, indicator: kotlin.Function1, divider: kotlin.Function0, tabs: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def Tab__Boolean_Unit_Modifier_Boolean_Color_Color_MutableInteractionSource_Unit(selected: bool, on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., selected_content_color: _t.Any = ..., unselected_content_color: _t.Any = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.Tab(selected: kotlin.Boolean, onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, selectedContentColor: androidx.compose.ui.graphics.Color, unselectedContentColor: androidx.compose.ui.graphics.Color, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def Tab__Boolean_Unit_Modifier_Boolean_Unit_Unit_Color_Color_MutableInteractionSource(selected: bool, on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., text: _t.Callable[[], None] | None = ..., icon: _t.Callable[[], None] | None = ..., selected_content_color: _t.Any = ..., unselected_content_color: _t.Any = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.Tab(selected: kotlin.Boolean, onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, text: kotlin.Function0?, icon: kotlin.Function0?, selectedContentColor: androidx.compose.ui.graphics.Color, unselectedContentColor: androidx.compose.ui.graphics.Color, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def TextButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: ButtonColors = ..., elevation: ButtonElevation | None = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.TextButton(onClick: kotlin.Function0, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.ButtonColors, elevation: androidx.compose.material3.ButtonElevation?, border: androidx.compose.foundation.BorderStroke?, contentPadding: androidx.compose.foundation.layout.PaddingValues, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def TextField__String_Unit_Modifier_Boolean_Boolean_TextStyle_Unit_Unit_Unit_Unit_Unit_Unit_Unit_Boolean_VisualTransformation_KeyboardOptions_KeyboardActions_Boolean_Int_Int_MutableInteractionSource_Shape_TextFieldColors(value: str, on_value_change: _t.Callable[[str], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label: _t.Callable[[], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., visual_transformation: _t.Any = ..., keyboard_options: _t.Any = ..., keyboard_actions: _t.Any = ..., single_line: bool = ..., max_lines: int = ..., min_lines: int = ..., interaction_source: _t.Any | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ...) -> None:
+ """Kotlin: androidx.compose.material3.TextField(value: kotlin.String, onValueChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, readOnly: kotlin.Boolean, textStyle: androidx.compose.ui.text.TextStyle, label: kotlin.Function0?, placeholder: kotlin.Function0?, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, prefix: kotlin.Function0?, suffix: kotlin.Function0?, supportingText: kotlin.Function0?, isError: kotlin.Boolean, visualTransformation: androidx.compose.ui.text.input.VisualTransformation, keyboardOptions: androidx.compose.foundation.text.KeyboardOptions, keyboardActions: androidx.compose.foundation.text.KeyboardActions, singleLine: kotlin.Boolean, maxLines: kotlin.Int, minLines: kotlin.Int, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.TextFieldColors): kotlin.Unit"""
+ ...
+
+def TextField__TextFieldState_Modifier_Boolean_Boolean_TextStyle_TextFieldLabelPosition_Unit_Unit_Unit_Unit_Unit_Unit_Unit_Boolean_InputTransformation_OutputTransformation_KeyboardOptions_KeyboardActionHandler_TextFieldLineLimits_Unit_ScrollState_Shape_TextFieldColors_PaddingValues_MutableInteractionSource(state: pythonx.compose.foundation.text.input.TextFieldState, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label_position: TextFieldLabelPosition = ..., label: _t.Callable[[TextFieldLabelScope], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., input_transformation: pythonx.compose.foundation.text.input.InputTransformation | None = ..., output_transformation: pythonx.compose.foundation.text.input.OutputTransformation | None = ..., keyboard_options: _t.Any = ..., on_keyboard_action: pythonx.compose.foundation.text.input.KeyboardActionHandler | None = ..., line_limits: pythonx.compose.foundation.text.input.TextFieldLineLimits = ..., on_text_layout: _t.Callable[[_t.Any, _t.Callable[[], pythonx.compose.ui.text.TextLayoutResult | None]], None] | None = ..., scroll_state: pythonx.compose.foundation.ScrollState = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.TextField(state: androidx.compose.foundation.text.input.TextFieldState, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, readOnly: kotlin.Boolean, textStyle: androidx.compose.ui.text.TextStyle, labelPosition: androidx.compose.material3.TextFieldLabelPosition, label: kotlin.Function1?, placeholder: kotlin.Function0?, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, prefix: kotlin.Function0?, suffix: kotlin.Function0?, supportingText: kotlin.Function0?, isError: kotlin.Boolean, inputTransformation: androidx.compose.foundation.text.input.InputTransformation?, outputTransformation: androidx.compose.foundation.text.input.OutputTransformation?, keyboardOptions: androidx.compose.foundation.text.KeyboardOptions, onKeyboardAction: androidx.compose.foundation.text.input.KeyboardActionHandler?, lineLimits: androidx.compose.foundation.text.input.TextFieldLineLimits, onTextLayout: kotlin.Function2?, scrollState: androidx.compose.foundation.ScrollState, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.TextFieldColors, contentPadding: androidx.compose.foundation.layout.PaddingValues, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def TextField__TextFieldValue_Unit_Modifier_Boolean_Boolean_TextStyle_Unit_Unit_Unit_Unit_Unit_Unit_Unit_Boolean_VisualTransformation_KeyboardOptions_KeyboardActions_Boolean_Int_Int_MutableInteractionSource_Shape_TextFieldColors(value: _t.Any, on_value_change: _t.Callable[[_t.Any], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label: _t.Callable[[], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., visual_transformation: _t.Any = ..., keyboard_options: _t.Any = ..., keyboard_actions: _t.Any = ..., single_line: bool = ..., max_lines: int = ..., min_lines: int = ..., interaction_source: _t.Any | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ...) -> None:
+ """Kotlin: androidx.compose.material3.TextField(value: androidx.compose.ui.text.input.TextFieldValue, onValueChange: kotlin.Function1, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, readOnly: kotlin.Boolean, textStyle: androidx.compose.ui.text.TextStyle, label: kotlin.Function0?, placeholder: kotlin.Function0?, leadingIcon: kotlin.Function0?, trailingIcon: kotlin.Function0?, prefix: kotlin.Function0?, suffix: kotlin.Function0?, supportingText: kotlin.Function0?, isError: kotlin.Boolean, visualTransformation: androidx.compose.ui.text.input.VisualTransformation, keyboardOptions: androidx.compose.foundation.text.KeyboardOptions, keyboardActions: androidx.compose.foundation.text.KeyboardActions, singleLine: kotlin.Boolean, maxLines: kotlin.Int, minLines: kotlin.Int, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.TextFieldColors): kotlin.Unit"""
+ ...
+
+def Text__AnnotatedString_Modifier_Color_TextAutoSize_TextUnit_FontStyle_FontWeight_FontFamily_TextUnit_TextDecoration_TextAlign_TextUnit_TextOverflow_Boolean_Int_Int_Map_Unit_TextStyle(text: _t.Any, modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., auto_size: _t.Any | None = ..., font_size: _t.Any = ..., font_style: _t.Any | None = ..., font_weight: _t.Any | None = ..., font_family: _t.Any | None = ..., letter_spacing: _t.Any = ..., text_decoration: _t.Any | None = ..., text_align: _t.Any | None = ..., line_height: _t.Any = ..., overflow: _t.Any = ..., soft_wrap: bool = ..., max_lines: int = ..., min_lines: int = ..., inline_content: _t.Any = ..., on_text_layout: _t.Callable[[pythonx.compose.ui.text.TextLayoutResult], None] = ..., style: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.Text(text: androidx.compose.ui.text.AnnotatedString, modifier: androidx.compose.ui.Modifier, color: androidx.compose.ui.graphics.Color, autoSize: androidx.compose.foundation.text.TextAutoSize?, fontSize: androidx.compose.ui.unit.TextUnit, fontStyle: androidx.compose.ui.text.font.FontStyle?, fontWeight: androidx.compose.ui.text.font.FontWeight?, fontFamily: androidx.compose.ui.text.font.FontFamily?, letterSpacing: androidx.compose.ui.unit.TextUnit, textDecoration: androidx.compose.ui.text.style.TextDecoration?, textAlign: androidx.compose.ui.text.style.TextAlign?, lineHeight: androidx.compose.ui.unit.TextUnit, overflow: androidx.compose.ui.text.style.TextOverflow, softWrap: kotlin.Boolean, maxLines: kotlin.Int, minLines: kotlin.Int, inlineContent: kotlin.collections.Map, onTextLayout: kotlin.Function1, style: androidx.compose.ui.text.TextStyle): kotlin.Unit"""
+ ...
+
+def Text__String_Modifier_Color_TextAutoSize_TextUnit_FontStyle_FontWeight_FontFamily_TextUnit_TextDecoration_TextAlign_TextUnit_TextOverflow_Boolean_Int_Int_Unit_TextStyle(text: str, modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., auto_size: _t.Any | None = ..., font_size: _t.Any = ..., font_style: _t.Any | None = ..., font_weight: _t.Any | None = ..., font_family: _t.Any | None = ..., letter_spacing: _t.Any = ..., text_decoration: _t.Any | None = ..., text_align: _t.Any | None = ..., line_height: _t.Any = ..., overflow: _t.Any = ..., soft_wrap: bool = ..., max_lines: int = ..., min_lines: int = ..., on_text_layout: _t.Callable[[pythonx.compose.ui.text.TextLayoutResult], None] | None = ..., style: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.Text(text: kotlin.String, modifier: androidx.compose.ui.Modifier, color: androidx.compose.ui.graphics.Color, autoSize: androidx.compose.foundation.text.TextAutoSize?, fontSize: androidx.compose.ui.unit.TextUnit, fontStyle: androidx.compose.ui.text.font.FontStyle?, fontWeight: androidx.compose.ui.text.font.FontWeight?, fontFamily: androidx.compose.ui.text.font.FontFamily?, letterSpacing: androidx.compose.ui.unit.TextUnit, textDecoration: androidx.compose.ui.text.style.TextDecoration?, textAlign: androidx.compose.ui.text.style.TextAlign?, lineHeight: androidx.compose.ui.unit.TextUnit, overflow: androidx.compose.ui.text.style.TextOverflow, softWrap: kotlin.Boolean, maxLines: kotlin.Int, minLines: kotlin.Int, onTextLayout: kotlin.Function1?, style: androidx.compose.ui.text.TextStyle): kotlin.Unit"""
+ ...
+
+def TimeInput(state: _t.Any, modifier: pythonx.compose.ui.Modifier = ..., colors: TimePickerColors = ...) -> None:
+ """Kotlin: androidx.compose.material3.TimeInput(state: androidx.compose.material3.TimePickerState, modifier: androidx.compose.ui.Modifier, colors: androidx.compose.material3.TimePickerColors): kotlin.Unit"""
+ ...
+
+def TimePicker(state: _t.Any, modifier: pythonx.compose.ui.Modifier = ..., colors: TimePickerColors = ..., layout_type: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.TimePicker(state: androidx.compose.material3.TimePickerState, modifier: androidx.compose.ui.Modifier, colors: androidx.compose.material3.TimePickerColors, layoutType: androidx.compose.material3.TimePickerLayoutType): kotlin.Unit"""
+ ...
+
+def TimePickerDialog(on_dismiss_request: _t.Callable[[], None], confirm_button: _t.Callable[[], None], title: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., properties: _t.Any = ..., mode_toggle_button: _t.Callable[[], None] | None = ..., dismiss_button: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.material3.TimePickerDialog(onDismissRequest: kotlin.Function0, confirmButton: kotlin.Function0, title: kotlin.Function0, modifier: androidx.compose.ui.Modifier, properties: androidx.compose.ui.window.DialogProperties, modeToggleButton: kotlin.Function0?, dismissButton: kotlin.Function0?, shape: androidx.compose.ui.graphics.Shape, containerColor: androidx.compose.ui.graphics.Color, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def TimePickerState(initial_hour: int, initial_minute: int, is24_hour: bool) -> _t.Any:
+ """Kotlin: androidx.compose.material3.TimePickerState(initialHour: kotlin.Int, initialMinute: kotlin.Int, is24Hour: kotlin.Boolean): androidx.compose.material3.TimePickerState"""
+ ...
+
+def TooltipBox(position_provider: _t.Any, tooltip: _t.Callable[[TooltipScope], None], state: _t.Any, modifier: pythonx.compose.ui.Modifier = ..., on_dismiss_request: _t.Callable[[], None] | None = ..., focusable: bool = ..., enable_user_input: bool = ..., has_action: bool = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.TooltipBox(positionProvider: androidx.compose.ui.window.PopupPositionProvider, tooltip: kotlin.Function1, state: androidx.compose.material3.TooltipState, modifier: androidx.compose.ui.Modifier, onDismissRequest: kotlin.Function0?, focusable: kotlin.Boolean, enableUserInput: kotlin.Boolean, hasAction: kotlin.Boolean, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def TooltipState(initial_is_visible: bool = ..., is_persistent: bool = ..., mutator_mutex: pythonx.compose.foundation.MutatorMutex = ...) -> _t.Any:
+ """Kotlin: androidx.compose.material3.TooltipState(initialIsVisible: kotlin.Boolean, isPersistent: kotlin.Boolean, mutatorMutex: androidx.compose.foundation.MutatorMutex): androidx.compose.material3.TooltipState"""
+ ...
+
+def TopAppBar(title: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., navigation_icon: _t.Callable[[], None] = ..., actions: _t.Callable[[pythonx.compose.layout.RowScope], None] = ..., expanded_height: float = ..., window_insets: _t.Any = ..., colors: TopAppBarColors = ..., scroll_behavior: TopAppBarScrollBehavior | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.TopAppBar(title: kotlin.Function0, modifier: androidx.compose.ui.Modifier, navigationIcon: kotlin.Function0, actions: kotlin.Function1, expandedHeight: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, colors: androidx.compose.material3.TopAppBarColors, scrollBehavior: androidx.compose.material3.TopAppBarScrollBehavior?): kotlin.Unit"""
+ ...
+
+def TopSearchBar(state: SearchBarState, input_field: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., window_insets: _t.Any = ..., scroll_behavior: SearchBarScrollBehavior | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.TopSearchBar(state: androidx.compose.material3.SearchBarState, inputField: kotlin.Function0, modifier: androidx.compose.ui.Modifier, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.SearchBarColors, tonalElevation: androidx.compose.ui.unit.Dp, shadowElevation: androidx.compose.ui.unit.Dp, windowInsets: androidx.compose.foundation.layout.WindowInsets, scrollBehavior: androidx.compose.material3.SearchBarScrollBehavior?): kotlin.Unit"""
+ ...
+
+def TriStateCheckbox__ToggleableState_Unit_Modifier_Boolean_CheckboxColors_MutableInteractionSource(state: _t.Any, on_click: _t.Callable[[], None] | None, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: CheckboxColors = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.TriStateCheckbox(state: androidx.compose.ui.state.ToggleableState, onClick: kotlin.Function0?, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, colors: androidx.compose.material3.CheckboxColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def TriStateCheckbox__ToggleableState_Unit_Stroke_Stroke_Modifier_Boolean_CheckboxColors_MutableInteractionSource(state: _t.Any, on_click: _t.Callable[[], None] | None, checkmark_stroke: _t.Any, outline_stroke: _t.Any, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: CheckboxColors = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.TriStateCheckbox(state: androidx.compose.ui.state.ToggleableState, onClick: kotlin.Function0?, checkmarkStroke: androidx.compose.ui.graphics.drawscope.Stroke, outlineStroke: androidx.compose.ui.graphics.drawscope.Stroke, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, colors: androidx.compose.material3.CheckboxColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def VerticalDivider(modifier: pythonx.compose.ui.Modifier = ..., thickness: float = ..., color: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.material3.VerticalDivider(modifier: androidx.compose.ui.Modifier, thickness: androidx.compose.ui.unit.Dp, color: androidx.compose.ui.graphics.Color): kotlin.Unit"""
+ ...
+
+def VerticalDragHandle(modifier: pythonx.compose.ui.Modifier = ..., sizes: DragHandleSizes = ..., colors: DragHandleColors = ..., shapes: DragHandleShapes = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.VerticalDragHandle(modifier: androidx.compose.ui.Modifier, sizes: androidx.compose.material3.DragHandleSizes, colors: androidx.compose.material3.DragHandleColors, shapes: androidx.compose.material3.DragHandleShapes, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def WideNavigationRail(modifier: pythonx.compose.ui.Modifier = ..., state: WideNavigationRailState = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: WideNavigationRailColors = ..., header: _t.Callable[[], None] | None = ..., window_insets: _t.Any = ..., arrangement: pythonx.compose.layout.Arrangement.Vertical = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.material3.WideNavigationRail(modifier: androidx.compose.ui.Modifier, state: androidx.compose.material3.WideNavigationRailState, shape: androidx.compose.ui.graphics.Shape, colors: androidx.compose.material3.WideNavigationRailColors, header: kotlin.Function0?, windowInsets: androidx.compose.foundation.layout.WindowInsets, arrangement: androidx.compose.foundation.layout.Arrangement.Vertical, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def WideNavigationRailItem(selected: bool, on_click: _t.Callable[[], None], icon: _t.Callable[[], None], label: _t.Callable[[], None] | None, rail_expanded: bool, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., icon_position: _t.Any = ..., colors: NavigationItemColors = ..., interaction_source: _t.Any | None = ...) -> None:
+ """Kotlin: androidx.compose.material3.WideNavigationRailItem(selected: kotlin.Boolean, onClick: kotlin.Function0, icon: kotlin.Function0, label: kotlin.Function0?, railExpanded: kotlin.Boolean, modifier: androidx.compose.ui.Modifier, enabled: kotlin.Boolean, iconPosition: androidx.compose.material3.NavigationItemIconPosition, colors: androidx.compose.material3.NavigationItemColors, interactionSource: androidx.compose.foundation.interaction.MutableInteractionSource?): kotlin.Unit"""
+ ...
+
+def content_color_for__Color(background_color: _t.Any) -> int:
+ """Kotlin: androidx.compose.material3.contentColorFor(backgroundColor: androidx.compose.ui.graphics.Color): androidx.compose.ui.graphics.Color"""
+ ...
+
+def content_color_for__ColorScheme_Color(receiver: ColorScheme, /, background_color: _t.Any) -> _t.Any:
+ """Kotlin: androidx.compose.material3.ColorScheme.contentColorFor(backgroundColor: androidx.compose.ui.graphics.Color): androidx.compose.ui.graphics.Color"""
+ ...
+
+def dark_color_scheme(primary: _t.Any, on_primary: _t.Any, primary_container: _t.Any, on_primary_container: _t.Any, inverse_primary: _t.Any, secondary: _t.Any, on_secondary: _t.Any, secondary_container: _t.Any, on_secondary_container: _t.Any, tertiary: _t.Any, on_tertiary: _t.Any, tertiary_container: _t.Any, on_tertiary_container: _t.Any, background: _t.Any, on_background: _t.Any, surface: _t.Any, on_surface: _t.Any, surface_variant: _t.Any, on_surface_variant: _t.Any, surface_tint: _t.Any, inverse_surface: _t.Any, inverse_on_surface: _t.Any, error: _t.Any, on_error: _t.Any, error_container: _t.Any, on_error_container: _t.Any, outline: _t.Any, outline_variant: _t.Any, scrim: _t.Any, surface_bright: _t.Any, surface_container: _t.Any, surface_container_high: _t.Any, surface_container_highest: _t.Any, surface_container_low: _t.Any, surface_container_lowest: _t.Any, surface_dim: _t.Any, primary_fixed: _t.Any, primary_fixed_dim: _t.Any, on_primary_fixed: _t.Any, on_primary_fixed_variant: _t.Any, secondary_fixed: _t.Any, secondary_fixed_dim: _t.Any, on_secondary_fixed: _t.Any, on_secondary_fixed_variant: _t.Any, tertiary_fixed: _t.Any, tertiary_fixed_dim: _t.Any, on_tertiary_fixed: _t.Any, on_tertiary_fixed_variant: _t.Any) -> ColorScheme:
+ """Kotlin: androidx.compose.material3.darkColorScheme(primary: androidx.compose.ui.graphics.Color, onPrimary: androidx.compose.ui.graphics.Color, primaryContainer: androidx.compose.ui.graphics.Color, onPrimaryContainer: androidx.compose.ui.graphics.Color, inversePrimary: androidx.compose.ui.graphics.Color, secondary: androidx.compose.ui.graphics.Color, onSecondary: androidx.compose.ui.graphics.Color, secondaryContainer: androidx.compose.ui.graphics.Color, onSecondaryContainer: androidx.compose.ui.graphics.Color, tertiary: androidx.compose.ui.graphics.Color, onTertiary: androidx.compose.ui.graphics.Color, tertiaryContainer: androidx.compose.ui.graphics.Color, onTertiaryContainer: androidx.compose.ui.graphics.Color, background: androidx.compose.ui.graphics.Color, onBackground: androidx.compose.ui.graphics.Color, surface: androidx.compose.ui.graphics.Color, onSurface: androidx.compose.ui.graphics.Color, surfaceVariant: androidx.compose.ui.graphics.Color, onSurfaceVariant: androidx.compose.ui.graphics.Color, surfaceTint: androidx.compose.ui.graphics.Color, inverseSurface: androidx.compose.ui.graphics.Color, inverseOnSurface: androidx.compose.ui.graphics.Color, error: androidx.compose.ui.graphics.Color, onError: androidx.compose.ui.graphics.Color, errorContainer: androidx.compose.ui.graphics.Color, onErrorContainer: androidx.compose.ui.graphics.Color, outline: androidx.compose.ui.graphics.Color, outlineVariant: androidx.compose.ui.graphics.Color, scrim: androidx.compose.ui.graphics.Color, surfaceBright: androidx.compose.ui.graphics.Color, surfaceContainer: androidx.compose.ui.graphics.Color, surfaceContainerHigh: androidx.compose.ui.graphics.Color, surfaceContainerHighest: androidx.compose.ui.graphics.Color, surfaceContainerLow: androidx.compose.ui.graphics.Color, surfaceContainerLowest: androidx.compose.ui.graphics.Color, surfaceDim: androidx.compose.ui.graphics.Color, primaryFixed: androidx.compose.ui.graphics.Color, primaryFixedDim: androidx.compose.ui.graphics.Color, onPrimaryFixed: androidx.compose.ui.graphics.Color, onPrimaryFixedVariant: androidx.compose.ui.graphics.Color, secondaryFixed: androidx.compose.ui.graphics.Color, secondaryFixedDim: androidx.compose.ui.graphics.Color, onSecondaryFixed: androidx.compose.ui.graphics.Color, onSecondaryFixedVariant: androidx.compose.ui.graphics.Color, tertiaryFixed: androidx.compose.ui.graphics.Color, tertiaryFixedDim: androidx.compose.ui.graphics.Color, onTertiaryFixed: androidx.compose.ui.graphics.Color, onTertiaryFixedVariant: androidx.compose.ui.graphics.Color): androidx.compose.material3.ColorScheme"""
+ ...
+
+def light_color_scheme(primary: _t.Any, on_primary: _t.Any, primary_container: _t.Any, on_primary_container: _t.Any, inverse_primary: _t.Any, secondary: _t.Any, on_secondary: _t.Any, secondary_container: _t.Any, on_secondary_container: _t.Any, tertiary: _t.Any, on_tertiary: _t.Any, tertiary_container: _t.Any, on_tertiary_container: _t.Any, background: _t.Any, on_background: _t.Any, surface: _t.Any, on_surface: _t.Any, surface_variant: _t.Any, on_surface_variant: _t.Any, surface_tint: _t.Any, inverse_surface: _t.Any, inverse_on_surface: _t.Any, error: _t.Any, on_error: _t.Any, error_container: _t.Any, on_error_container: _t.Any, outline: _t.Any, outline_variant: _t.Any, scrim: _t.Any, surface_bright: _t.Any, surface_container: _t.Any, surface_container_high: _t.Any, surface_container_highest: _t.Any, surface_container_low: _t.Any, surface_container_lowest: _t.Any, surface_dim: _t.Any, primary_fixed: _t.Any, primary_fixed_dim: _t.Any, on_primary_fixed: _t.Any, on_primary_fixed_variant: _t.Any, secondary_fixed: _t.Any, secondary_fixed_dim: _t.Any, on_secondary_fixed: _t.Any, on_secondary_fixed_variant: _t.Any, tertiary_fixed: _t.Any, tertiary_fixed_dim: _t.Any, on_tertiary_fixed: _t.Any, on_tertiary_fixed_variant: _t.Any) -> ColorScheme:
+ """Kotlin: androidx.compose.material3.lightColorScheme(primary: androidx.compose.ui.graphics.Color, onPrimary: androidx.compose.ui.graphics.Color, primaryContainer: androidx.compose.ui.graphics.Color, onPrimaryContainer: androidx.compose.ui.graphics.Color, inversePrimary: androidx.compose.ui.graphics.Color, secondary: androidx.compose.ui.graphics.Color, onSecondary: androidx.compose.ui.graphics.Color, secondaryContainer: androidx.compose.ui.graphics.Color, onSecondaryContainer: androidx.compose.ui.graphics.Color, tertiary: androidx.compose.ui.graphics.Color, onTertiary: androidx.compose.ui.graphics.Color, tertiaryContainer: androidx.compose.ui.graphics.Color, onTertiaryContainer: androidx.compose.ui.graphics.Color, background: androidx.compose.ui.graphics.Color, onBackground: androidx.compose.ui.graphics.Color, surface: androidx.compose.ui.graphics.Color, onSurface: androidx.compose.ui.graphics.Color, surfaceVariant: androidx.compose.ui.graphics.Color, onSurfaceVariant: androidx.compose.ui.graphics.Color, surfaceTint: androidx.compose.ui.graphics.Color, inverseSurface: androidx.compose.ui.graphics.Color, inverseOnSurface: androidx.compose.ui.graphics.Color, error: androidx.compose.ui.graphics.Color, onError: androidx.compose.ui.graphics.Color, errorContainer: androidx.compose.ui.graphics.Color, onErrorContainer: androidx.compose.ui.graphics.Color, outline: androidx.compose.ui.graphics.Color, outlineVariant: androidx.compose.ui.graphics.Color, scrim: androidx.compose.ui.graphics.Color, surfaceBright: androidx.compose.ui.graphics.Color, surfaceContainer: androidx.compose.ui.graphics.Color, surfaceContainerHigh: androidx.compose.ui.graphics.Color, surfaceContainerHighest: androidx.compose.ui.graphics.Color, surfaceContainerLow: androidx.compose.ui.graphics.Color, surfaceContainerLowest: androidx.compose.ui.graphics.Color, surfaceDim: androidx.compose.ui.graphics.Color, primaryFixed: androidx.compose.ui.graphics.Color, primaryFixedDim: androidx.compose.ui.graphics.Color, onPrimaryFixed: androidx.compose.ui.graphics.Color, onPrimaryFixedVariant: androidx.compose.ui.graphics.Color, secondaryFixed: androidx.compose.ui.graphics.Color, secondaryFixedDim: androidx.compose.ui.graphics.Color, onSecondaryFixed: androidx.compose.ui.graphics.Color, onSecondaryFixedVariant: androidx.compose.ui.graphics.Color, tertiaryFixed: androidx.compose.ui.graphics.Color, tertiaryFixedDim: androidx.compose.ui.graphics.Color, onTertiaryFixed: androidx.compose.ui.graphics.Color, onTertiaryFixedVariant: androidx.compose.ui.graphics.Color): androidx.compose.material3.ColorScheme"""
+ ...
+
+def minimum_interactive_component_size(receiver: pythonx.compose.ui.Modifier, /) -> pythonx.compose.ui.Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.minimumInteractiveComponentSize(): androidx.compose.ui.Modifier"""
+ ...
+
+def remember_bottom_app_bar_state(initial_height_offset_limit: float = ..., initial_height_offset: float = ..., initial_content_offset: float = ...) -> _t.Any:
+ """Kotlin: androidx.compose.material3.rememberBottomAppBarState(initialHeightOffsetLimit: kotlin.Float, initialHeightOffset: kotlin.Float, initialContentOffset: kotlin.Float): androidx.compose.material3.BottomAppBarState"""
+ ...
+
+def remember_bottom_sheet_scaffold_state(bottom_sheet_state: SheetState = ..., snackbar_host_state: SnackbarHostState = ...) -> BottomSheetScaffoldState:
+ """Kotlin: androidx.compose.material3.rememberBottomSheetScaffoldState(bottomSheetState: androidx.compose.material3.SheetState, snackbarHostState: androidx.compose.material3.SnackbarHostState): androidx.compose.material3.BottomSheetScaffoldState"""
+ ...
+
+def remember_date_picker_state__LocalDate_YearMonth_IntRange_DisplayMode_SelectableDates(initial_selected_date: _t.Any | None, initial_displayed_month: _t.Any | None = ..., year_range: _t.Any = ..., initial_display_mode: _t.Any = ..., selectable_dates: SelectableDates = ...) -> DatePickerState:
+ """Kotlin: androidx.compose.material3.rememberDatePickerState(initialSelectedDate: java.time.LocalDate?, initialDisplayedMonth: java.time.YearMonth?, yearRange: kotlin.ranges.IntRange, initialDisplayMode: androidx.compose.material3.DisplayMode, selectableDates: androidx.compose.material3.SelectableDates): androidx.compose.material3.DatePickerState"""
+ ...
+
+def remember_date_picker_state__Long_Long_IntRange_DisplayMode_SelectableDates(initial_selected_date_millis: int | None = ..., initial_displayed_month_millis: int | None = ..., year_range: _t.Any = ..., initial_display_mode: _t.Any = ..., selectable_dates: SelectableDates = ...) -> DatePickerState:
+ """Kotlin: androidx.compose.material3.rememberDatePickerState(initialSelectedDateMillis: kotlin.Long?, initialDisplayedMonthMillis: kotlin.Long?, yearRange: kotlin.ranges.IntRange, initialDisplayMode: androidx.compose.material3.DisplayMode, selectableDates: androidx.compose.material3.SelectableDates): androidx.compose.material3.DatePickerState"""
+ ...
+
+def remember_date_range_picker_state__LocalDate_LocalDate_YearMonth_IntRange_DisplayMode_SelectableDates(initial_selected_start_date: _t.Any | None, initial_selected_end_date: _t.Any | None, initial_displayed_month: _t.Any | None = ..., year_range: _t.Any = ..., initial_display_mode: _t.Any = ..., selectable_dates: SelectableDates = ...) -> DateRangePickerState:
+ """Kotlin: androidx.compose.material3.rememberDateRangePickerState(initialSelectedStartDate: java.time.LocalDate?, initialSelectedEndDate: java.time.LocalDate?, initialDisplayedMonth: java.time.YearMonth?, yearRange: kotlin.ranges.IntRange, initialDisplayMode: androidx.compose.material3.DisplayMode, selectableDates: androidx.compose.material3.SelectableDates): androidx.compose.material3.DateRangePickerState"""
+ ...
+
+def remember_date_range_picker_state__Long_Long_Long_IntRange_DisplayMode_SelectableDates(initial_selected_start_date_millis: int | None = ..., initial_selected_end_date_millis: int | None = ..., initial_displayed_month_millis: int | None = ..., year_range: _t.Any = ..., initial_display_mode: _t.Any = ..., selectable_dates: SelectableDates = ...) -> DateRangePickerState:
+ """Kotlin: androidx.compose.material3.rememberDateRangePickerState(initialSelectedStartDateMillis: kotlin.Long?, initialSelectedEndDateMillis: kotlin.Long?, initialDisplayedMonthMillis: kotlin.Long?, yearRange: kotlin.ranges.IntRange, initialDisplayMode: androidx.compose.material3.DisplayMode, selectableDates: androidx.compose.material3.SelectableDates): androidx.compose.material3.DateRangePickerState"""
+ ...
+
+def remember_drawer_state(initial_value: DrawerValue, confirm_state_change: _t.Callable[[DrawerValue], bool] = ...) -> DrawerState:
+ """Kotlin: androidx.compose.material3.rememberDrawerState(initialValue: androidx.compose.material3.DrawerValue, confirmStateChange: kotlin.Function1): androidx.compose.material3.DrawerState"""
+ ...
+
+def remember_modal_bottom_sheet_state(skip_partially_expanded: bool = ..., confirm_value_change: _t.Callable[[SheetValue], bool] = ...) -> SheetState:
+ """Kotlin: androidx.compose.material3.rememberModalBottomSheetState(skipPartiallyExpanded: kotlin.Boolean, confirmValueChange: kotlin.Function1): androidx.compose.material3.SheetState"""
+ ...
+
+def remember_range_slider_state(active_range_start: float = ..., active_range_end: float = ..., steps: int = ..., on_value_change_finished: _t.Callable[[], None] | None = ..., value_range: _t.Any = ...) -> RangeSliderState:
+ """Kotlin: androidx.compose.material3.rememberRangeSliderState(activeRangeStart: kotlin.Float, activeRangeEnd: kotlin.Float, steps: kotlin.Int, onValueChangeFinished: kotlin.Function0?, valueRange: kotlin.ranges.ClosedFloatingPointRange): androidx.compose.material3.RangeSliderState"""
+ ...
+
+def remember_search_bar_state(initial_value: SearchBarValue = ..., animation_spec_for_expand: _t.Any = ..., animation_spec_for_collapse: _t.Any = ...) -> SearchBarState:
+ """Kotlin: androidx.compose.material3.rememberSearchBarState(initialValue: androidx.compose.material3.SearchBarValue, animationSpecForExpand: androidx.compose.animation.core.AnimationSpec, animationSpecForCollapse: androidx.compose.animation.core.AnimationSpec): androidx.compose.material3.SearchBarState"""
+ ...
+
+def remember_slider_state(value: float = ..., steps: int = ..., on_value_change_finished: _t.Callable[[], None] | None = ..., value_range: _t.Any = ...) -> SliderState:
+ """Kotlin: androidx.compose.material3.rememberSliderState(value: kotlin.Float, steps: kotlin.Int, onValueChangeFinished: kotlin.Function0?, valueRange: kotlin.ranges.ClosedFloatingPointRange): androidx.compose.material3.SliderState"""
+ ...
+
+def remember_standard_bottom_sheet_state(initial_value: SheetValue = ..., confirm_value_change: _t.Callable[[SheetValue], bool] = ..., skip_hidden_state: bool = ...) -> SheetState:
+ """Kotlin: androidx.compose.material3.rememberStandardBottomSheetState(initialValue: androidx.compose.material3.SheetValue, confirmValueChange: kotlin.Function1, skipHiddenState: kotlin.Boolean): androidx.compose.material3.SheetState"""
+ ...
+
+def remember_swipe_to_dismiss_box_state__SwipeToDismissBoxValue_Boolean_Float(initial_value: SwipeToDismissBoxValue = ..., confirm_value_change: _t.Callable[[SwipeToDismissBoxValue], bool] = ..., positional_threshold: _t.Callable[[float], float] = ...) -> SwipeToDismissBoxState:
+ """Kotlin: androidx.compose.material3.rememberSwipeToDismissBoxState(initialValue: androidx.compose.material3.SwipeToDismissBoxValue, confirmValueChange: kotlin.Function1, positionalThreshold: kotlin.Function1): androidx.compose.material3.SwipeToDismissBoxState"""
+ ...
+
+def remember_swipe_to_dismiss_box_state__SwipeToDismissBoxValue_Float(initial_value: SwipeToDismissBoxValue = ..., positional_threshold: _t.Callable[[float], float] = ...) -> SwipeToDismissBoxState:
+ """Kotlin: androidx.compose.material3.rememberSwipeToDismissBoxState(initialValue: androidx.compose.material3.SwipeToDismissBoxValue, positionalThreshold: kotlin.Function1): androidx.compose.material3.SwipeToDismissBoxState"""
+ ...
+
+def remember_time_picker_state(initial_hour: int = ..., initial_minute: int = ..., is24_hour: bool = ...) -> _t.Any:
+ """Kotlin: androidx.compose.material3.rememberTimePickerState(initialHour: kotlin.Int, initialMinute: kotlin.Int, is24Hour: kotlin.Boolean): androidx.compose.material3.TimePickerState"""
+ ...
+
+def remember_tooltip_state(initial_is_visible: bool = ..., is_persistent: bool = ..., mutator_mutex: pythonx.compose.foundation.MutatorMutex = ...) -> _t.Any:
+ """Kotlin: androidx.compose.material3.rememberTooltipState(initialIsVisible: kotlin.Boolean, isPersistent: kotlin.Boolean, mutatorMutex: androidx.compose.foundation.MutatorMutex): androidx.compose.material3.TooltipState"""
+ ...
+
+def remember_top_app_bar_state(initial_height_offset_limit: float = ..., initial_height_offset: float = ..., initial_content_offset: float = ...) -> _t.Any:
+ """Kotlin: androidx.compose.material3.rememberTopAppBarState(initialHeightOffsetLimit: kotlin.Float, initialHeightOffset: kotlin.Float, initialContentOffset: kotlin.Float): androidx.compose.material3.TopAppBarState"""
+ ...
+
+def remember_wide_navigation_rail_state(initial_value: WideNavigationRailValue = ...) -> WideNavigationRailState:
+ """Kotlin: androidx.compose.material3.rememberWideNavigationRailState(initialValue: androidx.compose.material3.WideNavigationRailValue): androidx.compose.material3.WideNavigationRailState"""
+ ...
+
+def ripple__Boolean_Dp_Color(bounded: bool = ..., radius: float = ..., color: _t.Any = ...) -> pythonx.compose.foundation.IndicationNodeFactory:
+ """Kotlin: androidx.compose.material3.ripple(bounded: kotlin.Boolean, radius: androidx.compose.ui.unit.Dp, color: androidx.compose.ui.graphics.Color): androidx.compose.foundation.IndicationNodeFactory"""
+ ...
+
+def ripple__ColorProducer_Boolean_Dp(color: pythonx.compose.ui.graphics.ColorProducer, bounded: bool = ..., radius: float = ...) -> pythonx.compose.foundation.IndicationNodeFactory:
+ """Kotlin: androidx.compose.material3.ripple(color: androidx.compose.ui.graphics.ColorProducer, bounded: kotlin.Boolean, radius: androidx.compose.ui.unit.Dp): androidx.compose.foundation.IndicationNodeFactory"""
+ ...
+
+def surface_color_at_elevation(receiver: ColorScheme, /, elevation: float) -> _t.Any:
+ """Kotlin: androidx.compose.material3.ColorScheme.surfaceColorAtElevation(elevation: androidx.compose.ui.unit.Dp): androidx.compose.ui.graphics.Color"""
+ ...
+
+def ColorScheme__Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color(primary: _t.Any, on_primary: _t.Any, primary_container: _t.Any, on_primary_container: _t.Any, inverse_primary: _t.Any, secondary: _t.Any, on_secondary: _t.Any, secondary_container: _t.Any, on_secondary_container: _t.Any, tertiary: _t.Any, on_tertiary: _t.Any, tertiary_container: _t.Any, on_tertiary_container: _t.Any, background: _t.Any, on_background: _t.Any, surface: _t.Any, on_surface: _t.Any, surface_variant: _t.Any, on_surface_variant: _t.Any, surface_tint: _t.Any, inverse_surface: _t.Any, inverse_on_surface: _t.Any, error: _t.Any, on_error: _t.Any, error_container: _t.Any, on_error_container: _t.Any, outline: _t.Any, outline_variant: _t.Any, scrim: _t.Any) -> ColorScheme:
+ """Kotlin: androidx.compose.material3.ColorScheme(primary: androidx.compose.ui.graphics.Color, onPrimary: androidx.compose.ui.graphics.Color, primaryContainer: androidx.compose.ui.graphics.Color, onPrimaryContainer: androidx.compose.ui.graphics.Color, inversePrimary: androidx.compose.ui.graphics.Color, secondary: androidx.compose.ui.graphics.Color, onSecondary: androidx.compose.ui.graphics.Color, secondaryContainer: androidx.compose.ui.graphics.Color, onSecondaryContainer: androidx.compose.ui.graphics.Color, tertiary: androidx.compose.ui.graphics.Color, onTertiary: androidx.compose.ui.graphics.Color, tertiaryContainer: androidx.compose.ui.graphics.Color, onTertiaryContainer: androidx.compose.ui.graphics.Color, background: androidx.compose.ui.graphics.Color, onBackground: androidx.compose.ui.graphics.Color, surface: androidx.compose.ui.graphics.Color, onSurface: androidx.compose.ui.graphics.Color, surfaceVariant: androidx.compose.ui.graphics.Color, onSurfaceVariant: androidx.compose.ui.graphics.Color, surfaceTint: androidx.compose.ui.graphics.Color, inverseSurface: androidx.compose.ui.graphics.Color, inverseOnSurface: androidx.compose.ui.graphics.Color, error: androidx.compose.ui.graphics.Color, onError: androidx.compose.ui.graphics.Color, errorContainer: androidx.compose.ui.graphics.Color, onErrorContainer: androidx.compose.ui.graphics.Color, outline: androidx.compose.ui.graphics.Color, outlineVariant: androidx.compose.ui.graphics.Color, scrim: androidx.compose.ui.graphics.Color): androidx.compose.material3.ColorScheme"""
+ ...
+
+def ColorScheme__Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color(primary: _t.Any, on_primary: _t.Any, primary_container: _t.Any, on_primary_container: _t.Any, inverse_primary: _t.Any, secondary: _t.Any, on_secondary: _t.Any, secondary_container: _t.Any, on_secondary_container: _t.Any, tertiary: _t.Any, on_tertiary: _t.Any, tertiary_container: _t.Any, on_tertiary_container: _t.Any, background: _t.Any, on_background: _t.Any, surface: _t.Any, on_surface: _t.Any, surface_variant: _t.Any, on_surface_variant: _t.Any, surface_tint: _t.Any, inverse_surface: _t.Any, inverse_on_surface: _t.Any, error: _t.Any, on_error: _t.Any, error_container: _t.Any, on_error_container: _t.Any, outline: _t.Any, outline_variant: _t.Any, scrim: _t.Any, surface_bright: _t.Any, surface_dim: _t.Any, surface_container: _t.Any, surface_container_high: _t.Any, surface_container_highest: _t.Any, surface_container_low: _t.Any, surface_container_lowest: _t.Any) -> ColorScheme:
+ """Kotlin: androidx.compose.material3.ColorScheme(primary: androidx.compose.ui.graphics.Color, onPrimary: androidx.compose.ui.graphics.Color, primaryContainer: androidx.compose.ui.graphics.Color, onPrimaryContainer: androidx.compose.ui.graphics.Color, inversePrimary: androidx.compose.ui.graphics.Color, secondary: androidx.compose.ui.graphics.Color, onSecondary: androidx.compose.ui.graphics.Color, secondaryContainer: androidx.compose.ui.graphics.Color, onSecondaryContainer: androidx.compose.ui.graphics.Color, tertiary: androidx.compose.ui.graphics.Color, onTertiary: androidx.compose.ui.graphics.Color, tertiaryContainer: androidx.compose.ui.graphics.Color, onTertiaryContainer: androidx.compose.ui.graphics.Color, background: androidx.compose.ui.graphics.Color, onBackground: androidx.compose.ui.graphics.Color, surface: androidx.compose.ui.graphics.Color, onSurface: androidx.compose.ui.graphics.Color, surfaceVariant: androidx.compose.ui.graphics.Color, onSurfaceVariant: androidx.compose.ui.graphics.Color, surfaceTint: androidx.compose.ui.graphics.Color, inverseSurface: androidx.compose.ui.graphics.Color, inverseOnSurface: androidx.compose.ui.graphics.Color, error: androidx.compose.ui.graphics.Color, onError: androidx.compose.ui.graphics.Color, errorContainer: androidx.compose.ui.graphics.Color, onErrorContainer: androidx.compose.ui.graphics.Color, outline: androidx.compose.ui.graphics.Color, outlineVariant: androidx.compose.ui.graphics.Color, scrim: androidx.compose.ui.graphics.Color, surfaceBright: androidx.compose.ui.graphics.Color, surfaceDim: androidx.compose.ui.graphics.Color, surfaceContainer: androidx.compose.ui.graphics.Color, surfaceContainerHigh: androidx.compose.ui.graphics.Color, surfaceContainerHighest: androidx.compose.ui.graphics.Color, surfaceContainerLow: androidx.compose.ui.graphics.Color, surfaceContainerLowest: androidx.compose.ui.graphics.Color): androidx.compose.material3.ColorScheme"""
+ ...
+
+def ColorScheme__Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color_Color(primary: _t.Any, on_primary: _t.Any, primary_container: _t.Any, on_primary_container: _t.Any, inverse_primary: _t.Any, secondary: _t.Any, on_secondary: _t.Any, secondary_container: _t.Any, on_secondary_container: _t.Any, tertiary: _t.Any, on_tertiary: _t.Any, tertiary_container: _t.Any, on_tertiary_container: _t.Any, background: _t.Any, on_background: _t.Any, surface: _t.Any, on_surface: _t.Any, surface_variant: _t.Any, on_surface_variant: _t.Any, surface_tint: _t.Any, inverse_surface: _t.Any, inverse_on_surface: _t.Any, error: _t.Any, on_error: _t.Any, error_container: _t.Any, on_error_container: _t.Any, outline: _t.Any, outline_variant: _t.Any, scrim: _t.Any, surface_bright: _t.Any, surface_dim: _t.Any, surface_container: _t.Any, surface_container_high: _t.Any, surface_container_highest: _t.Any, surface_container_low: _t.Any, surface_container_lowest: _t.Any, primary_fixed: _t.Any, primary_fixed_dim: _t.Any, on_primary_fixed: _t.Any, on_primary_fixed_variant: _t.Any, secondary_fixed: _t.Any, secondary_fixed_dim: _t.Any, on_secondary_fixed: _t.Any, on_secondary_fixed_variant: _t.Any, tertiary_fixed: _t.Any, tertiary_fixed_dim: _t.Any, on_tertiary_fixed: _t.Any, on_tertiary_fixed_variant: _t.Any) -> ColorScheme:
+ """Kotlin: androidx.compose.material3.ColorScheme(primary: androidx.compose.ui.graphics.Color, onPrimary: androidx.compose.ui.graphics.Color, primaryContainer: androidx.compose.ui.graphics.Color, onPrimaryContainer: androidx.compose.ui.graphics.Color, inversePrimary: androidx.compose.ui.graphics.Color, secondary: androidx.compose.ui.graphics.Color, onSecondary: androidx.compose.ui.graphics.Color, secondaryContainer: androidx.compose.ui.graphics.Color, onSecondaryContainer: androidx.compose.ui.graphics.Color, tertiary: androidx.compose.ui.graphics.Color, onTertiary: androidx.compose.ui.graphics.Color, tertiaryContainer: androidx.compose.ui.graphics.Color, onTertiaryContainer: androidx.compose.ui.graphics.Color, background: androidx.compose.ui.graphics.Color, onBackground: androidx.compose.ui.graphics.Color, surface: androidx.compose.ui.graphics.Color, onSurface: androidx.compose.ui.graphics.Color, surfaceVariant: androidx.compose.ui.graphics.Color, onSurfaceVariant: androidx.compose.ui.graphics.Color, surfaceTint: androidx.compose.ui.graphics.Color, inverseSurface: androidx.compose.ui.graphics.Color, inverseOnSurface: androidx.compose.ui.graphics.Color, error: androidx.compose.ui.graphics.Color, onError: androidx.compose.ui.graphics.Color, errorContainer: androidx.compose.ui.graphics.Color, onErrorContainer: androidx.compose.ui.graphics.Color, outline: androidx.compose.ui.graphics.Color, outlineVariant: androidx.compose.ui.graphics.Color, scrim: androidx.compose.ui.graphics.Color, surfaceBright: androidx.compose.ui.graphics.Color, surfaceDim: androidx.compose.ui.graphics.Color, surfaceContainer: androidx.compose.ui.graphics.Color, surfaceContainerHigh: androidx.compose.ui.graphics.Color, surfaceContainerHighest: androidx.compose.ui.graphics.Color, surfaceContainerLow: androidx.compose.ui.graphics.Color, surfaceContainerLowest: androidx.compose.ui.graphics.Color, primaryFixed: androidx.compose.ui.graphics.Color, primaryFixedDim: androidx.compose.ui.graphics.Color, onPrimaryFixed: androidx.compose.ui.graphics.Color, onPrimaryFixedVariant: androidx.compose.ui.graphics.Color, secondaryFixed: androidx.compose.ui.graphics.Color, secondaryFixedDim: androidx.compose.ui.graphics.Color, onSecondaryFixed: androidx.compose.ui.graphics.Color, onSecondaryFixedVariant: androidx.compose.ui.graphics.Color, tertiaryFixed: androidx.compose.ui.graphics.Color, tertiaryFixedDim: androidx.compose.ui.graphics.Color, onTertiaryFixed: androidx.compose.ui.graphics.Color, onTertiaryFixedVariant: androidx.compose.ui.graphics.Color): androidx.compose.material3.ColorScheme"""
+ ...
+
+def SearchBarColors__Color_Color(container_color: _t.Any, divider_color: _t.Any) -> SearchBarColors:
+ """Kotlin: androidx.compose.material3.SearchBarColors(containerColor: androidx.compose.ui.graphics.Color, dividerColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.SearchBarColors"""
+ ...
+
+def SearchBarColors__Color_Color_TextFieldColors(container_color: _t.Any, divider_color: _t.Any, input_field_colors: TextFieldColors) -> SearchBarColors:
+ """Kotlin: androidx.compose.material3.SearchBarColors(containerColor: androidx.compose.ui.graphics.Color, dividerColor: androidx.compose.ui.graphics.Color, inputFieldColors: androidx.compose.material3.TextFieldColors): androidx.compose.material3.SearchBarColors"""
+ ...
+
+def SwipeToDismissBoxState__SwipeToDismissBoxValue_Density_Boolean_Float(initial_value: SwipeToDismissBoxValue, density: _t.Any, confirm_value_change: _t.Callable[[SwipeToDismissBoxValue], bool] = ..., *, positional_threshold: _t.Callable[[float], float]) -> SwipeToDismissBoxState:
+ """Kotlin: androidx.compose.material3.SwipeToDismissBoxState(initialValue: androidx.compose.material3.SwipeToDismissBoxValue, density: androidx.compose.ui.unit.Density, confirmValueChange: kotlin.Function1, positionalThreshold: kotlin.Function1): androidx.compose.material3.SwipeToDismissBoxState"""
+ ...
+
+def SwipeToDismissBoxState__SwipeToDismissBoxValue_Float(initial_value: SwipeToDismissBoxValue, positional_threshold: _t.Callable[[float], float]) -> SwipeToDismissBoxState:
+ """Kotlin: androidx.compose.material3.SwipeToDismissBoxState(initialValue: androidx.compose.material3.SwipeToDismissBoxValue, positionalThreshold: kotlin.Function1): androidx.compose.material3.SwipeToDismissBoxState"""
+ ...
+
+def TopAppBarColors__Color_Color_Color_Color_Color(container_color: _t.Any, scrolled_container_color: _t.Any, navigation_icon_content_color: _t.Any, title_content_color: _t.Any, action_icon_content_color: _t.Any) -> TopAppBarColors:
+ """Kotlin: androidx.compose.material3.TopAppBarColors(containerColor: androidx.compose.ui.graphics.Color, scrolledContainerColor: androidx.compose.ui.graphics.Color, navigationIconContentColor: androidx.compose.ui.graphics.Color, titleContentColor: androidx.compose.ui.graphics.Color, actionIconContentColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.TopAppBarColors"""
+ ...
+
+def TopAppBarColors__Color_Color_Color_Color_Color_Color(container_color: _t.Any, scrolled_container_color: _t.Any, navigation_icon_content_color: _t.Any, title_content_color: _t.Any, action_icon_content_color: _t.Any, subtitle_content_color: _t.Any) -> TopAppBarColors:
+ """Kotlin: androidx.compose.material3.TopAppBarColors(containerColor: androidx.compose.ui.graphics.Color, scrolledContainerColor: androidx.compose.ui.graphics.Color, navigationIconContentColor: androidx.compose.ui.graphics.Color, titleContentColor: androidx.compose.ui.graphics.Color, actionIconContentColor: androidx.compose.ui.graphics.Color, subtitleContentColor: androidx.compose.ui.graphics.Color): androidx.compose.material3.TopAppBarColors"""
+ ...
+
+@_t.overload
+def AlertDialog(on_dismiss_request: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., properties: _t.Any = ..., *, content: _t.Callable[[], None]) -> None: ...
+@_t.overload
+def AlertDialog(on_dismiss_request: _t.Callable[[], None], confirm_button: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., dismiss_button: _t.Callable[[], None] | None = ..., icon: _t.Callable[[], None] | None = ..., title: _t.Callable[[], None] | None = ..., text: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., icon_content_color: _t.Any = ..., title_content_color: _t.Any = ..., text_content_color: _t.Any = ..., tonal_elevation: float = ..., properties: _t.Any = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def BottomAppBar(modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., content_padding: _t.Any = ..., window_insets: _t.Any = ..., scroll_behavior: BottomAppBarScrollBehavior | None = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None: ...
+@_t.overload
+def BottomAppBar(modifier: pythonx.compose.ui.Modifier = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., content_padding: _t.Any = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def BottomAppBar(actions: _t.Callable[[pythonx.compose.layout.RowScope], None], modifier: pythonx.compose.ui.Modifier = ..., floating_action_button: _t.Callable[[], None] | None = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., content_padding: _t.Any = ..., window_insets: _t.Any = ...) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def BottomAppBar(actions: _t.Callable[[pythonx.compose.layout.RowScope], None], modifier: pythonx.compose.ui.Modifier = ..., floating_action_button: _t.Callable[[], None] | None = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., content_padding: _t.Any = ..., window_insets: _t.Any = ..., scroll_behavior: BottomAppBarScrollBehavior | None = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def Card(modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ...
+@_t.overload
+def Card(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def Checkbox(checked: bool, on_checked_change: _t.Callable[[bool], None] | None, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: CheckboxColors = ..., interaction_source: _t.Any | None = ...) -> None: ...
+@_t.overload
+def Checkbox(checked: bool, on_checked_change: _t.Callable[[bool], None] | None, checkmark_stroke: _t.Any, outline_stroke: _t.Any, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: CheckboxColors = ..., interaction_source: _t.Any | None = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def CircularProgressIndicator(progress: float, modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., stroke_width: float = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ...) -> None: ...
+@_t.overload
+def CircularProgressIndicator(progress: _t.Callable[[], float], modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., stroke_width: float = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ..., gap_size: float = ...) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def CircularProgressIndicator(modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., stroke_width: float = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ..., gap_size: float = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def DismissibleDrawerSheet(drawer_state: DrawerState, modifier: pythonx.compose.ui.Modifier = ..., drawer_shape: pythonx.compose.ui.graphics.Shape = ..., drawer_container_color: _t.Any = ..., drawer_content_color: _t.Any = ..., drawer_tonal_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ...
+@_t.overload
+def DismissibleDrawerSheet(modifier: pythonx.compose.ui.Modifier = ..., drawer_shape: pythonx.compose.ui.graphics.Shape = ..., drawer_container_color: _t.Any = ..., drawer_content_color: _t.Any = ..., drawer_tonal_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def DockedSearchBar(query: str, on_query_change: _t.Callable[[str], None], on_search: _t.Callable[[str], None], active: bool, on_active_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ...
+@_t.overload
+def DockedSearchBar(input_field: _t.Callable[[], None], expanded: bool, on_expanded_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def ElevatedCard(modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ...
+@_t.overload
+def ElevatedCard(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def ExtendedFloatingActionButton(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., elevation: FloatingActionButtonElevation = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.RowScope], None]) -> None: ...
+@_t.overload
+def ExtendedFloatingActionButton(text: _t.Callable[[], None], icon: _t.Callable[[], None], on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., expanded: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., elevation: FloatingActionButtonElevation = ..., interaction_source: _t.Any | None = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def Icon(bitmap: _t.Any, content_description: str | None, modifier: pythonx.compose.ui.Modifier = ..., tint: _t.Any = ...) -> None: ...
+@_t.overload
+def Icon(image_vector: pythonx.compose.ui.graphics.vector.ImageVector, content_description: str | None, modifier: pythonx.compose.ui.Modifier = ..., tint: _t.Any = ...) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def Icon(painter: _t.Any, tint: pythonx.compose.ui.graphics.ColorProducer | None, content_description: str | None, modifier: pythonx.compose.ui.Modifier = ...) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def Icon(painter: _t.Any, content_description: str | None, modifier: pythonx.compose.ui.Modifier = ..., tint: _t.Any = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def LinearProgressIndicator(progress: float, modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ...) -> None: ...
+@_t.overload
+def LinearProgressIndicator(progress: _t.Callable[[], float], modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ..., gap_size: float = ..., draw_stop_indicator: _t.Callable[[_t.Any], None] = ...) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def LinearProgressIndicator(modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., track_color: _t.Any = ..., stroke_cap: _t.Any = ..., gap_size: float = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def ModalDrawerSheet(drawer_state: DrawerState, modifier: pythonx.compose.ui.Modifier = ..., drawer_shape: pythonx.compose.ui.graphics.Shape = ..., drawer_container_color: _t.Any = ..., drawer_content_color: _t.Any = ..., drawer_tonal_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ...
+@_t.overload
+def ModalDrawerSheet(modifier: pythonx.compose.ui.Modifier = ..., drawer_shape: pythonx.compose.ui.graphics.Shape = ..., drawer_container_color: _t.Any = ..., drawer_content_color: _t.Any = ..., drawer_tonal_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def OutlinedCard(modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., border: pythonx.compose.foundation.BorderStroke = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ...
+@_t.overload
+def OutlinedCard(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: CardColors = ..., elevation: CardElevation = ..., border: pythonx.compose.foundation.BorderStroke = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def OutlinedTextField(value: str, on_value_change: _t.Callable[[str], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label: _t.Callable[[], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., visual_transformation: _t.Any = ..., keyboard_options: _t.Any = ..., keyboard_actions: _t.Any = ..., single_line: bool = ..., max_lines: int = ..., min_lines: int = ..., interaction_source: _t.Any | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ...) -> None: ...
+@_t.overload
+def OutlinedTextField(state: pythonx.compose.foundation.text.input.TextFieldState, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label_position: TextFieldLabelPosition = ..., label: _t.Callable[[TextFieldLabelScope], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., input_transformation: pythonx.compose.foundation.text.input.InputTransformation | None = ..., output_transformation: pythonx.compose.foundation.text.input.OutputTransformation | None = ..., keyboard_options: _t.Any = ..., on_keyboard_action: pythonx.compose.foundation.text.input.KeyboardActionHandler | None = ..., line_limits: pythonx.compose.foundation.text.input.TextFieldLineLimits = ..., on_text_layout: _t.Callable[[_t.Any, _t.Callable[[], pythonx.compose.ui.text.TextLayoutResult | None]], None] | None = ..., scroll_state: pythonx.compose.foundation.ScrollState = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ...) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def OutlinedTextField(value: _t.Any, on_value_change: _t.Callable[[_t.Any], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label: _t.Callable[[], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., visual_transformation: _t.Any = ..., keyboard_options: _t.Any = ..., keyboard_actions: _t.Any = ..., single_line: bool = ..., max_lines: int = ..., min_lines: int = ..., interaction_source: _t.Any | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def RangeSlider(value: _t.Any, on_value_change: _t.Callable[[_t.Any], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., value_range: _t.Any = ..., steps: int = ..., on_value_change_finished: _t.Callable[[], None] | None = ..., colors: SliderColors = ...) -> None: ...
+@_t.overload
+def RangeSlider(value: _t.Any, on_value_change: _t.Callable[[_t.Any], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., value_range: _t.Any = ..., on_value_change_finished: _t.Callable[[], None] | None = ..., colors: SliderColors = ..., start_interaction_source: _t.Any = ..., end_interaction_source: _t.Any = ..., start_thumb: _t.Callable[[RangeSliderState], None] = ..., end_thumb: _t.Callable[[RangeSliderState], None] = ..., track: _t.Callable[[RangeSliderState], None] = ..., steps: int = ...) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def RangeSlider(state: RangeSliderState, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SliderColors = ..., start_interaction_source: _t.Any = ..., end_interaction_source: _t.Any = ..., start_thumb: _t.Callable[[RangeSliderState], None] = ..., end_thumb: _t.Callable[[RangeSliderState], None] = ..., track: _t.Callable[[RangeSliderState], None] = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def SearchBar(state: SearchBarState, input_field: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ...) -> None: ...
+@_t.overload
+def SearchBar(query: str, on_query_change: _t.Callable[[str], None], on_search: _t.Callable[[str], None], active: bool, on_active_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., window_insets: _t.Any = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def SearchBar(input_field: _t.Callable[[], None], expanded: bool, on_expanded_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: SearchBarColors = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., window_insets: _t.Any = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def SegmentedButton(receiver: MultiChoiceSegmentedButtonRowScope, /, checked: bool, on_checked_change: _t.Callable[[bool], None], shape: pythonx.compose.ui.graphics.Shape, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SegmentedButtonColors = ..., border: pythonx.compose.foundation.BorderStroke = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., icon: _t.Callable[[], None] = ..., *, label: _t.Callable[[], None]) -> None: ...
+@_t.overload
+def SegmentedButton(receiver: SingleChoiceSegmentedButtonRowScope, /, selected: bool, on_click: _t.Callable[[], None], shape: pythonx.compose.ui.graphics.Shape, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SegmentedButtonColors = ..., border: pythonx.compose.foundation.BorderStroke = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ..., icon: _t.Callable[[], None] = ..., *, label: _t.Callable[[], None]) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def Slider(value: float, on_value_change: _t.Callable[[float], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., value_range: _t.Any = ..., steps: int = ..., on_value_change_finished: _t.Callable[[], None] | None = ..., colors: SliderColors = ..., interaction_source: _t.Any = ...) -> None: ...
+@_t.overload
+def Slider(value: float, on_value_change: _t.Callable[[float], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., on_value_change_finished: _t.Callable[[], None] | None = ..., colors: SliderColors = ..., interaction_source: _t.Any = ..., steps: int = ..., thumb: _t.Callable[[SliderState], None] = ..., track: _t.Callable[[SliderState], None] = ..., value_range: _t.Any = ...) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def Slider(state: SliderState, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: SliderColors = ..., interaction_source: _t.Any = ..., thumb: _t.Callable[[SliderState], None] = ..., track: _t.Callable[[SliderState], None] = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def Snackbar(modifier: pythonx.compose.ui.Modifier = ..., action: _t.Callable[[], None] | None = ..., dismiss_action: _t.Callable[[], None] | None = ..., action_on_new_line: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., action_content_color: _t.Any = ..., dismiss_action_content_color: _t.Any = ..., *, content: _t.Callable[[], None]) -> None: ...
+@_t.overload
+def Snackbar(snackbar_data: SnackbarData, modifier: pythonx.compose.ui.Modifier = ..., action_on_new_line: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., container_color: _t.Any = ..., content_color: _t.Any = ..., action_color: _t.Any = ..., action_content_color: _t.Any = ..., dismiss_action_content_color: _t.Any = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def Surface(modifier: pythonx.compose.ui.Modifier = ..., shape: pythonx.compose.ui.graphics.Shape = ..., color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., *, content: _t.Callable[[], None]) -> None: ...
+@_t.overload
+def Surface(selected: bool, on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def Surface(checked: bool, on_checked_change: _t.Callable[[bool], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def Surface(on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., shape: pythonx.compose.ui.graphics.Shape = ..., color: _t.Any = ..., content_color: _t.Any = ..., tonal_elevation: float = ..., shadow_elevation: float = ..., border: pythonx.compose.foundation.BorderStroke | None = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[], None]) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def Tab(selected: bool, on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., selected_content_color: _t.Any = ..., unselected_content_color: _t.Any = ..., interaction_source: _t.Any | None = ..., *, content: _t.Callable[[pythonx.compose.layout.ColumnScope], None]) -> None: ...
+@_t.overload
+def Tab(selected: bool, on_click: _t.Callable[[], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., text: _t.Callable[[], None] | None = ..., icon: _t.Callable[[], None] | None = ..., selected_content_color: _t.Any = ..., unselected_content_color: _t.Any = ..., interaction_source: _t.Any | None = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def Text(text: _t.Any, modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., auto_size: _t.Any | None = ..., font_size: _t.Any = ..., font_style: _t.Any | None = ..., font_weight: _t.Any | None = ..., font_family: _t.Any | None = ..., letter_spacing: _t.Any = ..., text_decoration: _t.Any | None = ..., text_align: _t.Any | None = ..., line_height: _t.Any = ..., overflow: _t.Any = ..., soft_wrap: bool = ..., max_lines: int = ..., min_lines: int = ..., inline_content: _t.Any = ..., on_text_layout: _t.Callable[[pythonx.compose.ui.text.TextLayoutResult], None] = ..., style: _t.Any = ...) -> None: ...
+@_t.overload
+def Text(text: str, modifier: pythonx.compose.ui.Modifier = ..., color: _t.Any = ..., auto_size: _t.Any | None = ..., font_size: _t.Any = ..., font_style: _t.Any | None = ..., font_weight: _t.Any | None = ..., font_family: _t.Any | None = ..., letter_spacing: _t.Any = ..., text_decoration: _t.Any | None = ..., text_align: _t.Any | None = ..., line_height: _t.Any = ..., overflow: _t.Any = ..., soft_wrap: bool = ..., max_lines: int = ..., min_lines: int = ..., on_text_layout: _t.Callable[[pythonx.compose.ui.text.TextLayoutResult], None] | None = ..., style: _t.Any = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def TextField(value: str, on_value_change: _t.Callable[[str], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label: _t.Callable[[], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., visual_transformation: _t.Any = ..., keyboard_options: _t.Any = ..., keyboard_actions: _t.Any = ..., single_line: bool = ..., max_lines: int = ..., min_lines: int = ..., interaction_source: _t.Any | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ...) -> None: ...
+@_t.overload
+def TextField(state: pythonx.compose.foundation.text.input.TextFieldState, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label_position: TextFieldLabelPosition = ..., label: _t.Callable[[TextFieldLabelScope], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., input_transformation: pythonx.compose.foundation.text.input.InputTransformation | None = ..., output_transformation: pythonx.compose.foundation.text.input.OutputTransformation | None = ..., keyboard_options: _t.Any = ..., on_keyboard_action: pythonx.compose.foundation.text.input.KeyboardActionHandler | None = ..., line_limits: pythonx.compose.foundation.text.input.TextFieldLineLimits = ..., on_text_layout: _t.Callable[[_t.Any, _t.Callable[[], pythonx.compose.ui.text.TextLayoutResult | None]], None] | None = ..., scroll_state: pythonx.compose.foundation.ScrollState = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ..., content_padding: _t.Any = ..., interaction_source: _t.Any | None = ...) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def TextField(value: _t.Any, on_value_change: _t.Callable[[_t.Any], None], modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., read_only: bool = ..., text_style: _t.Any = ..., label: _t.Callable[[], None] | None = ..., placeholder: _t.Callable[[], None] | None = ..., leading_icon: _t.Callable[[], None] | None = ..., trailing_icon: _t.Callable[[], None] | None = ..., prefix: _t.Callable[[], None] | None = ..., suffix: _t.Callable[[], None] | None = ..., supporting_text: _t.Callable[[], None] | None = ..., is_error: bool = ..., visual_transformation: _t.Any = ..., keyboard_options: _t.Any = ..., keyboard_actions: _t.Any = ..., single_line: bool = ..., max_lines: int = ..., min_lines: int = ..., interaction_source: _t.Any | None = ..., shape: pythonx.compose.ui.graphics.Shape = ..., colors: TextFieldColors = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def TriStateCheckbox(state: _t.Any, on_click: _t.Callable[[], None] | None, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: CheckboxColors = ..., interaction_source: _t.Any | None = ...) -> None: ...
+@_t.overload
+def TriStateCheckbox(state: _t.Any, on_click: _t.Callable[[], None] | None, checkmark_stroke: _t.Any, outline_stroke: _t.Any, modifier: pythonx.compose.ui.Modifier = ..., enabled: bool = ..., colors: CheckboxColors = ..., interaction_source: _t.Any | None = ...) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def content_color_for(background_color: _t.Any) -> int: ...
+@_t.overload
+def content_color_for(receiver: ColorScheme, /, background_color: _t.Any) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def remember_date_picker_state(initial_selected_date: _t.Any | None, initial_displayed_month: _t.Any | None = ..., year_range: _t.Any = ..., initial_display_mode: _t.Any = ..., selectable_dates: SelectableDates = ...) -> DatePickerState: ...
+@_t.overload
+def remember_date_picker_state(initial_selected_date_millis: int | None = ..., initial_displayed_month_millis: int | None = ..., year_range: _t.Any = ..., initial_display_mode: _t.Any = ..., selectable_dates: SelectableDates = ...) -> DatePickerState: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def remember_date_range_picker_state(initial_selected_start_date: _t.Any | None, initial_selected_end_date: _t.Any | None, initial_displayed_month: _t.Any | None = ..., year_range: _t.Any = ..., initial_display_mode: _t.Any = ..., selectable_dates: SelectableDates = ...) -> DateRangePickerState: ...
+@_t.overload
+def remember_date_range_picker_state(initial_selected_start_date_millis: int | None = ..., initial_selected_end_date_millis: int | None = ..., initial_displayed_month_millis: int | None = ..., year_range: _t.Any = ..., initial_display_mode: _t.Any = ..., selectable_dates: SelectableDates = ...) -> DateRangePickerState: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def remember_swipe_to_dismiss_box_state(initial_value: SwipeToDismissBoxValue = ..., confirm_value_change: _t.Callable[[SwipeToDismissBoxValue], bool] = ..., positional_threshold: _t.Callable[[float], float] = ...) -> SwipeToDismissBoxState: ...
+@_t.overload
+def remember_swipe_to_dismiss_box_state(initial_value: SwipeToDismissBoxValue = ..., positional_threshold: _t.Callable[[float], float] = ...) -> SwipeToDismissBoxState: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def ripple(bounded: bool = ..., radius: float = ..., color: _t.Any = ...) -> pythonx.compose.foundation.IndicationNodeFactory: ...
+@_t.overload
+def ripple(color: pythonx.compose.ui.graphics.ColorProducer, bounded: bool = ..., radius: float = ...) -> pythonx.compose.foundation.IndicationNodeFactory: ... # type: ignore[overload-cannot-match]
+
+class AlertDialogDefaults:
+ """Kotlin: androidx.compose.material3.AlertDialogDefaults"""
+ TonalElevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.AlertDialogDefaults.TonalElevation(): androidx.compose.ui.unit.Dp"""
+
+class AssistChipDefaults:
+ """Kotlin: androidx.compose.material3.AssistChipDefaults"""
+ Height: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.AssistChipDefaults.Height(): androidx.compose.ui.unit.Dp"""
+ IconSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.AssistChipDefaults.IconSize(): androidx.compose.ui.unit.Dp"""
+
+class BottomAppBarDefaults:
+ """Kotlin: androidx.compose.material3.BottomAppBarDefaults"""
+ ContainerElevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.BottomAppBarDefaults.ContainerElevation(): androidx.compose.ui.unit.Dp"""
+ ContentPadding: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.BottomAppBarDefaults.ContentPadding(): androidx.compose.foundation.layout.PaddingValues"""
+
+class BottomSheetDefaults:
+ """Kotlin: androidx.compose.material3.BottomSheetDefaults"""
+ Elevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.BottomSheetDefaults.Elevation(): androidx.compose.ui.unit.Dp"""
+ SheetMaxWidth: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.BottomSheetDefaults.SheetMaxWidth(): androidx.compose.ui.unit.Dp"""
+ SheetPeekHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.BottomSheetDefaults.SheetPeekHeight(): androidx.compose.ui.unit.Dp"""
+
+class ButtonDefaults:
+ """Kotlin: androidx.compose.material3.ButtonDefaults"""
+ ButtonWithIconContentPadding: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ButtonDefaults.ButtonWithIconContentPadding(): androidx.compose.foundation.layout.PaddingValues"""
+ ContentPadding: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ButtonDefaults.ContentPadding(): androidx.compose.foundation.layout.PaddingValues"""
+ IconSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.ButtonDefaults.IconSize(): androidx.compose.ui.unit.Dp"""
+ IconSpacing: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.ButtonDefaults.IconSpacing(): androidx.compose.ui.unit.Dp"""
+ MinHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.ButtonDefaults.MinHeight(): androidx.compose.ui.unit.Dp"""
+ MinWidth: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.ButtonDefaults.MinWidth(): androidx.compose.ui.unit.Dp"""
+ TextButtonContentPadding: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ButtonDefaults.TextButtonContentPadding(): androidx.compose.foundation.layout.PaddingValues"""
+ TextButtonWithIconContentPadding: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ButtonDefaults.TextButtonWithIconContentPadding(): androidx.compose.foundation.layout.PaddingValues"""
+
+class CheckboxDefaults:
+ """Kotlin: androidx.compose.material3.CheckboxDefaults"""
+ StrokeWidth: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.CheckboxDefaults.StrokeWidth(): androidx.compose.ui.unit.Dp"""
+
+class DatePickerDefaults:
+ """Kotlin: androidx.compose.material3.DatePickerDefaults"""
+ AllDates: _t.ClassVar[SelectableDates]
+ """Kotlin: androidx.compose.material3.DatePickerDefaults.AllDates(): androidx.compose.material3.SelectableDates"""
+ TonalElevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.DatePickerDefaults.TonalElevation(): androidx.compose.ui.unit.Dp"""
+ YearAbbrMonthDaySkeleton: _t.ClassVar[str]
+ """Kotlin: androidx.compose.material3.DatePickerDefaults.YearAbbrMonthDaySkeleton(): kotlin.String"""
+ YearMonthSkeleton: _t.ClassVar[str]
+ """Kotlin: androidx.compose.material3.DatePickerDefaults.YearMonthSkeleton(): kotlin.String"""
+ YearMonthWeekdayDaySkeleton: _t.ClassVar[str]
+ """Kotlin: androidx.compose.material3.DatePickerDefaults.YearMonthWeekdayDaySkeleton(): kotlin.String"""
+ YearRange: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.DatePickerDefaults.YearRange(): kotlin.ranges.IntRange"""
+ @staticmethod
+ def date_formatter(year_selection_skeleton: str = ..., selected_date_skeleton: str = ..., selected_date_description_skeleton: str = ...) -> DatePickerFormatter:
+ """Kotlin: androidx.compose.material3.DatePickerDefaults.dateFormatter(yearSelectionSkeleton: kotlin.String, selectedDateSkeleton: kotlin.String, selectedDateDescriptionSkeleton: kotlin.String): androidx.compose.material3.DatePickerFormatter"""
+ ...
+
+class DisplayMode:
+ """Kotlin: androidx.compose.material3.DisplayMode"""
+ Input: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.DisplayMode.Input(): androidx.compose.material3.DisplayMode"""
+ Picker: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.DisplayMode.Picker(): androidx.compose.material3.DisplayMode"""
+
+class DividerDefaults:
+ """Kotlin: androidx.compose.material3.DividerDefaults"""
+ Thickness: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.DividerDefaults.Thickness(): androidx.compose.ui.unit.Dp"""
+
+class DrawerDefaults:
+ """Kotlin: androidx.compose.material3.DrawerDefaults"""
+ DismissibleDrawerElevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.DrawerDefaults.DismissibleDrawerElevation(): androidx.compose.ui.unit.Dp"""
+ MaximumDrawerWidth: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.DrawerDefaults.MaximumDrawerWidth(): androidx.compose.ui.unit.Dp"""
+ ModalDrawerElevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.DrawerDefaults.ModalDrawerElevation(): androidx.compose.ui.unit.Dp"""
+ PermanentDrawerElevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.DrawerDefaults.PermanentDrawerElevation(): androidx.compose.ui.unit.Dp"""
+
+class ExposedDropdownMenuAnchorType:
+ """Kotlin: androidx.compose.material3.ExposedDropdownMenuAnchorType"""
+ PrimaryEditable: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ExposedDropdownMenuAnchorType.PrimaryEditable(): androidx.compose.material3.ExposedDropdownMenuAnchorType"""
+ PrimaryNotEditable: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ExposedDropdownMenuAnchorType.PrimaryNotEditable(): androidx.compose.material3.ExposedDropdownMenuAnchorType"""
+ SecondaryEditable: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ExposedDropdownMenuAnchorType.SecondaryEditable(): androidx.compose.material3.ExposedDropdownMenuAnchorType"""
+
+class ExposedDropdownMenuDefaults:
+ """Kotlin: androidx.compose.material3.ExposedDropdownMenuDefaults"""
+ ItemContentPadding: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ExposedDropdownMenuDefaults.ItemContentPadding(): androidx.compose.foundation.layout.PaddingValues"""
+
+class FabPosition:
+ """Kotlin: androidx.compose.material3.FabPosition"""
+ Center: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.FabPosition.Center(): androidx.compose.material3.FabPosition"""
+ End: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.FabPosition.End(): androidx.compose.material3.FabPosition"""
+ EndOverlay: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.FabPosition.EndOverlay(): androidx.compose.material3.FabPosition"""
+ Start: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.FabPosition.Start(): androidx.compose.material3.FabPosition"""
+
+class FilterChipDefaults:
+ """Kotlin: androidx.compose.material3.FilterChipDefaults"""
+ Height: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.FilterChipDefaults.Height(): androidx.compose.ui.unit.Dp"""
+ IconSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.FilterChipDefaults.IconSize(): androidx.compose.ui.unit.Dp"""
+
+class FloatingActionButtonDefaults:
+ """Kotlin: androidx.compose.material3.FloatingActionButtonDefaults"""
+ LargeIconSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.FloatingActionButtonDefaults.LargeIconSize(): androidx.compose.ui.unit.Dp"""
+ @staticmethod
+ def bottom_app_bar_fab_elevation(default_elevation: float = ..., pressed_elevation: float = ..., focused_elevation: float = ..., hovered_elevation: float = ...) -> FloatingActionButtonElevation:
+ """Kotlin: androidx.compose.material3.FloatingActionButtonDefaults.bottomAppBarFabElevation(defaultElevation: androidx.compose.ui.unit.Dp, pressedElevation: androidx.compose.ui.unit.Dp, focusedElevation: androidx.compose.ui.unit.Dp, hoveredElevation: androidx.compose.ui.unit.Dp): androidx.compose.material3.FloatingActionButtonElevation"""
+ ...
+
+class InputChipDefaults:
+ """Kotlin: androidx.compose.material3.InputChipDefaults"""
+ AvatarSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.InputChipDefaults.AvatarSize(): androidx.compose.ui.unit.Dp"""
+ Height: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.InputChipDefaults.Height(): androidx.compose.ui.unit.Dp"""
+ IconSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.InputChipDefaults.IconSize(): androidx.compose.ui.unit.Dp"""
+
+class ListItemDefaults:
+ """Kotlin: androidx.compose.material3.ListItemDefaults"""
+ Elevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.ListItemDefaults.Elevation(): androidx.compose.ui.unit.Dp"""
+
+class MenuDefaults:
+ """Kotlin: androidx.compose.material3.MenuDefaults"""
+ DropdownMenuItemContentPadding: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.MenuDefaults.DropdownMenuItemContentPadding(): androidx.compose.foundation.layout.PaddingValues"""
+ ShadowElevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.MenuDefaults.ShadowElevation(): androidx.compose.ui.unit.Dp"""
+ TonalElevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.MenuDefaults.TonalElevation(): androidx.compose.ui.unit.Dp"""
+
+class ModalBottomSheetDefaults:
+ """Kotlin: androidx.compose.material3.ModalBottomSheetDefaults"""
+ properties: _t.ClassVar[ModalBottomSheetProperties]
+ """Kotlin: androidx.compose.material3.ModalBottomSheetDefaults.properties(): androidx.compose.material3.ModalBottomSheetProperties"""
+
+class NavigationBarDefaults:
+ """Kotlin: androidx.compose.material3.NavigationBarDefaults"""
+ Elevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.NavigationBarDefaults.Elevation(): androidx.compose.ui.unit.Dp"""
+
+class NavigationDrawerItemDefaults:
+ """Kotlin: androidx.compose.material3.NavigationDrawerItemDefaults"""
+ ItemPadding: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.NavigationDrawerItemDefaults.ItemPadding(): androidx.compose.foundation.layout.PaddingValues"""
+
+class NavigationItemIconPosition:
+ """Kotlin: androidx.compose.material3.NavigationItemIconPosition"""
+ Start: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.NavigationItemIconPosition.Start(): androidx.compose.material3.NavigationItemIconPosition"""
+ Top: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.NavigationItemIconPosition.Top(): androidx.compose.material3.NavigationItemIconPosition"""
+
+class OutlinedTextFieldDefaults:
+ """Kotlin: androidx.compose.material3.OutlinedTextFieldDefaults"""
+ FocusedBorderThickness: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.OutlinedTextFieldDefaults.FocusedBorderThickness(): androidx.compose.ui.unit.Dp"""
+ MinHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.OutlinedTextFieldDefaults.MinHeight(): androidx.compose.ui.unit.Dp"""
+ MinWidth: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.OutlinedTextFieldDefaults.MinWidth(): androidx.compose.ui.unit.Dp"""
+ UnfocusedBorderThickness: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.OutlinedTextFieldDefaults.UnfocusedBorderThickness(): androidx.compose.ui.unit.Dp"""
+ @staticmethod
+ def content_padding(start: float = ..., top: float = ..., end: float = ..., bottom: float = ...) -> _t.Any:
+ """Kotlin: androidx.compose.material3.OutlinedTextFieldDefaults.contentPadding(start: androidx.compose.ui.unit.Dp, top: androidx.compose.ui.unit.Dp, end: androidx.compose.ui.unit.Dp, bottom: androidx.compose.ui.unit.Dp): androidx.compose.foundation.layout.PaddingValues"""
+ ...
+
+class ProgressIndicatorDefaults:
+ """Kotlin: androidx.compose.material3.ProgressIndicatorDefaults"""
+ CircularDeterminateStrokeCap: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ProgressIndicatorDefaults.CircularDeterminateStrokeCap(): androidx.compose.ui.graphics.StrokeCap"""
+ CircularIndeterminateStrokeCap: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ProgressIndicatorDefaults.CircularIndeterminateStrokeCap(): androidx.compose.ui.graphics.StrokeCap"""
+ CircularIndicatorTrackGapSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.ProgressIndicatorDefaults.CircularIndicatorTrackGapSize(): androidx.compose.ui.unit.Dp"""
+ CircularStrokeWidth: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.ProgressIndicatorDefaults.CircularStrokeWidth(): androidx.compose.ui.unit.Dp"""
+ LinearIndicatorTrackGapSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.ProgressIndicatorDefaults.LinearIndicatorTrackGapSize(): androidx.compose.ui.unit.Dp"""
+ LinearStrokeCap: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ProgressIndicatorDefaults.LinearStrokeCap(): androidx.compose.ui.graphics.StrokeCap"""
+ LinearTrackStopIndicatorSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.ProgressIndicatorDefaults.LinearTrackStopIndicatorSize(): androidx.compose.ui.unit.Dp"""
+ @staticmethod
+ def draw_stop_indicator(draw_scope: _t.Any, stop_size: float, color: _t.Any, stroke_cap: _t.Any) -> None:
+ """Kotlin: androidx.compose.material3.ProgressIndicatorDefaults.drawStopIndicator(drawScope: androidx.compose.ui.graphics.drawscope.DrawScope, stopSize: androidx.compose.ui.unit.Dp, color: androidx.compose.ui.graphics.Color, strokeCap: androidx.compose.ui.graphics.StrokeCap): kotlin.Unit"""
+ ...
+
+class RippleDefaults:
+ """Kotlin: androidx.compose.material3.RippleDefaults"""
+ RippleAlpha: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.RippleDefaults.RippleAlpha(): androidx.compose.material.ripple.RippleAlpha"""
+
+class SearchBarDefaults:
+ """Kotlin: androidx.compose.material3.SearchBarDefaults"""
+ Elevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.SearchBarDefaults.Elevation(): androidx.compose.ui.unit.Dp"""
+ InputFieldHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.SearchBarDefaults.InputFieldHeight(): androidx.compose.ui.unit.Dp"""
+ ShadowElevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.SearchBarDefaults.ShadowElevation(): androidx.compose.ui.unit.Dp"""
+ TonalElevation: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.SearchBarDefaults.TonalElevation(): androidx.compose.ui.unit.Dp"""
+
+class SegmentedButtonDefaults:
+ """Kotlin: androidx.compose.material3.SegmentedButtonDefaults"""
+ BorderWidth: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.SegmentedButtonDefaults.BorderWidth(): androidx.compose.ui.unit.Dp"""
+ ContentPadding: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.SegmentedButtonDefaults.ContentPadding(): androidx.compose.foundation.layout.PaddingValues"""
+ IconSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.SegmentedButtonDefaults.IconSize(): androidx.compose.ui.unit.Dp"""
+ @staticmethod
+ def border_stroke(color: _t.Any, width: float = ...) -> pythonx.compose.foundation.BorderStroke:
+ """Kotlin: androidx.compose.material3.SegmentedButtonDefaults.borderStroke(color: androidx.compose.ui.graphics.Color, width: androidx.compose.ui.unit.Dp): androidx.compose.foundation.BorderStroke"""
+ ...
+
+class ShapeDefaults:
+ """Kotlin: androidx.compose.material3.ShapeDefaults"""
+ ExtraLarge: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ShapeDefaults.ExtraLarge(): androidx.compose.foundation.shape.CornerBasedShape"""
+ ExtraSmall: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ShapeDefaults.ExtraSmall(): androidx.compose.foundation.shape.CornerBasedShape"""
+ Large: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ShapeDefaults.Large(): androidx.compose.foundation.shape.CornerBasedShape"""
+ Medium: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ShapeDefaults.Medium(): androidx.compose.foundation.shape.CornerBasedShape"""
+ Small: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ShapeDefaults.Small(): androidx.compose.foundation.shape.CornerBasedShape"""
+
+class ShortNavigationBarArrangement:
+ """Kotlin: androidx.compose.material3.ShortNavigationBarArrangement"""
+ Centered: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ShortNavigationBarArrangement.Centered(): androidx.compose.material3.ShortNavigationBarArrangement"""
+ EqualWeight: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ShortNavigationBarArrangement.EqualWeight(): androidx.compose.material3.ShortNavigationBarArrangement"""
+
+class ShortNavigationBarDefaults:
+ """Kotlin: androidx.compose.material3.ShortNavigationBarDefaults"""
+ arrangement: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.ShortNavigationBarDefaults.arrangement(): androidx.compose.material3.ShortNavigationBarArrangement"""
+
+class SliderDefaults:
+ """Kotlin: androidx.compose.material3.SliderDefaults"""
+ TickSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.SliderDefaults.TickSize(): androidx.compose.ui.unit.Dp"""
+ TrackStopIndicatorSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.SliderDefaults.TrackStopIndicatorSize(): androidx.compose.ui.unit.Dp"""
+
+class SuggestionChipDefaults:
+ """Kotlin: androidx.compose.material3.SuggestionChipDefaults"""
+ Height: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.SuggestionChipDefaults.Height(): androidx.compose.ui.unit.Dp"""
+ IconSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.SuggestionChipDefaults.IconSize(): androidx.compose.ui.unit.Dp"""
+
+class SwitchDefaults:
+ """Kotlin: androidx.compose.material3.SwitchDefaults"""
+ IconSize: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.SwitchDefaults.IconSize(): androidx.compose.ui.unit.Dp"""
+
+class TabRowDefaults:
+ """Kotlin: androidx.compose.material3.TabRowDefaults"""
+ ScrollableTabRowEdgeStartPadding: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TabRowDefaults.ScrollableTabRowEdgeStartPadding(): androidx.compose.ui.unit.Dp"""
+ ScrollableTabRowMinTabWidth: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TabRowDefaults.ScrollableTabRowMinTabWidth(): androidx.compose.ui.unit.Dp"""
+
+class TextFieldDefaults:
+ """Kotlin: androidx.compose.material3.TextFieldDefaults"""
+ FocusedBorderThickness: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TextFieldDefaults.FocusedBorderThickness(): androidx.compose.ui.unit.Dp"""
+ FocusedIndicatorThickness: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TextFieldDefaults.FocusedIndicatorThickness(): androidx.compose.ui.unit.Dp"""
+ MinHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TextFieldDefaults.MinHeight(): androidx.compose.ui.unit.Dp"""
+ MinWidth: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TextFieldDefaults.MinWidth(): androidx.compose.ui.unit.Dp"""
+ UnfocusedBorderThickness: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TextFieldDefaults.UnfocusedBorderThickness(): androidx.compose.ui.unit.Dp"""
+ UnfocusedIndicatorThickness: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TextFieldDefaults.UnfocusedIndicatorThickness(): androidx.compose.ui.unit.Dp"""
+ @staticmethod
+ def content_padding_with_label(start: float = ..., end: float = ..., top: float = ..., bottom: float = ...) -> _t.Any:
+ """Kotlin: androidx.compose.material3.TextFieldDefaults.contentPaddingWithLabel(start: androidx.compose.ui.unit.Dp, end: androidx.compose.ui.unit.Dp, top: androidx.compose.ui.unit.Dp, bottom: androidx.compose.ui.unit.Dp): androidx.compose.foundation.layout.PaddingValues"""
+ ...
+ @staticmethod
+ def content_padding_without_label(start: float = ..., top: float = ..., end: float = ..., bottom: float = ...) -> _t.Any:
+ """Kotlin: androidx.compose.material3.TextFieldDefaults.contentPaddingWithoutLabel(start: androidx.compose.ui.unit.Dp, top: androidx.compose.ui.unit.Dp, end: androidx.compose.ui.unit.Dp, bottom: androidx.compose.ui.unit.Dp): androidx.compose.foundation.layout.PaddingValues"""
+ ...
+ @staticmethod
+ def outlined_text_field_padding(start: float = ..., top: float = ..., end: float = ..., bottom: float = ...) -> _t.Any:
+ """Kotlin: androidx.compose.material3.TextFieldDefaults.outlinedTextFieldPadding(start: androidx.compose.ui.unit.Dp, top: androidx.compose.ui.unit.Dp, end: androidx.compose.ui.unit.Dp, bottom: androidx.compose.ui.unit.Dp): androidx.compose.foundation.layout.PaddingValues"""
+ ...
+ @staticmethod
+ def text_field_with_label_padding(start: float = ..., end: float = ..., top: float = ..., bottom: float = ...) -> _t.Any:
+ """Kotlin: androidx.compose.material3.TextFieldDefaults.textFieldWithLabelPadding(start: androidx.compose.ui.unit.Dp, end: androidx.compose.ui.unit.Dp, top: androidx.compose.ui.unit.Dp, bottom: androidx.compose.ui.unit.Dp): androidx.compose.foundation.layout.PaddingValues"""
+ ...
+ @staticmethod
+ def text_field_without_label_padding(start: float = ..., top: float = ..., end: float = ..., bottom: float = ...) -> _t.Any:
+ """Kotlin: androidx.compose.material3.TextFieldDefaults.textFieldWithoutLabelPadding(start: androidx.compose.ui.unit.Dp, top: androidx.compose.ui.unit.Dp, end: androidx.compose.ui.unit.Dp, bottom: androidx.compose.ui.unit.Dp): androidx.compose.foundation.layout.PaddingValues"""
+ ...
+
+class TimePickerDialogDefaults:
+ """Kotlin: androidx.compose.material3.TimePickerDialogDefaults"""
+ MinHeightForTimePicker: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TimePickerDialogDefaults.MinHeightForTimePicker(): androidx.compose.ui.unit.Dp"""
+
+class TimePickerDisplayMode:
+ """Kotlin: androidx.compose.material3.TimePickerDisplayMode"""
+ Input: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TimePickerDisplayMode.Input(): androidx.compose.material3.TimePickerDisplayMode"""
+ Picker: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TimePickerDisplayMode.Picker(): androidx.compose.material3.TimePickerDisplayMode"""
+
+class TimePickerLayoutType:
+ """Kotlin: androidx.compose.material3.TimePickerLayoutType"""
+ Horizontal: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TimePickerLayoutType.Horizontal(): androidx.compose.material3.TimePickerLayoutType"""
+ Vertical: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TimePickerLayoutType.Vertical(): androidx.compose.material3.TimePickerLayoutType"""
+
+class TimePickerSelectionMode:
+ """Kotlin: androidx.compose.material3.TimePickerSelectionMode"""
+ Hour: _t.ClassVar[int]
+ """Kotlin: androidx.compose.material3.TimePickerSelectionMode.Hour(): androidx.compose.material3.TimePickerSelectionMode"""
+ Minute: _t.ClassVar[int]
+ """Kotlin: androidx.compose.material3.TimePickerSelectionMode.Minute(): androidx.compose.material3.TimePickerSelectionMode"""
+
+class TooltipAnchorPosition:
+ """Kotlin: androidx.compose.material3.TooltipAnchorPosition"""
+ Above: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TooltipAnchorPosition.Above(): androidx.compose.material3.TooltipAnchorPosition"""
+ Below: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TooltipAnchorPosition.Below(): androidx.compose.material3.TooltipAnchorPosition"""
+ End: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TooltipAnchorPosition.End(): androidx.compose.material3.TooltipAnchorPosition"""
+ Left: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TooltipAnchorPosition.Left(): androidx.compose.material3.TooltipAnchorPosition"""
+ Right: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TooltipAnchorPosition.Right(): androidx.compose.material3.TooltipAnchorPosition"""
+ Start: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TooltipAnchorPosition.Start(): androidx.compose.material3.TooltipAnchorPosition"""
+
+class TooltipDefaults:
+ """Kotlin: androidx.compose.material3.TooltipDefaults"""
+ @staticmethod
+ def caret_shape__0() -> DefaultTooltipCaretShape:
+ """Kotlin: androidx.compose.material3.TooltipDefaults.caretShape(): androidx.compose.material3.DefaultTooltipCaretShape"""
+ ...
+ @staticmethod
+ def caret_shape__DpSize(caret_size: _t.Any) -> pythonx.compose.ui.graphics.Shape:
+ """Kotlin: androidx.compose.material3.TooltipDefaults.caretShape(caretSize: androidx.compose.ui.unit.DpSize): androidx.compose.ui.graphics.Shape"""
+ ...
+ caret_size: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TooltipDefaults.caretSize(): androidx.compose.ui.unit.DpSize"""
+ plain_tooltip_max_width: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TooltipDefaults.plainTooltipMaxWidth(): androidx.compose.ui.unit.Dp"""
+ rich_tooltip_max_width: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TooltipDefaults.richTooltipMaxWidth(): androidx.compose.ui.unit.Dp"""
+ @staticmethod
+ @_t.overload
+ def caret_shape() -> DefaultTooltipCaretShape: ...
+ @staticmethod
+ @_t.overload
+ def caret_shape(caret_size: _t.Any) -> pythonx.compose.ui.graphics.Shape: ... # type: ignore[overload-cannot-match]
+
+class TopAppBarDefaults:
+ """Kotlin: androidx.compose.material3.TopAppBarDefaults"""
+ LargeAppBarCollapsedHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TopAppBarDefaults.LargeAppBarCollapsedHeight(): androidx.compose.ui.unit.Dp"""
+ LargeAppBarExpandedHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TopAppBarDefaults.LargeAppBarExpandedHeight(): androidx.compose.ui.unit.Dp"""
+ LargeFlexibleAppBarWithSubtitleExpandedHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TopAppBarDefaults.LargeFlexibleAppBarWithSubtitleExpandedHeight(): androidx.compose.ui.unit.Dp"""
+ LargeFlexibleAppBarWithoutSubtitleExpandedHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TopAppBarDefaults.LargeFlexibleAppBarWithoutSubtitleExpandedHeight(): androidx.compose.ui.unit.Dp"""
+ MediumAppBarCollapsedHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TopAppBarDefaults.MediumAppBarCollapsedHeight(): androidx.compose.ui.unit.Dp"""
+ MediumAppBarExpandedHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TopAppBarDefaults.MediumAppBarExpandedHeight(): androidx.compose.ui.unit.Dp"""
+ MediumFlexibleAppBarWithSubtitleExpandedHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TopAppBarDefaults.MediumFlexibleAppBarWithSubtitleExpandedHeight(): androidx.compose.ui.unit.Dp"""
+ MediumFlexibleAppBarWithoutSubtitleExpandedHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TopAppBarDefaults.MediumFlexibleAppBarWithoutSubtitleExpandedHeight(): androidx.compose.ui.unit.Dp"""
+ TopAppBarExpandedHeight: _t.ClassVar[float]
+ """Kotlin: androidx.compose.material3.TopAppBarDefaults.TopAppBarExpandedHeight(): androidx.compose.ui.unit.Dp"""
+
+class TopAppBarState:
+ """Kotlin: androidx.compose.material3.TopAppBarState"""
+ Saver: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.material3.TopAppBarState.Saver(): androidx.compose.runtime.saveable.Saver"""
+
+class VerticalDragHandleDefaults:
+ """Kotlin: androidx.compose.material3.VerticalDragHandleDefaults"""
+ @staticmethod
+ def sizes__0() -> DragHandleSizes:
+ """Kotlin: androidx.compose.material3.VerticalDragHandleDefaults.sizes(): androidx.compose.material3.DragHandleSizes"""
+ ...
+ @staticmethod
+ def sizes__DpSize_DpSize_DpSize(size: _t.Any = ..., pressed_size: _t.Any = ..., dragged_size: _t.Any = ...) -> DragHandleSizes:
+ """Kotlin: androidx.compose.material3.VerticalDragHandleDefaults.sizes(size: androidx.compose.ui.unit.DpSize, pressedSize: androidx.compose.ui.unit.DpSize, draggedSize: androidx.compose.ui.unit.DpSize): androidx.compose.material3.DragHandleSizes"""
+ ...
+ @staticmethod
+ @_t.overload
+ def sizes() -> DragHandleSizes: ...
+ @staticmethod
+ @_t.overload
+ def sizes(size: _t.Any = ..., pressed_size: _t.Any = ..., dragged_size: _t.Any = ...) -> DragHandleSizes: ... # type: ignore[overload-cannot-match]
+
+class WideNavigationRailDefaults:
+ """Kotlin: androidx.compose.material3.WideNavigationRailDefaults"""
+ ModalExpandedProperties: _t.ClassVar[ModalWideNavigationRailProperties]
+ """Kotlin: androidx.compose.material3.WideNavigationRailDefaults.ModalExpandedProperties(): androidx.compose.material3.ModalWideNavigationRailProperties"""
+ arrangement: _t.ClassVar[pythonx.compose.layout.Arrangement.Vertical]
+ """Kotlin: androidx.compose.material3.WideNavigationRailDefaults.arrangement(): androidx.compose.foundation.layout.Arrangement.Vertical"""
+
+class WideNavigationRailItemDefaults:
+ """Kotlin: androidx.compose.material3.WideNavigationRailItemDefaults"""
+ @staticmethod
+ def icon_position_for(rail_expanded: bool) -> _t.Any:
+ """Kotlin: androidx.compose.material3.WideNavigationRailItemDefaults.iconPositionFor(railExpanded: kotlin.Boolean): androidx.compose.material3.NavigationItemIconPosition"""
+ ...
diff --git a/pythonx/compose/material3/badge.py b/pythonx/compose/material3/badge.py
deleted file mode 100644
index 8d05049..0000000
--- a/pythonx/compose/material3/badge.py
+++ /dev/null
@@ -1,44 +0,0 @@
-from pythonx.compose.runtime import Composable
-
-from androidx.compose.material3 import BadgeKt
-
-@Composable
-class Badge(Composable):
- """ M3 badge """
-
- @classmethod
- def compose(
- cls,
- modifier,
- container_color,
- content_color,
- content
- ):
- getattr(BadgeKt, "Badge-eopBjH0")(
- modifier=modifier,
- containerColor=container_color,
- contentColor=content_color,
- content=content,
- c=cls.composer,
- changed=1
- )
-
-
-@Composable
-class BadgedBox(Composable):
- """ M3 badged box """
-
- @classmethod
- def compose(
- cls,
- badge,
- modifier,
- content
- ):
- BadgeKt.BadgedBox(
- badge=badge,
- modifier=modifier,
- content=content,
- c=cls.composer,
- changed=1
- )
\ No newline at end of file
diff --git a/pythonx/compose/material3/buttons.py b/pythonx/compose/material3/buttons.py
deleted file mode 100644
index 5b04d66..0000000
--- a/pythonx/compose/material3/buttons.py
+++ /dev/null
@@ -1,295 +0,0 @@
-from pythonx.compose.runtime import Composable
-
-from androidx.compose.material3 import ButtonKt
-
-__COMPILED_CODE__ = None
-Unit = None
-
-class Button(Composable):
- """ M3 filled button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = ButtonKt.Button
- except Exception:
- for name, obj in ButtonKt.__dict__.items():
- if name.startswith("Button-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("Button is cannot be found")
-
- def compose(
- self,
- on_click,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- elevation=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- content_padding=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- elevation=elevation,
- border=border,
- contentPadding=content_padding,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- onClick=on_click,
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class ElevatedButton(Composable):
- """ M3 elevated button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = ButtonKt.ElevatedButton
- except Exception:
- for name, obj in ButtonKt.__dict__.items():
- if name.startswith("ElevatedButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("ElevatedButton is cannot be found")
-
- def compose(
- self,
- on_click,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- elevation=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- content_padding=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- elevation=elevation,
- border=border,
- contentPadding=content_padding,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- onClick=on_click,
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class FilledTonalButton(Composable):
- """ M3 filled tonal button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = ButtonKt.FilledTonalButton
- except Exception:
- for name, obj in ButtonKt.__dict__.items():
- if name.startswith("FilledTonalButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("FilledTonalButton is cannot be found")
-
- def compose(
- self,
- on_click,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- elevation=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- content_padding=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- elevation=elevation,
- border=border,
- contentPadding=content_padding,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- onClick=on_click,
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class OutlinedButton(Composable):
- """ M3 outlined button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = ButtonKt.OutlinedButton
- except Exception:
- for name, obj in ButtonKt.__dict__.items():
- if name.startswith("OutlinedButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("OutlinedButton is cannot be found")
-
- def compose(
- self,
- on_click,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- elevation=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- content_padding=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- elevation=elevation,
- border=border,
- contentPadding=content_padding,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- onClick=on_click,
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class TextButton(Composable):
- """ M3 text button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = ButtonKt.TextButton
- except Exception:
- for name, obj in ButtonKt.__dict__.items():
- if name.startswith("TextButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("TextButton is cannot be found")
-
- def compose(
- self,
- on_click,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- elevation=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- content_padding=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- elevation=elevation,
- border=border,
- contentPadding=content_padding,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- onClick=on_click,
- **kwargs,
- c=self.composer,
- changed=1
- )
diff --git a/pythonx/compose/material3/cards.py b/pythonx/compose/material3/cards.py
deleted file mode 100644
index c81182e..0000000
--- a/pythonx/compose/material3/cards.py
+++ /dev/null
@@ -1,153 +0,0 @@
-from pythonx.compose.runtime import Composable
-
-from androidx.compose.material3 import CardKt
-
-__COMPILED_CODE__ = None
-Unit = None
-
-class Card(Composable):
- """ M3 filled card """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = CardKt.Card
- except Exception:
- for name, obj in CardKt.__dict__.items():
- if name.startswith("Card-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("Card is cannot be found")
-
- def compose(
- self,
- modifier=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- elevation=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- shape=shape,
- colors=colors,
- elevation=elevation,
- border=border,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class ElevatedCard(Composable):
- """ M3 elevated card """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = CardKt.ElevatedCard
- except Exception:
- for name, obj in CardKt.__dict__.items():
- if name.startswith("ElevatedCard-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("ElevatedCard is cannot be found")
-
- def compose(
- self,
- modifier=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- elevation=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- shape=shape,
- colors=colors,
- elevation=elevation,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class OutlinedCard(Composable):
- """ M3 outlined card """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = CardKt.OutlinedCard
- except Exception:
- for name, obj in CardKt.__dict__.items():
- if name.startswith("OutlinedCard-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("OutlinedCard is cannot be found")
-
- def compose(
- self,
- modifier=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- elevation=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- shape=shape,
- colors=colors,
- elevation=elevation,
- border=border,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
\ No newline at end of file
diff --git a/pythonx/compose/material3/checkbox.py b/pythonx/compose/material3/checkbox.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/color_scheme.py b/pythonx/compose/material3/color_scheme.py
deleted file mode 100644
index 934d65e..0000000
--- a/pythonx/compose/material3/color_scheme.py
+++ /dev/null
@@ -1,342 +0,0 @@
-from pythonx.compose.runtime import Composable
-
-from androidx.compose.material3 import ColorSchemeKt
-from androidx.compose.material3 import ColorScheme
-
-__COMPILED_CODE__ = None
-Unit = None
-
-class ColorScheme(Composable):
- """ M3 color scheme """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = ColorScheme
- except Exception:
- for name, obj in ColorSchemeKt.__dict__.items():
- if name.startswith("ColorScheme-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("ColorScheme is cannot be found")
-
- def compose(
- self,
- primary=__COMPILED_CODE__,
- on_primary=__COMPILED_CODE__,
- primary_container=__COMPILED_CODE__,
- on_primary_container=__COMPILED_CODE__,
- inverse_primary=__COMPILED_CODE__,
- secondary=__COMPILED_CODE__,
- on_secondary=__COMPILED_CODE__,
- secondary_container=__COMPILED_CODE__,
- on_secondary_container=__COMPILED_CODE__,
- tertiary=__COMPILED_CODE__,
- on_tertiary=__COMPILED_CODE__,
- tertiary_container=__COMPILED_CODE__,
- on_tertiary_container=__COMPILED_CODE__,
- background=__COMPILED_CODE__,
- on_background=__COMPILED_CODE__,
- surface=__COMPILED_CODE__,
- on_surface=__COMPILED_CODE__,
- surface_variant=__COMPILED_CODE__,
- on_surface_variant=__COMPILED_CODE__,
- surface_tint=__COMPILED_CODE__,
- inverse_surface=__COMPILED_CODE__,
- inverse_on_surface=__COMPILED_CODE__,
- error=__COMPILED_CODE__,
- on_error=__COMPILED_CODE__,
- error_container=__COMPILED_CODE__,
- on_error_container=__COMPILED_CODE__,
- outline=__COMPILED_CODE__,
- outline_variant=__COMPILED_CODE__,
- scrim=__COMPILED_CODE__,
- surface_bright=__COMPILED_CODE__,
- surface_dim=__COMPILED_CODE__,
- surface_container=__COMPILED_CODE__,
- surface_container_high=__COMPILED_CODE__,
- surface_container_highest=__COMPILED_CODE__,
- surface_container_low=__COMPILED_CODE__,
- surface_container_lowest=__COMPILED_CODE__,
- ):
- kwargs = { key: value for key, value in dict(
- primary=primary,
- onPrimary=on_primary,
- primaryContainer=primary_container,
- onPrimaryContainer=on_primary_container,
- inversePrimary=inverse_primary,
- secondary=secondary,
- onSecondary=on_secondary,
- secondaryContainer=secondary_container,
- onSecondaryContainer=on_secondary_container,
- tertiary=tertiary,
- onTertiary=on_tertiary,
- tertiaryContainer=tertiary_container,
- onTertiaryContainer=on_tertiary_container,
- background=background,
- onBackground=on_background,
- surface=surface,
- onSurface=on_surface,
- surfaceVariant=surface_variant,
- onSurfaceVariant=on_surface_variant,
- surfaceTint=surface_tint,
- inverseSurface=inverse_surface,
- inverseOnSurface=inverse_on_surface,
- error=error,
- onError=on_error,
- errorContainer=error_container,
- onErrorContainer=on_error_container,
- outline=outline,
- outlineVariant=outline_variant,
- scrim=scrim,
- surfaceBright=surface_bright,
- surfaceDim=surface_dim,
- surfaceContainer=surface_container,
- surfaceContainerHigh=surface_container_high,
- surfaceContainerHighest=surface_container_highest,
- surfaceContainerLow=surface_container_low,
- surfaceContainerLowest=surface_container_lowest
-
-
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class lightColorScheme(Composable):
- """ M3 light color scheme """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = ColorSchemeKt.lightColorScheme
- except Exception:
- for name, obj in ColorSchemeKt.__dict__.items():
- if name.startswith("lightColorScheme-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("lightColorScheme is cannot be found")
-
- def compose(
- self,
- primary=__COMPILED_CODE__,
- on_primary=__COMPILED_CODE__,
- primary_container=__COMPILED_CODE__,
- on_primary_container=__COMPILED_CODE__,
- inverse_primary=__COMPILED_CODE__,
- secondary=__COMPILED_CODE__,
- on_secondary=__COMPILED_CODE__,
- secondary_container=__COMPILED_CODE__,
- on_secondary_container=__COMPILED_CODE__,
- tertiary=__COMPILED_CODE__,
- on_tertiary=__COMPILED_CODE__,
- tertiary_container=__COMPILED_CODE__,
- on_tertiary_container=__COMPILED_CODE__,
- background=__COMPILED_CODE__,
- on_background=__COMPILED_CODE__,
- surface=__COMPILED_CODE__,
- on_surface=__COMPILED_CODE__,
- surface_variant=__COMPILED_CODE__,
- on_surface_variant=__COMPILED_CODE__,
- surface_tint=__COMPILED_CODE__,
- inverse_surface=__COMPILED_CODE__,
- inverse_on_surface=__COMPILED_CODE__,
- error=__COMPILED_CODE__,
- on_error=__COMPILED_CODE__,
- error_container=__COMPILED_CODE__,
- on_error_container=__COMPILED_CODE__,
- outline=__COMPILED_CODE__,
- outline_variant=__COMPILED_CODE__,
- scrim=__COMPILED_CODE__,
- surface_bright=__COMPILED_CODE__,
- surface_dim=__COMPILED_CODE__,
- surface_container=__COMPILED_CODE__,
- surface_container_high=__COMPILED_CODE__,
- surface_container_highest=__COMPILED_CODE__,
- surface_container_low=__COMPILED_CODE__,
- surface_container_lowest=__COMPILED_CODE__,
- ):
- kwargs = { key: value for key, value in dict(
- primary=primary,
- onPrimary=on_primary,
- primaryContainer=primary_container,
- onPrimaryContainer=on_primary_container,
- inversePrimary=inverse_primary,
- secondary=secondary,
- onSecondary=on_secondary,
- secondaryContainer=secondary_container,
- onSecondaryContainer=on_secondary_container,
- tertiary=tertiary,
- onTertiary=on_tertiary,
- tertiaryContainer=tertiary_container,
- onTertiaryContainer=on_tertiary_container,
- background=background,
- onBackground=on_background,
- surface=surface,
- onSurface=on_surface,
- surfaceVariant=surface_variant,
- onSurfaceVariant=on_surface_variant,
- surfaceTint=surface_tint,
- inverseSurface=inverse_surface,
- inverseOnSurface=inverse_on_surface,
- error=error,
- onError=on_error,
- errorContainer=error_container,
- onErrorContainer=on_error_container,
- outline=outline,
- outlineVariant=outline_variant,
- scrim=scrim,
- surfaceBright=surface_bright,
- surfaceDim=surface_dim,
- surfaceContainer=surface_container,
- surfaceContainerHigh=surface_container_high,
- surfaceContainerHighest=surface_container_highest,
- surfaceContainerLow=surface_container_low,
- surfaceContainerLowest=surface_container_lowest
-
-
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class darkColorScheme(Composable):
- """ M3 dark color scheme """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = ColorSchemeKt.darkColorScheme
- except Exception:
- for name, obj in ColorSchemeKt.__dict__.items():
- if name.startswith("darkColorScheme-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("darkColorScheme is cannot be found")
-
- def compose(
- self,
- primary=__COMPILED_CODE__,
- on_primary=__COMPILED_CODE__,
- primary_container=__COMPILED_CODE__,
- on_primary_container=__COMPILED_CODE__,
- inverse_primary=__COMPILED_CODE__,
- secondary=__COMPILED_CODE__,
- on_secondary=__COMPILED_CODE__,
- secondary_container=__COMPILED_CODE__,
- on_secondary_container=__COMPILED_CODE__,
- tertiary=__COMPILED_CODE__,
- on_tertiary=__COMPILED_CODE__,
- tertiary_container=__COMPILED_CODE__,
- on_tertiary_container=__COMPILED_CODE__,
- background=__COMPILED_CODE__,
- on_background=__COMPILED_CODE__,
- surface=__COMPILED_CODE__,
- on_surface=__COMPILED_CODE__,
- surface_variant=__COMPILED_CODE__,
- on_surface_variant=__COMPILED_CODE__,
- surface_tint=__COMPILED_CODE__,
- inverse_surface=__COMPILED_CODE__,
- inverse_on_surface=__COMPILED_CODE__,
- error=__COMPILED_CODE__,
- on_error=__COMPILED_CODE__,
- error_container=__COMPILED_CODE__,
- on_error_container=__COMPILED_CODE__,
- outline=__COMPILED_CODE__,
- outline_variant=__COMPILED_CODE__,
- scrim=__COMPILED_CODE__,
- surface_bright=__COMPILED_CODE__,
- surface_dim=__COMPILED_CODE__,
- surface_container=__COMPILED_CODE__,
- surface_container_high=__COMPILED_CODE__,
- surface_container_highest=__COMPILED_CODE__,
- surface_container_low=__COMPILED_CODE__,
- surface_container_lowest=__COMPILED_CODE__,
- ):
- kwargs = { key: value for key, value in dict(
- primary=primary,
- onPrimary=on_primary,
- primaryContainer=primary_container,
- onPrimaryContainer=on_primary_container,
- inversePrimary=inverse_primary,
- secondary=secondary,
- onSecondary=on_secondary,
- secondaryContainer=secondary_container,
- onSecondaryContainer=on_secondary_container,
- tertiary=tertiary,
- onTertiary=on_tertiary,
- tertiaryContainer=tertiary_container,
- onTertiaryContainer=on_tertiary_container,
- background=background,
- onBackground=on_background,
- surface=surface,
- onSurface=on_surface,
- surfaceVariant=surface_variant,
- onSurfaceVariant=on_surface_variant,
- surfaceTint=surface_tint,
- inverseSurface=inverse_surface,
- inverseOnSurface=inverse_on_surface,
- error=error,
- onError=on_error,
- errorContainer=error_container,
- onErrorContainer=on_error_container,
- outline=outline,
- outlineVariant=outline_variant,
- scrim=scrim,
- surfaceBright=surface_bright,
- surfaceDim=surface_dim,
- surfaceContainer=surface_container,
- surfaceContainerHigh=surface_container_high,
- surfaceContainerHighest=surface_container_highest,
- surfaceContainerLow=surface_container_low,
- surfaceContainerLowest=surface_container_lowest
-
-
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
\ No newline at end of file
diff --git a/pythonx/compose/material3/date_picker.py b/pythonx/compose/material3/date_picker.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/dialogs.py b/pythonx/compose/material3/dialogs.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/dividers.py b/pythonx/compose/material3/dividers.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/dynamic_color.py b/pythonx/compose/material3/dynamic_color.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/extended_fab.py b/pythonx/compose/material3/extended_fab.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/fab.py b/pythonx/compose/material3/fab.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/icon.py b/pythonx/compose/material3/icon.py
deleted file mode 100644
index 08dd46b..0000000
--- a/pythonx/compose/material3/icon.py
+++ /dev/null
@@ -1,53 +0,0 @@
-from pythonx.compose.runtime import Composable
-
-from androidx.compose.material3 import IconKt
-
-__COMPILED_CODE__ = None
-Unit = None
-
-class Icon(Composable):
- """ M3 icon """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = IconKt.Icon
- except Exception:
- for name, obj in IconKt.__dict__.items():
- if name.startswith("Icon-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("Icon is cannot be found")
-
- def compose(
- self,
- bitmap=__COMPILED_CODE__,
- content_description=__COMPILED_CODE__,
- modifier=__COMPILED_CODE__,
- tint=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- bitmap=bitmap,
- contentDescription=content_description,
- modifier=modifier,
- tint=tint,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
\ No newline at end of file
diff --git a/pythonx/compose/material3/icon_button.py b/pythonx/compose/material3/icon_button.py
deleted file mode 100644
index a50a9ba..0000000
--- a/pythonx/compose/material3/icon_button.py
+++ /dev/null
@@ -1,441 +0,0 @@
-from pythonx.compose.runtime import Composable
-
-from androidx.compose.material3 import IconButtonKt
-
-__COMPILED_CODE__ = None
-Unit = None
-
-class IconButton(Composable):
- """ M3 standard icon button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = IconButtonKt.IconButton
- except Exception:
- for name, obj in IconButtonKt.__dict__.items():
- if name.startswith("IconButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("IconButton is cannot be found")
-
- def compose(
- self,
- on_click,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- elevation=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- content_padding=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- elevation=elevation,
- border=border,
- contentPadding=content_padding,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- onClick=on_click,
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class IconToggleButton(Composable):
- """ M3 standard icon toggle button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = IconButtonKt.IconToggleButton
- except Exception:
- for name, obj in IconButtonKt.__dict__.items():
- if name.startswith("IconToggleButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("IconToggleButton is cannot be found")
-
- def compose(
- self,
- checked=__COMPILED_CODE__,
- on_checked_change=__COMPILED_CODE__,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- checked=checked,
- onCheckedChange=on_checked_change,
- modifier=modifier,
- enabled=enabled,
- colors=colors,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class FilledIconButton(Composable):
- """ M3 filled icon button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = IconButtonKt.FilledIconButton
- except Exception:
- for name, obj in IconButtonKt.__dict__.items():
- if name.startswith("FilledIconButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("FilledIconButton is cannot be found")
-
- def compose(
- self,
- on_click,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- onClick=on_click,
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class FilledIconToggleButton(Composable):
- """ M3 filled icon toggle button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = IconButtonKt.FilledIconToggleButton
- except Exception:
- for name, obj in IconButtonKt.__dict__.items():
- if name.startswith("FilledIconToggleButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("FilledIconToggleButton is cannot be found")
-
- def compose(
- self,
- checked=__COMPILED_CODE__,
- on_checked_change=__COMPILED_CODE__,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- checked=checked,
- onCheckedChange=on_checked_change,
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class FilledTonalIconButton(Composable):
- """ M3 filled tonal icon button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = IconButtonKt.FilledTonalIconButton
- except Exception:
- for name, obj in IconButtonKt.__dict__.items():
- if name.startswith("FilledTonalIconButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("FilledTonalIconButton is cannot be found")
-
- def compose(
- self,
- on_click,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- onClick=on_click,
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class FilledTonalIconToggleButton(Composable):
- """ M3 filled tonal icon toggle button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = IconButtonKt.FilledTonalIconToggleButton
- except Exception:
- for name, obj in IconButtonKt.__dict__.items():
- if name.startswith("FilledTonalIconToggleButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("FilledTonalIconToggleButton is cannot be found")
-
- def compose(
- self,
- on_click,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- elevation=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- content_padding=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- elevation=elevation,
- border=border,
- contentPadding=content_padding,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- onClick=on_click,
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class OutlinedIconButton(Composable):
- """ M3 outlined icon button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = IconButtonKt.OutlinedIconButton
- except Exception:
- for name, obj in IconButtonKt.__dict__.items():
- if name.startswith("OutlinedIconButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("OutlinedIconButton is cannot be found")
-
- def compose(
- self,
- on_click,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- border=border,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- onClick=on_click,
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class OutlinedIconToggleButton(Composable):
- """ M3 outlined icon toggle button """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = IconButtonKt.OutlinedIconToggleButton
- except Exception:
- for name, obj in IconButtonKt.__dict__.items():
- if name.startswith("OutlinedIconToggleButton-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("OutlinedIconToggleButton is cannot be found")
-
- def compose(
- self,
- checked=__COMPILED_CODE__,
- on_checked_change=__COMPILED_CODE__,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- checked=checked,
- onCheckedChange=on_checked_change,
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- border=border,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
\ No newline at end of file
diff --git a/pythonx/compose/material3/lists.py b/pythonx/compose/material3/lists.py
deleted file mode 100644
index bcd7064..0000000
--- a/pythonx/compose/material3/lists.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from pythonx.compose.runtime import Composable
-
-from androidx.compose.material3 import ListItemKt
-
-__COMPILED_CODE__ = None
-Unit = None
-
-class ListItem(Composable):
- """ M3 list item """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = ListItemKt.ListItem
- except Exception:
- for name, obj in ListItemKt.__dict__.items():
- if name.startswith("ListItem-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("ListItem is cannot be found")
-
- def compose(
- self,
- headline_content=__COMPILED_CODE__,
- modifier=__COMPILED_CODE__,
- overline_content=__COMPILED_CODE__,
- supporting_content=__COMPILED_CODE__,
- leading_content=__COMPILED_CODE__,
- trailing_content=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- tonal_elevation=__COMPILED_CODE__,
- shadow_elevation=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- headlineContent=headline_content,
- modifier=modifier,
- overlineContent=overline_content,
- supportingContent=supporting_content,
- leadingContent=leading_content,
- trailingContent=trailing_content,
- colors=colors,
- tonalElevation=tonal_elevation,
- shadowElevation=shadow_elevation,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
\ No newline at end of file
diff --git a/pythonx/compose/material3/material_theming.py b/pythonx/compose/material3/material_theming.py
deleted file mode 100644
index f9b2bd7..0000000
--- a/pythonx/compose/material3/material_theming.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from pythonx.compose.runtime import Composable
-
-from androidx.compose.material3 import MaterialThemeKt
-
-__COMPILED_CODE__ = None
-Unit = None
-
-class MaterialTheme(Composable):
- """ M3 theme """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = MaterialThemeKt.MaterialTheme
- except Exception:
- for name, obj in MaterialThemeKt.__dict__.items():
- if name.startswith("MaterialTheme-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("MaterialTheme is cannot be found")
-
- def compose(
- self,
- color_scheme=__COMPILED_CODE__,
- shapes=__COMPILED_CODE__,
- typography=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- colorScheme=color_scheme,
- shapes=shapes,
- typography=typography,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
\ No newline at end of file
diff --git a/pythonx/compose/material3/menus.py b/pythonx/compose/material3/menus.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/navigation_bar.py b/pythonx/compose/material3/navigation_bar.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/navigation_drawer.py b/pythonx/compose/material3/navigation_drawer.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/navigation_rail.py b/pythonx/compose/material3/navigation_rail.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/progress_indicators.py b/pythonx/compose/material3/progress_indicators.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/radio_button.py b/pythonx/compose/material3/radio_button.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/scaffold.py b/pythonx/compose/material3/scaffold.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/search_bar.py b/pythonx/compose/material3/search_bar.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/segmented_button.py b/pythonx/compose/material3/segmented_button.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/shape.py b/pythonx/compose/material3/shape.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/sliders.py b/pythonx/compose/material3/sliders.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/snackbars.py b/pythonx/compose/material3/snackbars.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/surfaces.py b/pythonx/compose/material3/surfaces.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/swipe_to_dismiss.py b/pythonx/compose/material3/swipe_to_dismiss.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/switch.py b/pythonx/compose/material3/switch.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/tabs.py b/pythonx/compose/material3/tabs.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/text.py b/pythonx/compose/material3/text.py
deleted file mode 100644
index b9f20c3..0000000
--- a/pythonx/compose/material3/text.py
+++ /dev/null
@@ -1,79 +0,0 @@
-from pythonx.compose.runtime import Composable
-
-from androidx.compose.material3 import TextKt
-
-__COMPILED_CODE__ = None
-Unit = None
-
-class Text(Composable):
- """ M3 text """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = TextKt.Text
- except Exception:
- for name, obj in TextKt.__dict__.items():
- if name.startswith("Text-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("Text is cannot be found")
-
- def compose(
- self,
- text=__COMPILED_CODE__,
- modifier=__COMPILED_CODE__,
- color=__COMPILED_CODE__,
- font_size=__COMPILED_CODE__,
- font_style=__COMPILED_CODE__,
- font_weight=__COMPILED_CODE__,
- font_family=__COMPILED_CODE__,
- letter_spacing=__COMPILED_CODE__,
- text_decoration=__COMPILED_CODE__,
- text_align=__COMPILED_CODE__,
- line_height=__COMPILED_CODE__,
- overflow=__COMPILED_CODE__,
- soft_wrap=__COMPILED_CODE__,
- max_lines=__COMPILED_CODE__,
- min_lines=__COMPILED_CODE__,
- on_text_layout=__COMPILED_CODE__,
- style=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- text=text,
- modifier=modifier,
- color=color,
- fontSize=font_size,
- fontStyle=font_style,
- fontWeight=font_weight,
- fontFamily=font_family,
- letterSpacing=letter_spacing,
- textDecoration=text_decoration,
- textAlign=text_align,
- lineHeight=line_height,
- overflow=overflow,
- softWrap=soft_wrap,
- maxLines=max_lines,
- minLines=min_lines,
- onTextLayout=on_text_layout,
- style=style,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
\ No newline at end of file
diff --git a/pythonx/compose/material3/text_field.py b/pythonx/compose/material3/text_field.py
deleted file mode 100644
index 5c702f2..0000000
--- a/pythonx/compose/material3/text_field.py
+++ /dev/null
@@ -1,177 +0,0 @@
-from pythonx.compose.runtime import Composable
-
-from androidx.compose.material3 import TextFieldKt
-
-__COMPILED_CODE__ = None
-Unit = None
-
-class TextField(Composable):
- """ M3 filled text field """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = TextFieldKt.TextField
- except Exception:
- for name, obj in TextFieldKt.__dict__.items():
- if name.startswith("TextField-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("TextField is cannot be found")
-
- def compose(
- self,
- value=__COMPILED_CODE__,
- on_value_change=__COMPILED_CODE__,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- read_only=__COMPILED_CODE__,
- text_style=__COMPILED_CODE__,
- label=__COMPILED_CODE__,
- placeholder=__COMPILED_CODE__,
- leading_icon=__COMPILED_CODE__,
- trailing_icon=__COMPILED_CODE__,
- prefix=__COMPILED_CODE__,
- suffix=__COMPILED_CODE__,
- support_text=__COMPILED_CODE__,
- is_error=__COMPILED_CODE__,
- visual_transformation=__COMPILED_CODE__,
- keyboard_options=__COMPILED_CODE__,
- keyboard_actions=__COMPILED_CODE__,
- single_line=__COMPILED_CODE__,
- max_lines=__COMPILED_CODE__,
- min_lines=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- value=value,
- onValueChange=on_value_change,
- modifier=modifier,
- enabled=enabled,
- readOnly=read_only,
- textStyle=text_style,
- label=label,
- placeholder=placeholder,
- leadingIcon=leading_icon,
- trailingIcon=trailing_icon,
- prefix=prefix,
- suffix=suffix,
- supportingText=support_text,
- isError=is_error,
- visualTransformation=visual_transformation,
- keyboardOptions=keyboard_options,
- keyboardActions=keyboard_actions,
- singleLine=single_line,
- maxLines=max_lines,
- minLines=min_lines,
- interactionSource=interaction_source,
- shape=shape,
- colors=colors,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
-
-
-class OutlinedTextField(Composable):
- """ M3 outlined text field """
-
- def __init__(self):
- super().__init__()
- self.__kotlin_composable = None
-
- def find_composable(self):
- super().__init__()
-
- if self.__kotlin_composable is None:
- try:
- self.__kotlin_composable = TextFieldKt.OutlinedTextField
- except Exception:
- for name, obj in TextFieldKt.__dict__.items():
- if name.startswith("OutlinedTextField-"):
- self.__kotlin_composable = obj
- break
-
- if not self.__kotlin_composable:
- raise Exception("OutlinedTextField is cannot be found")
-
- def compose(
- self,
- value=__COMPILED_CODE__,
- on_value_change=__COMPILED_CODE__,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- read_only=__COMPILED_CODE__,
- text_style=__COMPILED_CODE__,
- label=__COMPILED_CODE__,
- placeholder=__COMPILED_CODE__,
- leading_icon=__COMPILED_CODE__,
- trailing_icon=__COMPILED_CODE__,
- prefix=__COMPILED_CODE__,
- suffix=__COMPILED_CODE__,
- support_text=__COMPILED_CODE__,
- is_error=__COMPILED_CODE__,
- visual_transformation=__COMPILED_CODE__,
- keyboard_options=__COMPILED_CODE__,
- keyboard_actions=__COMPILED_CODE__,
- single_line=__COMPILED_CODE__,
- max_lines=__COMPILED_CODE__,
- min_lines=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- value=value,
- onValueChange=on_value_change,
- modifier=modifier,
- enabled=enabled,
- readOnly=read_only,
- textStyle=text_style,
- label=label,
- placeholder=placeholder,
- leadingIcon=leading_icon,
- trailingIcon=trailing_icon,
- prefix=prefix,
- suffix=suffix,
- supportingText=support_text,
- isError=is_error,
- visualTransformation=visual_transformation,
- keyboardOptions=keyboard_options,
- keyboardActions=keyboard_actions,
- singleLine=single_line,
- maxLines=max_lines,
- minLines=min_lines,
- interactionSource=interaction_source,
- shape=shape,
- colors=colors,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- **kwargs,
- c=self.composer,
- changed=1
- )
\ No newline at end of file
diff --git a/pythonx/compose/material3/time_picker.py b/pythonx/compose/material3/time_picker.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/tool_tip.py b/pythonx/compose/material3/tool_tip.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/top_app_bar.py b/pythonx/compose/material3/top_app_bar.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/material3/typography.py b/pythonx/compose/material3/typography.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/native b/pythonx/compose/native
deleted file mode 160000
index 090f019..0000000
--- a/pythonx/compose/native
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 090f01908f5098c28034e327644438e2f66f27f4
diff --git a/pythonx/compose/material3/bottom_sheet.py b/pythonx/compose/py.typed
similarity index 100%
rename from pythonx/compose/material3/bottom_sheet.py
rename to pythonx/compose/py.typed
diff --git a/pythonx/compose/pythonx-map.toml b/pythonx/compose/pythonx-map.toml
new file mode 100644
index 0000000..df664f9
--- /dev/null
+++ b/pythonx/compose/pythonx-map.toml
@@ -0,0 +1,73 @@
+# Which Kotlin package each `pythonx.compose.*` module wraps, and which value classes may be
+# written as their raw primitive.
+#
+# **This file is the reason the binder does not have to know Compose exists.**
+# `python-multiplatform` used to carry `register_package('pythonx.compose', 'androidx.compose')` in
+# its own `commonMain`, which made the language boundary know a UI library by name and put every
+# other library one core edit away. It carries nothing now: an embedder installs this map, and the
+# `.pyi` generator reads the same file, so the name an IDE completes and the name the interpreter
+# resolves cannot drift apart.
+#
+# The mapping is not inferable from any artefact, which is why it is written down rather than
+# derived: `pythonx.compose.layout` wraps `androidx.compose.foundation.layout` and drops
+# `foundation.`, and nothing in the jar says so. `UI.ipynb` -- this project's user-facing
+# specification -- is what settles the spelling; every module below is one it imports, or a package
+# those imports resolve through.
+
+[modules]
+# The four `UI.ipynb` imports by name.
+"pythonx.compose.layout" = "androidx.compose.foundation.layout"
+"pythonx.compose.material3" = "androidx.compose.material3"
+"pythonx.compose.runtime" = "androidx.compose.runtime"
+"pythonx.compose.ui" = "androidx.compose.ui"
+
+# `DefaultIcons` (INTENT section 5.7) is `Icons.Default`, which lives here: `Icons` is an object of
+# `material-icons-core`, and `Icons.Default.Add` is an extension property read on `Icons.Filled`.
+"pythonx.compose.material" = "androidx.compose.material"
+"pythonx.compose.material.icons" = "androidx.compose.material.icons"
+
+# Reached through the four above rather than imported directly: a `Modifier` chain returns into
+# `ui.unit` and `ui.graphics`, and `ui.text` is where `TextStyle` lives.
+"pythonx.compose.ui.unit" = "androidx.compose.ui.unit"
+"pythonx.compose.ui.text" = "androidx.compose.ui.text"
+"pythonx.compose.ui.graphics" = "androidx.compose.ui.graphics"
+# `ImageVector`, what an icon is (`Icons.Default.Add`): without this row its stub types it `Any`.
+"pythonx.compose.ui.graphics.vector" = "androidx.compose.ui.graphics.vector"
+
+# `TextFieldState` and `rememberTextFieldState`, what `TextField(state=...)` takes (INTENT section
+# 5.8). The state-based overload keeps the buffer and the IME composing region inside Compose, so
+# nothing crosses into Python per keystroke; Python makes the state and reads or writes it on demand.
+"pythonx.compose.foundation.text.input" = "androidx.compose.foundation.text.input"
+
+# The long spelling, kept beside the short one because both are real: the generated stubs use
+# `pythonx.compose.layout`, and the render fixtures in `python-multiplatform` were written against
+# the fully-qualified form. Mapping both means neither is wrong while the spelling settles.
+"pythonx.compose.foundation.layout" = "androidx.compose.foundation.layout"
+"pythonx.compose.foundation" = "androidx.compose.foundation"
+"pythonx.compose" = "androidx.compose"
+
+[value-classes]
+# A value class here may be written as the primitive it wraps: `padding(16)` for `padding(Dp(16f))`.
+#
+# `Dp`'s public constructor is the identity on its float, so the two spellings mean the same thing.
+# `Color` and `TextUnit` are deliberately absent even though they look like numbers: both pack
+# several fields into one `packedValue`, so a raw number decodes as something else entirely rather
+# than as the value the caller meant. Adding one here is this package's decision to make, which is
+# the point of the section being in this file rather than in the binder.
+raw-primitive-allowed = [
+ "androidx.compose.ui.unit.Dp",
+]
+
+[aliases."pythonx.compose.material3"]
+# Names a module also answers for, because the notebook imports them from there (INTENT section 5.2):
+# `from pythonx.compose.material3 import Column, Row, Spacer`, while Kotlin declares them in
+# `androidx.compose.foundation.layout`. Each is the same object as in its home module; this is data,
+# not a wrapper, and the rule that serves it is the one in `_reexport.py`.
+"pythonx.compose.layout" = ["Column", "Row", "Spacer"]
+#
+# An entry is a list of names lent under the SAME name, or a table `{ lent name = "Path.To.Attr" }`
+# that lends an attribute path of the source under a DIFFERENT name: the notebook's `DefaultIcons`
+# is Kotlin's `Icons.Default` (INTENT section 5.7). The first segment is a name of the source module,
+# each further one an attribute read. A path with a dot is read afresh on every access and never kept,
+# the way the binder serves `Icons.Default` (a live property); a plain name is resolved once.
+"pythonx.compose.material.icons" = { DefaultIcons = "Icons.Default" }
diff --git a/pythonx/compose/runtime/__init__.py b/pythonx/compose/runtime/__init__.py
index 5ad59d3..3bc9441 100644
--- a/pythonx/compose/runtime/__init__.py
+++ b/pythonx/compose/runtime/__init__.py
@@ -1,274 +1,128 @@
+"""`pythonx/compose/runtime/__init__.py` -- the 2024 `Composable` class, gone, and what is left.
+
+## What used to be here, and why it never ran
+
+A decorator class (`Composable`) holding one `__composer`, plus `ComposeApp`, `KotlinComposable`,
+`KotlinWidget` and a `CoroutineScope` family, all built on `jclass` --
+`_runtime = jclass("io.github.thisisthepy.pycomposeui.RuntimeKt")` -- chaquopy's name-based
+Java/Kotlin class lookup. `jclass` was never imported in this module, in any commit where the module
+had content (`git log -p` on this file shows no `import jclass` anywhere), so every one of those five
+module-level statements raised `NameError` before a single class body executed:
+
+ >>> from pythonx.compose.runtime import Composable
+ NameError: name 'jclass' is not defined
+
+That is not incidental breakage, it is a different technology than this repository now targets.
+`jclass` is chaquopy's global; `PythonMultiplatform`'s binder is a different bridge
+(`docs/pythonx-adapter-design.md` §5.1, in `PythonMultiplatform`, reads the same class as "the 2024
+`Composable` class", and `agent-rules.md` §12 retires name-based JVM lookup by name). The other half
+of what `Composable.__call__` did -- inspecting `self.compose.__code__.co_varnames` to find where
+`content` sat, so it could be popped out and wrapped specially -- is retired for the same reason
+`modifier.py`'s mangled-suffix search was: `docs/pythonx-adapter-design.md` §5.6/§7 record that
+composer threading, `$changed` and `$default` are now arithmetic the binder's `_bind_composable` (`python_multiplatform.binding`) does from
+a slot's *declared type*, uniformly, for a `content` lambda exactly as for any other parameter. There
+is nothing left for a Python-side base class to detect or thread by hand.
+
+## What is left
+
+One identity decorator, `Composable`, kept because `UI.ipynb` writes `@Composable` on every
+screen-defining function and that surface is one an application author should keep being able to
+write. Nothing needs to happen to the decorated function for it to work: the composer any nested
+`pythonx.compose.*` call needs comes from the one hand-written Kotlin `@Composable`
+(`PythonComposition`, in `PythonMultiplatform`) pushing it once per composition pass, and from the
+*callee's* slot type deciding whether and how to thread it -- never from anything the caller does.
+A plain `def Screen(): Button(...)` already works with no wrapper, no base class and no `content=`
+slot detection; `@Composable` changes nothing about that and exists only so the notebook's own
+spelling keeps working.
+
+## The app root and `state`
+
+`@app` declares the screen the host draws; `state(initial)` makes a value Compose observes. The host
+is configured once with `PythonContent("pythonx.compose.runtime", "app_root")`: it reads the module
+attribute `app_root`, a Compose `MutableState` whose `.value` is a zero-argument callable or `None`
+(nothing is drawn). `app(fn)` writes `app_root.value = fn` and returns `fn` unchanged, so declaring
+the root again -- in a notebook cell, say -- replaces the screen. There is deliberately no update or
+refresh function (`docs/INTENT.md` section 5.1).
+
+Both states come from `_new_state`, the one place that asks the binder for
+`androidx.compose.runtime.mutableStateOf`. `app_root` is created on first read, because the binder may
+be installed after `pythonx` is imported. A Python object with a `.value` would not make Compose
+recompose, so when the binder cannot supply `mutableStateOf` (python-multiplatform #38) `_new_state`
+raises instead of falling back to one.
+
+## How it is reached
+
+By its own dotted name: `import pythonx.compose.runtime` loads this file. The binder used to put a
+synthetic `pythonx` with `__path__ = []` into `sys.modules`, which made every file under
+`pythonx/compose/` unreachable; PythonMultiplatform `d00f413f` moved its layer to
+`python_multiplatform.binding` and leaves `pythonx` to this package (AGENTS.md section 12).
+`tests/test_runtime_module.py::TheModuleIsTheFileOnDisk` checks that against the binder's real source.
+"""
+
from __future__ import annotations
-from inspect import isfunction
-import traceback
-
-
-
-def cp_info(target, ori):
- if ori is None:
- raise ValueError(f"Error: Origin of Target Composable should not be None. - [{ori}], [{target}]")
- else:
- target.__dict__['__name__'] = ori.__name__
- target.__dict__['__doc__'] = ori.__doc__
- target.__dict__['__module__'] = ori.__module__
-
-
-_runtime = jclass("io.github.thisisthepy.pycomposeui.RuntimeKt")
-print("Compose Runtime:", _runtime)
-_runtime_android = jclass("io.github.thisisthepy.pycomposeui.Runtime_androidKt")
-print("Compose Android Runtime:", _runtime_android)
-ComposableWrapper = _runtime.composableWrapper
-print("Composable Wrapper:", ComposableWrapper)
-ComposableLambdaImpl = jclass("androidx.compose.runtime.internal.ComposableLambdaImpl")
-print("Composable Lambda:", ComposableLambdaImpl)
-_rememberSaveable = _runtime_android.rememberSaveableWrapper
-print("Remember Saveable:", _rememberSaveable)
-
-
-class Composable:
- """ Composable Function Class (Singleton) for Jetpack Compose """
- __composer = None
- from_function = False
-
- def _register_composer(self, composer):
- self.__composer = composer
-
- @property
- def composer(self):
- return self.__composer
-
- def __new__(cls, composable=None):
- """ When @Composable is called """
- try:
- if issubclass(composable, Composable): # is child of Composable
- return super().__new__(composable) # return an instance of the composable argument
- except TypeError as _:
- pass
- return super().__new__(cls) # return a new instance of the Composable class
-
- def __init__(self, composable=None):
- """ When @Composable is called """
- if isfunction(composable): # When the decorative target is a function
- self.compose = composable
- cp_info(self, composable)
- self.from_function = True
- elif composable is None or issubclass(composable, Composable): # When the decorative target is a child class of Composable or itself
- cp_info(self, type(self) if composable is None else composable)
- else: # When the decorative target is an object other than a child class of Composable
- if hasattr(composable, "content"):
- target = composable # When the compose method is staticmethod/classmethod
- if isinstance(composable, staticmethod): # When the compose method is staticmethod
- self.from_function = True
- else:
- target = composable() # When the compose method is instancemethod
- self.compose = target.compose
- cp_info(self, composable)
-
- def __repr__(self):
- return f"<{self.__module__}.{self.__name__} @Composable object at {hex(id(self))}>"
-
- def __str__(self):
- return self.__repr__()
-
- @staticmethod
- def compose(*args, **kwargs):
- """ Composition Content method for compose """
- pass
-
- def __invoke(self, *args, **kwargs):
- """ Invoke composableLambda / composableLambdaInstance
- Ref: https://sungbin.land/jetpack-compose-%EB%9F%B0%ED%83%80%EC%9E%84%EC%97%90%EC%84%9C-%EC%9D%BC%EC%96%B4%EB%82%98%EB%8A%94-%EB%A7%88%EB%B2%95-%EC%99%84%EC%A0%84%ED%9E%88-%ED%8C%8C%ED%95%B4%EC%B9%98%EA%B8%B0-composeinitial-4c4c306c0a8c
- !WARNING! keyword 'content' must be specified in the kwargs not in the args
- :raises ValueError: When content is not callable
- """
- composer = self.composer
- content = kwargs.pop("content", None)
-
- try:
- if isinstance(content, ComposableLambdaImpl): # isinstance(content, JavaClass)
- # TODO: Find a way to check if the content is a JavaClass
- content = KotlinComposable(content) # Raw Kotlin Composable
- elif content is None or callable(content): # In case of None, Function, Method
- pass
- else:
- raise ValueError(f"Error: Invalid Content Type. Please check your Composable's arguments - Current content type: {type(content)}")
-
- if content is not None:
- kwargs['content'] = content
-
- return self.compose(*args, **kwargs) # Python Composable
- except Exception as err:
- print("-----------------------------------------------------------------------------------------------------------")
- traceback.print_exc()
- print("-----------------------------------------------------------------------------------------------------------")
- raise err
-
- def __call__(self, *args, **kwargs):
- """ Do Composition
- :raises RuntimeError: When Composer is not set from Kotlin before Python is loaded
- """
- if self.composer is None:
- raise RuntimeError("Composer for Composable must be registered before Composition starts.")
- vars = self.compose.__code__.co_varnames
- try:
- # Check if content variable is set and where it is
- index = vars.index("content") - (0 if self.from_function else 1) # ValueError could be raised
-
- # Find the actual content variable
- if "content" in kwargs:
- content = kwargs.pop("content")
- else:
- args = list(args)
- # if pop failed, that means the content argument is set but the content variable not been received
- content = args.pop(index) # IndexError could be raised
-
- if content is None:
- content = EmptyComposable
- except (ValueError, IndexError) as _:
- content = None
-
- kwargs['content'] = content
- return self.__invoke(*args, **kwargs)
-
-
-class ComposeApp(Composable):
- """ Composable App Class (should be instanced in Kotlin side) """
-
- def __init__(self, composer):
- super().__init__()
- self._register_composer(composer)
-
- def __del__(self):
- self._register_composer(None)
-
-
-class KotlinComposable(Composable):
- """ Raw Kotlin Composable Wrapper Class """
- def __new__(cls, content):
- return super().__new__(cls)
-
- def __init__(self, content):
- super().__init__()
- self.content = content
-
- def compose(self, *args):
- ComposableWrapper(self.content, args, self.composer, 1)
-
-
-class KotlinWidget(KotlinComposable):
- """ Kotlin Composable Linker Class """
- _package_name_preset_: str = ""
-
- @classmethod
- def set_package_name_preset(cls, name):
- """ Set the Kotlin package name prefix
- !WARNING: This method can be called only once.
- :raises RuntimeError: If this method is called multiple times
- """
- if not cls._package_name_preset_:
- cls._package_name_preset_ = name
- else:
- raise RuntimeError("KotlinWidget: Kotlin package name preset can be set only once.")
-
- @classmethod
- def get_package_name_preset(cls) -> str:
- """ Returns the Kotlin package name prefix """
- return cls._package_name_preset_
-
- def __new__(cls, classname, varname=None, package=None):
- """
- :raises ModuleNotFoundError: If the class cannot be found (NoClassDefFoundError)
- :param classname: Kotlin class/module name without package name
- :param varname: Kotlin variable/function name, can be None if you want to use the class itself
- :param package: Kotlin package name
- """
- # Search Class
- classname = classname.replace(".", "_")
- try:
- try:
- content = jclass(f"{package}.{classname}")
- except Exception as errr:
- try:
- content = jclass(f"{package}.{classname}Kt") # retry with -Kt suffix
- except Exception as _:
- raise errr
- except Exception as err:
- raise ModuleNotFoundError(
- "Could not find the specified Kotlin class."
- "Please ensure that the class/object is excluded from the build by ProGuard optimization."
- ) from err
-
- # Get Variable/Method/Function
- if varname:
- content = content.__dict__[varname]
-
- return super().__new__(cls, content)
-
-
-@Composable
-class EmptyComposable(Composable):
- """ Empty Composition """
- def __init__(self, *_, **__):
- super().__init__()
-
-
-@Composable
-def remember_saveable(value):
- _type = type(value).__name__
- if _type == "int":
- if value < -2147483648 or value > 2147483647:
- _type = "long"
- return _rememberSaveable(value, _type, Composable.composer, 1)
-
-
-class CoroutineScope(Composable):
- def __init__(self, scope, launcher):
- super().__init__()
- self._scope = scope
- self._launcher = launcher
-
- def launch(self, block: callable):
- self._launcher(self._scope, block)
-
-
-class RememberCoroutineScope(CoroutineScope):
- def __init__(self):
- super().__init__(
- scope=_runtime.rememberCoroutineScopeWrapper(self.composer, 1),
- launcher=_runtime_android.coroutineLauncherWrapper
- )
-
- def launch(self, block: callable):
- self._launcher(self._scope, block)
-
-
-class DefaultCoroutineScope(CoroutineScope):
- def __init__(self):
- super().__init__(
- scope=_runtime.defaultCoroutineScopeWrapper(self.composer, 1),
- launcher=_runtime_android.coroutineLauncherWrapper
- )
-
-
-class MainCoroutineScope(CoroutineScope):
- def __init__(self):
- super().__init__(
- scope=_runtime.mainCoroutineScopeWrapper(self.composer, 1),
- launcher=_runtime_android.coroutineLauncherWrapper
- )
-
-
-class IOCoroutineScope(CoroutineScope):
- def __init__(self):
- super().__init__(
- scope=_runtime.ioCoroutineScopeWrapper(self.composer, 1),
- launcher=_runtime_android.coroutineLauncherWrapper
- )
-
-
-class UncondifiedCoroutineScope(CoroutineScope):
- def __init__(self):
- super().__init__(
- scope=_runtime.uncondifiedCoroutineScopeWrapper(self.composer, 1),
- launcher=_runtime_android.coroutineLauncherWrapper
- )
+
+import sys
+
+
+def Composable(target):
+ """Identity. `UI.ipynb` writes `@Composable def Screen(): ...`; nothing needs to happen to
+ `Screen` for that to work, because the composer every nested `pythonx.compose.*` call needs is
+ threaded by `PythonComposition`/`python_multiplatform.binding._bind_composable` from the *callee's* declared slot
+ type, not from anything the caller -- decorated or not -- does. See the module docstring for
+ what used to be here and why it is gone.
+ """
+ return target
+
+
+
+app_root: State
+"""The state the host reads (`PythonContent("pythonx.compose.runtime", "app_root")`); annotated
+only, created on first read by `__getattr__` below."""
+
+
+def _new_state(initial):
+ """A Compose `MutableState` holding `initial`, from the binder's `mutableStateOf`.
+
+ Never a Python stand-in: only a state Compose created is observed by composition.
+ """
+ try:
+ import androidx.compose.runtime as kotlin_runtime
+
+ make = kotlin_runtime.mutableStateOf
+ except (ImportError, AttributeError) as missing:
+ raise RuntimeError(
+ "androidx.compose.runtime.mutableStateOf is not available from the binder: "
+ "calling it from Python needs python-multiplatform #38"
+ ) from missing
+ return make(initial)
+
+
+def state(initial):
+ """A Compose state holding `initial`; read and write it through `.value`."""
+ return _new_state(initial)
+
+
+def app(root):
+ """Declare `root`, a zero-argument function, as the screen the host draws; returns it unchanged.
+
+ Declaring again replaces the screen; there is no update call.
+ """
+ sys.modules[__name__].app_root.value = root
+ return root
+
+
+from pythonx.compose._reexport import reexport
+
+_reexported_getattr, _reexported_dir = reexport(__name__)
+
+
+def __getattr__(name):
+ if name == "app_root":
+ created = _new_state(None)
+ globals()["app_root"] = created
+ return created
+ return _reexported_getattr(name)
+
+
+def __dir__():
+ return sorted(set(_reexported_dir()) | {"app_root"})
diff --git a/pythonx/compose/runtime/__init__.pyi b/pythonx/compose/runtime/__init__.pyi
new file mode 100644
index 0000000..beecbf9
--- /dev/null
+++ b/pythonx/compose/runtime/__init__.pyi
@@ -0,0 +1,180 @@
+# GENERATED by pythonx/_build/gen_stubs.py from python-multiplatform's Kotlin-named stubs (artifact kotlin-stubs, workflow run 37103737430, commit a5028618, Compose 1.11.1). Do not edit.
+import typing as _t
+import pythonx.compose.ui
+
+class _Composer_materialize(_t.Protocol):
+ def __call__(self, modifier: pythonx.compose.ui.Modifier) -> pythonx.compose.ui.Modifier: ...
+
+class _CompositionLocalAccessorScope_mediaQuery(_t.Protocol):
+ def __call__(self, query: _t.Callable[[pythonx.compose.ui.UiMediaScope], bool]) -> bool: ...
+
+class _CompositionLocalAccessorScope_mediaQuery__CompositionLocalAccessorScope_Boolean(_t.Protocol):
+ def __call__(self, query: _t.Callable[[pythonx.compose.ui.UiMediaScope], bool]) -> bool: ...
+
+class _MutableState_setValue(_t.Protocol):
+ def __call__(self, this_obj: _t.Any | None, property: _t.Any, value: _t.Any | None) -> None: ...
+
+class _State_getValue(_t.Protocol):
+ def __call__(self, this_obj: _t.Any | None, property: _t.Any) -> _t.Any | None: ...
+
+class AbstractApplier:
+ """Kotlin: androidx.compose.runtime.AbstractApplier"""
+
+class Applier:
+ """Kotlin: androidx.compose.runtime.Applier"""
+
+class Composer:
+ """Kotlin: androidx.compose.runtime.Composer"""
+ materialize: _t.ClassVar[_Composer_materialize]
+
+class CompositionLocal:
+ """Kotlin: androidx.compose.runtime.CompositionLocal"""
+
+class CompositionLocalAccessorScope:
+ """Kotlin: androidx.compose.runtime.CompositionLocalAccessorScope"""
+ media_query: _t.ClassVar[_CompositionLocalAccessorScope_mediaQuery]
+ media_query__CompositionLocalAccessorScope_Boolean: _t.ClassVar[_CompositionLocalAccessorScope_mediaQuery__CompositionLocalAccessorScope_Boolean]
+
+class CompositionLocalContext:
+ """Kotlin: androidx.compose.runtime.CompositionLocalContext"""
+
+class MutableState(State):
+ """Kotlin: androidx.compose.runtime.MutableState"""
+ set_value: _t.ClassVar[_MutableState_setValue]
+ @property
+ def value(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.runtime.MutableState.value (androidx.compose.runtime.MutableState.value: kotlin.Any?)"""
+ ...
+ @value.setter
+ def value(self, value: _t.Any | None) -> None:
+ """Kotlin property: androidx.compose.runtime.MutableState.value="""
+ ...
+
+class ProduceStateScope:
+ """Kotlin: androidx.compose.runtime.ProduceStateScope"""
+
+class SnapshotFlowManager:
+ """Kotlin: androidx.compose.runtime.SnapshotFlowManager"""
+
+class SnapshotMutationPolicy:
+ """Kotlin: androidx.compose.runtime.SnapshotMutationPolicy"""
+
+class State:
+ """Kotlin: androidx.compose.runtime.State"""
+ get_value: _t.ClassVar[_State_getValue]
+ @property
+ def value(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.runtime.State.value (androidx.compose.runtime.State.value: kotlin.Any?)"""
+ ...
+
+def collect_as_state(receiver: _t.Any, /, context: _t.Any = ...) -> State:
+ """Kotlin: kotlinx.coroutines.flow.StateFlow.collectAsState(context: kotlin.coroutines.CoroutineContext): androidx.compose.runtime.State"""
+ ...
+
+def derived_state_of__Any(calculation: _t.Callable[[], _t.Any | None]) -> State:
+ """Kotlin: androidx.compose.runtime.derivedStateOf(calculation: kotlin.Function0): androidx.compose.runtime.State"""
+ ...
+
+def derived_state_of__SnapshotMutationPolicy_Any(policy: SnapshotMutationPolicy, calculation: _t.Callable[[], _t.Any | None]) -> State:
+ """Kotlin: androidx.compose.runtime.derivedStateOf(policy: androidx.compose.runtime.SnapshotMutationPolicy, calculation: kotlin.Function0): androidx.compose.runtime.State"""
+ ...
+
+def get_value(receiver: State, /, this_obj: _t.Any | None, property: _t.Any) -> _t.Any | None:
+ """Kotlin: androidx.compose.runtime.State.getValue(thisObj: kotlin.Any?, property: kotlin.reflect.KProperty): kotlin.Any"""
+ ...
+
+def mutable_state_list_of() -> _t.Any:
+ """Kotlin: androidx.compose.runtime.mutableStateListOf(): androidx.compose.runtime.snapshots.SnapshotStateList"""
+ ...
+
+def mutable_state_map_of() -> _t.Any:
+ """Kotlin: androidx.compose.runtime.mutableStateMapOf(): androidx.compose.runtime.snapshots.SnapshotStateMap"""
+ ...
+
+def mutable_state_of(value: _t.Any | None, policy: SnapshotMutationPolicy = ...) -> MutableState:
+ """Kotlin: androidx.compose.runtime.mutableStateOf(value: kotlin.Any?, policy: androidx.compose.runtime.SnapshotMutationPolicy): androidx.compose.runtime.MutableState"""
+ ...
+
+def mutable_state_set_of() -> _t.Any:
+ """Kotlin: androidx.compose.runtime.mutableStateSetOf(): androidx.compose.runtime.snapshots.SnapshotStateSet"""
+ ...
+
+def never_equal_policy() -> SnapshotMutationPolicy:
+ """Kotlin: androidx.compose.runtime.neverEqualPolicy(): androidx.compose.runtime.SnapshotMutationPolicy"""
+ ...
+
+def produce_state__Any_Any(initial_value: _t.Any | None, producer: _t.Callable[[ProduceStateScope, _t.Any], _t.Any | None]) -> State:
+ """Kotlin: androidx.compose.runtime.produceState(initialValue: kotlin.Any?, producer: kotlin.Function2): androidx.compose.runtime.State"""
+ ...
+
+def produce_state__Any_Any_Any(initial_value: _t.Any | None, key1: _t.Any | None, producer: _t.Callable[[ProduceStateScope, _t.Any], _t.Any | None]) -> State:
+ """Kotlin: androidx.compose.runtime.produceState(initialValue: kotlin.Any?, key1: kotlin.Any?, producer: kotlin.Function2): androidx.compose.runtime.State"""
+ ...
+
+def produce_state__Any_Any_Any_Any(initial_value: _t.Any | None, key1: _t.Any | None, key2: _t.Any | None, producer: _t.Callable[[ProduceStateScope, _t.Any], _t.Any | None]) -> State:
+ """Kotlin: androidx.compose.runtime.produceState(initialValue: kotlin.Any?, key1: kotlin.Any?, key2: kotlin.Any?, producer: kotlin.Function2): androidx.compose.runtime.State"""
+ ...
+
+def produce_state__Any_Any_Any_Any_Any(initial_value: _t.Any | None, key1: _t.Any | None, key2: _t.Any | None, key3: _t.Any | None, producer: _t.Callable[[ProduceStateScope, _t.Any], _t.Any | None]) -> State:
+ """Kotlin: androidx.compose.runtime.produceState(initialValue: kotlin.Any?, key1: kotlin.Any?, key2: kotlin.Any?, key3: kotlin.Any?, producer: kotlin.Function2): androidx.compose.runtime.State"""
+ ...
+
+def produce_state__Any_Array_Any(initial_value: _t.Any | None, keys: _t.Any, producer: _t.Callable[[ProduceStateScope, _t.Any], _t.Any | None]) -> State:
+ """Kotlin: androidx.compose.runtime.produceState(initialValue: kotlin.Any?, keys: kotlin.Array, producer: kotlin.Function2): androidx.compose.runtime.State"""
+ ...
+
+def referential_equality_policy() -> SnapshotMutationPolicy:
+ """Kotlin: androidx.compose.runtime.referentialEqualityPolicy(): androidx.compose.runtime.SnapshotMutationPolicy"""
+ ...
+
+def remember_updated_state(new_value: _t.Any | None) -> State:
+ """Kotlin: androidx.compose.runtime.rememberUpdatedState(newValue: kotlin.Any?): androidx.compose.runtime.State"""
+ ...
+
+def set_value(receiver: MutableState, /, this_obj: _t.Any | None, property: _t.Any, value: _t.Any | None) -> None:
+ """Kotlin: androidx.compose.runtime.MutableState.setValue(thisObj: kotlin.Any?, property: kotlin.reflect.KProperty, value: kotlin.Any?): kotlin.Unit"""
+ ...
+
+def snapshot_flow__Any(block: _t.Callable[[], _t.Any | None]) -> _t.Any:
+ """Kotlin: androidx.compose.runtime.snapshotFlow(block: kotlin.Function0): kotlinx.coroutines.flow.Flow"""
+ ...
+
+def snapshot_flow__SnapshotFlowManager_Any(manager: SnapshotFlowManager, block: _t.Callable[[], _t.Any | None]) -> _t.Any:
+ """Kotlin: androidx.compose.runtime.snapshotFlow(manager: androidx.compose.runtime.SnapshotFlowManager, block: kotlin.Function0): kotlinx.coroutines.flow.Flow"""
+ ...
+
+def structural_equality_policy() -> SnapshotMutationPolicy:
+ """Kotlin: androidx.compose.runtime.structuralEqualityPolicy(): androidx.compose.runtime.SnapshotMutationPolicy"""
+ ...
+
+@_t.overload
+def derived_state_of(calculation: _t.Callable[[], _t.Any | None]) -> State: ...
+@_t.overload
+def derived_state_of(policy: SnapshotMutationPolicy, calculation: _t.Callable[[], _t.Any | None]) -> State: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def produce_state(initial_value: _t.Any | None, producer: _t.Callable[[ProduceStateScope, _t.Any], _t.Any | None]) -> State: ...
+@_t.overload
+def produce_state(initial_value: _t.Any | None, key1: _t.Any | None, producer: _t.Callable[[ProduceStateScope, _t.Any], _t.Any | None]) -> State: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def produce_state(initial_value: _t.Any | None, key1: _t.Any | None, key2: _t.Any | None, producer: _t.Callable[[ProduceStateScope, _t.Any], _t.Any | None]) -> State: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def produce_state(initial_value: _t.Any | None, key1: _t.Any | None, key2: _t.Any | None, key3: _t.Any | None, producer: _t.Callable[[ProduceStateScope, _t.Any], _t.Any | None]) -> State: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def produce_state(initial_value: _t.Any | None, keys: _t.Any, producer: _t.Callable[[ProduceStateScope, _t.Any], _t.Any | None]) -> State: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def snapshot_flow(block: _t.Callable[[], _t.Any | None]) -> _t.Any: ...
+@_t.overload
+def snapshot_flow(manager: SnapshotFlowManager, block: _t.Callable[[], _t.Any | None]) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+def Composable(target):
+ ...
+
+app_root: State
+
+def state(initial):
+ ...
+
+def app(root):
+ ...
diff --git a/pythonx/compose/test/main.py b/pythonx/compose/test/main.py
deleted file mode 100644
index e8e15a9..0000000
--- a/pythonx/compose/test/main.py
+++ /dev/null
@@ -1,79 +0,0 @@
-from pythonx.compose.runtime import Composable, ComposeApp, EmptyComposable, remember_saveable
-from pythonx.compose.material3 import SimpleText, SimpleColumn, SimpleRow, SimpleButton
-from pythonx.compose.ui import modifier, Alignment
-
-
-@Composable
-def UiTestCase(text: str = "UiTestCase"):
- SimpleText(text)
-
-
-@Composable
-class UiTest:
- def compose(self, content: Composable = EmptyComposable):
- SimpleColumn(modifier, content=lambda: {
- UiTestCase(text="UiTestCase in UiTest"),
- content()
- })
-
-
-@Composable
-class BasicText:
- @classmethod
- def compose(cls, text: str = "BasicText"):
- SimpleText(text)
-
-
-@Composable
-class RichText(Composable):
- @staticmethod
- def compose(content: Composable = EmptyComposable):
- SimpleColumn(modifier, content=Composable(lambda: {
- BasicText("Basic Text inside of Rich Text"),
- SimpleRow(lambda: { # Unlike Kotlin Compose, pycompose does not require Composable functions as content parameters
- BasicText("Row Left Side "),
- BasicText("Row Right Side")
- }),
- content()
- }))
-
-
-@ComposeApp
-class MainApp:
- @staticmethod
- def compose():
- hi = remember_saveable("Hi?")
- count = remember_saveable(0)
-
- SimpleColumn(modifier, content=lambda: {
- UiTest(),
- RichText(),
- SimpleText(hi.getValue()),
- SimpleButton(
- onclick=lambda: {
- print("Button1 clicked!!!!!!!"),
- hi.setValue(hi.getValue() + " Hi?")
- },
- content=lambda: {
- SimpleText("Button 1")
- }
- ),
- SimpleButton(
- onclick=lambda: {
- print("Button2 clicked!!!!!!!"),
- count.setValue(count.getValue() + 1)
- },
- content=lambda: {
- SimpleText(f"Button 2: Clicked {count.getValue()}")
- }
- ),
- SimpleButton(
- onclick=lambda: {
- print("Run Client"),
- run_client()
- },
- content=lambda: {
- SimpleText("Run Client")
- }
- )
- })
diff --git a/pythonx/compose/ui/__init__.py b/pythonx/compose/ui/__init__.py
index 21ca075..f576918 100644
--- a/pythonx/compose/ui/__init__.py
+++ b/pythonx/compose/ui/__init__.py
@@ -1,15 +1,21 @@
-from __future__ import annotations
-import traceback
+"""`pythonx/compose/ui/__init__.py` -- the 2024 `from .modifier import Modifier` wrapper, unexecuted, and why.
+
+## What used to be here, and why it never ran
+
+A `try...except` block executing `from .modifier import Modifier`, `modifier = Modifier()`, and
+`from .alignment import Alignment, AbsoluteAlignment`. `alignment.py` depended on `from java import jclass`
+(Chaquopy-era JVM class lookup, retired in this codebase).
-try:
- from .modifier import Modifier
- modifier = Modifier()
- from .alignment import Alignment, AbsoluteAlignment
+## How `pythonx.compose.ui` resolves
+
+`import pythonx.compose.ui` loads this file; it is an ordinary package on disk. The binder serves the
+Kotlin package under its Kotlin name, `androidx.compose.ui`, as a separate module, and renames
+nothing. This file re-exports it under Pythonic names (`Modifier`, `describe_modifier`, ...) by the
+one rule in `pythonx/compose/_reexport.py` (SPEC section 3); it names no declaration itself.
+"""
+
+from __future__ import annotations
+from pythonx.compose._reexport import reexport
-except Exception as e:
- print("-----------------------------------------------------------------------------------------------------------")
- traceback.print_exc()
- print("ERROR: PyComposeUI Ui Library is not Found.")
- print("-----------------------------------------------------------------------------------------------------------")
- raise e
+__getattr__, __dir__ = reexport(__name__)
diff --git a/pythonx/compose/ui/__init__.pyi b/pythonx/compose/ui/__init__.pyi
new file mode 100644
index 0000000..827559a
--- /dev/null
+++ b/pythonx/compose/ui/__init__.pyi
@@ -0,0 +1,975 @@
+# GENERATED by pythonx/_build/gen_stubs.py from python-multiplatform's Kotlin-named stubs (artifact kotlin-stubs, workflow run 37103737430, commit a5028618, Compose 1.11.1). Do not edit.
+import typing as _t
+import pythonx.compose.layout
+import pythonx.compose.runtime
+import pythonx.compose.ui.graphics
+import pythonx.compose.ui.unit
+
+class _ImageComposeScene_use(_t.Protocol):
+ def __call__(self, block: _t.Callable[[ImageComposeScene], _t.Any | None]) -> _t.Any | None: ...
+
+class _Modifier_absoluteOffset(_t.Protocol):
+ @_t.overload
+ def __call__(self, x: float = ..., y: float = ...) -> Modifier: ...
+ @_t.overload
+ def __call__(self, offset: _t.Callable[[_t.Any], _t.Any]) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_absoluteOffset__Dp_Dp(_t.Protocol):
+ def __call__(self, x: float = ..., y: float = ...) -> Modifier: ...
+
+class _Modifier_absoluteOffset__IntOffset(_t.Protocol):
+ def __call__(self, offset: _t.Callable[[_t.Any], _t.Any]) -> Modifier: ...
+
+class _Modifier_absolutePadding(_t.Protocol):
+ def __call__(self, left: float = ..., top: float = ..., right: float = ..., bottom: float = ...) -> Modifier: ...
+
+class _Modifier_alpha(_t.Protocol):
+ def __call__(self, alpha: float) -> Modifier: ...
+
+class _Modifier_approachLayout(_t.Protocol):
+ def __call__(self, is_measurement_approach_in_progress: _t.Callable[[_t.Any], bool], is_placement_approach_in_progress: _t.Callable[[_t.Any, _t.Any], bool] = ..., *, approach_measure: _t.Callable[[_t.Any, _t.Any, _t.Any], _t.Any]) -> Modifier: ...
+
+class _Modifier_aspectRatio(_t.Protocol):
+ def __call__(self, ratio: float, match_height_constraints_first: bool = ...) -> Modifier: ...
+
+class _Modifier_blur(_t.Protocol):
+ @_t.overload
+ def __call__(self, radius: float, edge_treatment: _t.Any = ...) -> Modifier: ...
+ @_t.overload
+ def __call__(self, radius_x: float, radius_y: float, edge_treatment: _t.Any = ...) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_blur__Dp_BlurredEdgeTreatment(_t.Protocol):
+ def __call__(self, radius: float, edge_treatment: _t.Any = ...) -> Modifier: ...
+
+class _Modifier_blur__Dp_Dp_BlurredEdgeTreatment(_t.Protocol):
+ def __call__(self, radius_x: float, radius_y: float, edge_treatment: _t.Any = ...) -> Modifier: ...
+
+class _Modifier_captionBarPadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_clearAndSetSemantics(_t.Protocol):
+ def __call__(self, properties: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_clip(_t.Protocol):
+ def __call__(self, shape: pythonx.compose.ui.graphics.Shape) -> Modifier: ...
+
+class _Modifier_clipToBounds(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_consumeWindowInsets(_t.Protocol):
+ @_t.overload
+ def __call__(self, padding_values: _t.Any) -> Modifier: ...
+ @_t.overload
+ def __call__(self, insets: _t.Any) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_consumeWindowInsets__PaddingValues(_t.Protocol):
+ def __call__(self, padding_values: _t.Any) -> Modifier: ...
+
+class _Modifier_consumeWindowInsets__WindowInsets(_t.Protocol):
+ def __call__(self, insets: _t.Any) -> Modifier: ...
+
+class _Modifier_contentType(_t.Protocol):
+ def __call__(self, content_type: _t.Any) -> Modifier: ...
+
+class _Modifier_defaultMinSize(_t.Protocol):
+ def __call__(self, min_width: float = ..., min_height: float = ...) -> Modifier: ...
+
+class _Modifier_displayCutoutPadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_drawBehind(_t.Protocol):
+ def __call__(self, on_draw: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_drawWithCache(_t.Protocol):
+ def __call__(self, on_build_draw_cache: _t.Callable[[_t.Any], _t.Any]) -> Modifier: ...
+
+class _Modifier_drawWithContent(_t.Protocol):
+ def __call__(self, on_draw: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_dropShadow(_t.Protocol):
+ @_t.overload
+ def __call__(self, shape: pythonx.compose.ui.graphics.Shape, shadow: _t.Any) -> Modifier: ...
+ @_t.overload
+ def __call__(self, shape: pythonx.compose.ui.graphics.Shape, block: _t.Callable[[_t.Any], None]) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_dropShadow__Shape_Shadow(_t.Protocol):
+ def __call__(self, shape: pythonx.compose.ui.graphics.Shape, shadow: _t.Any) -> Modifier: ...
+
+class _Modifier_dropShadow__Shape_Unit(_t.Protocol):
+ def __call__(self, shape: pythonx.compose.ui.graphics.Shape, block: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_fillMaxHeight(_t.Protocol):
+ def __call__(self, fraction: float = ...) -> Modifier: ...
+
+class _Modifier_fillMaxSize(_t.Protocol):
+ def __call__(self, fraction: float = ...) -> Modifier: ...
+
+class _Modifier_fillMaxWidth(_t.Protocol):
+ def __call__(self, fraction: float = ...) -> Modifier: ...
+
+class _Modifier_fitInside(_t.Protocol):
+ def __call__(self, rulers: _t.Any) -> Modifier: ...
+
+class _Modifier_fitOutside(_t.Protocol):
+ def __call__(self, rulers: _t.Any) -> Modifier: ...
+
+class _Modifier_focusModifier(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_focusOrder(_t.Protocol):
+ @_t.overload
+ def __call__(self, focus_requester: _t.Any) -> Modifier: ...
+ @_t.overload
+ def __call__(self, focus_requester: _t.Any, focus_order_receiver: _t.Callable[[_t.Any], None]) -> Modifier: ... # type: ignore[overload-cannot-match]
+ @_t.overload
+ def __call__(self, focus_order_receiver: _t.Callable[[_t.Any], None]) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_focusOrder__FocusRequester(_t.Protocol):
+ def __call__(self, focus_requester: _t.Any) -> Modifier: ...
+
+class _Modifier_focusOrder__FocusRequester_Unit(_t.Protocol):
+ def __call__(self, focus_requester: _t.Any, focus_order_receiver: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_focusOrder__Unit(_t.Protocol):
+ def __call__(self, focus_order_receiver: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_focusProperties(_t.Protocol):
+ def __call__(self, scope: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_focusRequester(_t.Protocol):
+ def __call__(self, focus_requester: _t.Any) -> Modifier: ...
+
+class _Modifier_focusRestorer(_t.Protocol):
+ @_t.overload
+ def __call__(self, fallback: _t.Any = ...) -> Modifier: ...
+ @_t.overload
+ def __call__(self, on_restore_failed: _t.Callable[[], _t.Any] | None) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_focusRestorer__androidx_compose_ui_Modifier_androidx_compose_ui_focus_FocusRequester(_t.Protocol):
+ def __call__(self, fallback: _t.Any = ...) -> Modifier: ...
+
+class _Modifier_focusRestorer__androidx_compose_ui_Modifier_kotlin_Function0____androidx_compose_ui_focus_FocusRequester(_t.Protocol):
+ def __call__(self, on_restore_failed: _t.Callable[[], _t.Any] | None) -> Modifier: ...
+
+class _Modifier_focusTarget(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_graphicsLayer(_t.Protocol):
+ @_t.overload
+ def __call__(self, scale_x: float, scale_y: float, alpha: float, translation_x: float, translation_y: float, shadow_elevation: float, rotation_x: float, rotation_y: float, rotation_z: float, camera_distance: float, transform_origin: _t.Any, shape: pythonx.compose.ui.graphics.Shape, clip: bool, render_effect: pythonx.compose.ui.graphics.RenderEffect | None, ambient_shadow_color: _t.Any, spot_shadow_color: _t.Any, compositing_strategy: _t.Any, blend_mode: _t.Any, color_filter: pythonx.compose.ui.graphics.ColorFilter | None) -> Modifier: ...
+ @_t.overload
+ def __call__(self, block: _t.Callable[[_t.Any], None]) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_graphicsLayer__Float_Float_Float_Float_Float_Float_Float_Float_Float_Float_TransformOrigin_Shape_Boolean_RenderEffect_Color_Color_CompositingStrategy_BlendMode_ColorFilter(_t.Protocol):
+ def __call__(self, scale_x: float, scale_y: float, alpha: float, translation_x: float, translation_y: float, shadow_elevation: float, rotation_x: float, rotation_y: float, rotation_z: float, camera_distance: float, transform_origin: _t.Any, shape: pythonx.compose.ui.graphics.Shape, clip: bool, render_effect: pythonx.compose.ui.graphics.RenderEffect | None, ambient_shadow_color: _t.Any, spot_shadow_color: _t.Any, compositing_strategy: _t.Any, blend_mode: _t.Any, color_filter: pythonx.compose.ui.graphics.ColorFilter | None) -> Modifier: ...
+
+class _Modifier_graphicsLayer__Unit(_t.Protocol):
+ def __call__(self, block: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_height(_t.Protocol):
+ @_t.overload
+ def __call__(self, height: float) -> Modifier: ...
+ @_t.overload
+ def __call__(self, intrinsic_size: pythonx.compose.layout.IntrinsicSize) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_heightIn(_t.Protocol):
+ def __call__(self, min: float = ..., max: float = ...) -> Modifier: ...
+
+class _Modifier_height__Dp(_t.Protocol):
+ def __call__(self, height: float) -> Modifier: ...
+
+class _Modifier_height__IntrinsicSize(_t.Protocol):
+ def __call__(self, intrinsic_size: pythonx.compose.layout.IntrinsicSize) -> Modifier: ...
+
+class _Modifier_imePadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_innerShadow(_t.Protocol):
+ @_t.overload
+ def __call__(self, shape: pythonx.compose.ui.graphics.Shape, shadow: _t.Any) -> Modifier: ...
+ @_t.overload
+ def __call__(self, shape: pythonx.compose.ui.graphics.Shape, block: _t.Callable[[_t.Any], None]) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_innerShadow__Shape_Shadow(_t.Protocol):
+ def __call__(self, shape: pythonx.compose.ui.graphics.Shape, shadow: _t.Any) -> Modifier: ...
+
+class _Modifier_innerShadow__Shape_Unit(_t.Protocol):
+ def __call__(self, shape: pythonx.compose.ui.graphics.Shape, block: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_inspectable(_t.Protocol):
+ def __call__(self, inspector_info: _t.Callable[[_t.Any], None], factory: _t.Callable[[Modifier], Modifier]) -> Modifier: ...
+
+class _Modifier_keepScreenOn(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_layout(_t.Protocol):
+ def __call__(self, measure: _t.Callable[[_t.Any, _t.Any, _t.Any], _t.Any]) -> Modifier: ...
+
+class _Modifier_layoutBounds(_t.Protocol):
+ def __call__(self, holder: _t.Any) -> Modifier: ...
+
+class _Modifier_mandatorySystemGesturesPadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_minimumInteractiveComponentSize(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_modifierLocalConsumer(_t.Protocol):
+ def __call__(self, consumer: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_modifierLocalProvider(_t.Protocol):
+ def __call__(self, key: _t.Any, value: _t.Callable[[], _t.Any | None]) -> Modifier: ...
+
+class _Modifier_mouseScrollFilter(_t.Protocol):
+ def __call__(self, on_mouse_scroll: _t.Callable[[_t.Any, _t.Any], bool]) -> Modifier: ...
+
+class _Modifier_navigationBarsPadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_nestedScroll(_t.Protocol):
+ def __call__(self, connection: _t.Any, dispatcher: _t.Any | None = ...) -> Modifier: ...
+
+class _Modifier_offset(_t.Protocol):
+ @_t.overload
+ def __call__(self, x: float = ..., y: float = ...) -> Modifier: ...
+ @_t.overload
+ def __call__(self, offset: _t.Callable[[_t.Any], _t.Any]) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_offset__Dp_Dp(_t.Protocol):
+ def __call__(self, x: float = ..., y: float = ...) -> Modifier: ...
+
+class _Modifier_offset__IntOffset(_t.Protocol):
+ def __call__(self, offset: _t.Callable[[_t.Any], _t.Any]) -> Modifier: ...
+
+class _Modifier_onConsumedWindowInsetsChanged(_t.Protocol):
+ def __call__(self, block: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_onFirstVisible(_t.Protocol):
+ def __call__(self, min_duration_ms: int = ..., min_fraction_visible: float = ..., viewport_bounds: _t.Any | None = ..., *, callback: _t.Callable[[], None]) -> Modifier: ...
+
+class _Modifier_onFocusChanged(_t.Protocol):
+ def __call__(self, on_focus_changed: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_onFocusEvent(_t.Protocol):
+ def __call__(self, on_focus_event: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_onGloballyPositioned(_t.Protocol):
+ def __call__(self, on_globally_positioned: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_onInterceptKeyBeforeSoftKeyboard(_t.Protocol):
+ def __call__(self, on_intercept_key_before_soft_keyboard: _t.Callable[[_t.Any], bool]) -> Modifier: ...
+
+class _Modifier_onKeyEvent(_t.Protocol):
+ def __call__(self, on_key_event: _t.Callable[[_t.Any], bool]) -> Modifier: ...
+
+class _Modifier_onLayoutRectChanged(_t.Protocol):
+ def __call__(self, throttle_millis: int = ..., debounce_millis: int = ..., *, callback: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_onPlaced(_t.Protocol):
+ def __call__(self, on_placed: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_onPointerEvent(_t.Protocol):
+ def __call__(self, event_type: _t.Any, __a1: _t.Any, /, on_event: _t.Callable[[_t.Any, _t.Any], None]) -> Modifier: ...
+
+class _Modifier_onPreInterceptKeyBeforeSoftKeyboard(_t.Protocol):
+ def __call__(self, on_pre_intercept_key_before_soft_keyboard: _t.Callable[[_t.Any], bool]) -> Modifier: ...
+
+class _Modifier_onPreRotaryScrollEvent(_t.Protocol):
+ def __call__(self, on_pre_rotary_scroll_event: _t.Callable[[_t.Any], bool]) -> Modifier: ...
+
+class _Modifier_onPreviewKeyEvent(_t.Protocol):
+ def __call__(self, on_preview_key_event: _t.Callable[[_t.Any], bool]) -> Modifier: ...
+
+class _Modifier_onRotaryScrollEvent(_t.Protocol):
+ def __call__(self, on_rotary_scroll_event: _t.Callable[[_t.Any], bool]) -> Modifier: ...
+
+class _Modifier_onSizeChanged(_t.Protocol):
+ def __call__(self, on_size_changed: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_onVisibilityChanged(_t.Protocol):
+ def __call__(self, min_duration_ms: int = ..., min_fraction_visible: float = ..., viewport_bounds: _t.Any | None = ..., *, callback: _t.Callable[[bool], None]) -> Modifier: ...
+
+class _Modifier_padding(_t.Protocol):
+ @_t.overload
+ def __call__(self, all: float) -> Modifier: ...
+ @_t.overload
+ def __call__(self, horizontal: float = ..., vertical: float = ...) -> Modifier: ... # type: ignore[overload-cannot-match]
+ @_t.overload
+ def __call__(self, start: float = ..., top: float = ..., end: float = ..., bottom: float = ...) -> Modifier: ... # type: ignore[overload-cannot-match]
+ @_t.overload
+ def __call__(self, padding_values: _t.Any) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_paddingFrom(_t.Protocol):
+ @_t.overload
+ def __call__(self, alignment_line: _t.Any, before: float = ..., after: float = ...) -> Modifier: ...
+ @_t.overload
+ def __call__(self, alignment_line: _t.Any, before: _t.Any = ..., after: _t.Any = ...) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_paddingFromBaseline(_t.Protocol):
+ @_t.overload
+ def __call__(self, top: float = ..., bottom: float = ...) -> Modifier: ...
+ @_t.overload
+ def __call__(self, top: _t.Any = ..., bottom: _t.Any = ...) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_paddingFromBaseline__Dp_Dp(_t.Protocol):
+ def __call__(self, top: float = ..., bottom: float = ...) -> Modifier: ...
+
+class _Modifier_paddingFromBaseline__TextUnit_TextUnit(_t.Protocol):
+ def __call__(self, top: _t.Any = ..., bottom: _t.Any = ...) -> Modifier: ...
+
+class _Modifier_paddingFrom__AlignmentLine_Dp_Dp(_t.Protocol):
+ def __call__(self, alignment_line: _t.Any, before: float = ..., after: float = ...) -> Modifier: ...
+
+class _Modifier_paddingFrom__AlignmentLine_TextUnit_TextUnit(_t.Protocol):
+ def __call__(self, alignment_line: _t.Any, before: _t.Any = ..., after: _t.Any = ...) -> Modifier: ...
+
+class _Modifier_padding__Dp(_t.Protocol):
+ def __call__(self, all: float) -> Modifier: ...
+
+class _Modifier_padding__Dp_Dp(_t.Protocol):
+ def __call__(self, horizontal: float = ..., vertical: float = ...) -> Modifier: ...
+
+class _Modifier_padding__Dp_Dp_Dp_Dp(_t.Protocol):
+ def __call__(self, start: float = ..., top: float = ..., end: float = ..., bottom: float = ...) -> Modifier: ...
+
+class _Modifier_padding__PaddingValues(_t.Protocol):
+ def __call__(self, padding_values: _t.Any) -> Modifier: ...
+
+class _Modifier_paint(_t.Protocol):
+ def __call__(self, painter: _t.Any, size_to_intrinsics: bool = ..., alignment: _t.Any = ..., content_scale: _t.Any = ..., alpha: float = ..., color_filter: pythonx.compose.ui.graphics.ColorFilter | None = ...) -> Modifier: ...
+
+class _Modifier_pointerHoverIcon(_t.Protocol):
+ def __call__(self, icon: _t.Any, override_descendants: bool = ...) -> Modifier: ...
+
+class _Modifier_pointerInput(_t.Protocol):
+ @_t.overload
+ def __call__(self, key1: _t.Any | None, key2: _t.Any | None, block: _t.Any) -> Modifier: ...
+ @_t.overload
+ def __call__(self, key1: _t.Any | None, block: _t.Any) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_pointerInput__Any_Any_PointerInputEventHandler(_t.Protocol):
+ def __call__(self, key1: _t.Any | None, key2: _t.Any | None, block: _t.Any) -> Modifier: ...
+
+class _Modifier_pointerInput__Any_PointerInputEventHandler(_t.Protocol):
+ def __call__(self, key1: _t.Any | None, block: _t.Any) -> Modifier: ...
+
+class _Modifier_pointerMoveFilter(_t.Protocol):
+ def __call__(self, on_move: _t.Callable[[_t.Any], bool] = ..., on_exit: _t.Callable[[], bool] = ..., on_enter: _t.Callable[[], bool] = ...) -> Modifier: ...
+
+class _Modifier_preferredFrameRate(_t.Protocol):
+ @_t.overload
+ def __call__(self, frame_rate: float) -> Modifier: ...
+ @_t.overload
+ def __call__(self, frame_rate_category: _t.Any) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_preferredFrameRate__Float(_t.Protocol):
+ def __call__(self, frame_rate: float) -> Modifier: ...
+
+class _Modifier_preferredFrameRate__FrameRateCategory(_t.Protocol):
+ def __call__(self, frame_rate_category: _t.Any) -> Modifier: ...
+
+class _Modifier_pullToRefresh(_t.Protocol):
+ def __call__(self, is_refreshing: bool, state: _t.Any, enabled: bool = ..., threshold: float = ..., *, on_refresh: _t.Callable[[], None]) -> Modifier: ...
+
+class _Modifier_recalculateWindowInsets(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_requiredHeight(_t.Protocol):
+ @_t.overload
+ def __call__(self, height: float) -> Modifier: ...
+ @_t.overload
+ def __call__(self, intrinsic_size: pythonx.compose.layout.IntrinsicSize) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_requiredHeightIn(_t.Protocol):
+ def __call__(self, min: float = ..., max: float = ...) -> Modifier: ...
+
+class _Modifier_requiredHeight__Dp(_t.Protocol):
+ def __call__(self, height: float) -> Modifier: ...
+
+class _Modifier_requiredHeight__IntrinsicSize(_t.Protocol):
+ def __call__(self, intrinsic_size: pythonx.compose.layout.IntrinsicSize) -> Modifier: ...
+
+class _Modifier_requiredSize(_t.Protocol):
+ @_t.overload
+ def __call__(self, size: float) -> Modifier: ...
+ @_t.overload
+ def __call__(self, size: _t.Any) -> Modifier: ... # type: ignore[overload-cannot-match]
+ @_t.overload
+ def __call__(self, width: float, height: float) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_requiredSizeIn(_t.Protocol):
+ def __call__(self, min_width: float = ..., min_height: float = ..., max_width: float = ..., max_height: float = ...) -> Modifier: ...
+
+class _Modifier_requiredSize__Dp(_t.Protocol):
+ def __call__(self, size: float) -> Modifier: ...
+
+class _Modifier_requiredSize__DpSize(_t.Protocol):
+ def __call__(self, size: _t.Any) -> Modifier: ...
+
+class _Modifier_requiredSize__Dp_Dp(_t.Protocol):
+ def __call__(self, width: float, height: float) -> Modifier: ...
+
+class _Modifier_requiredWidth(_t.Protocol):
+ @_t.overload
+ def __call__(self, width: float) -> Modifier: ...
+ @_t.overload
+ def __call__(self, intrinsic_size: pythonx.compose.layout.IntrinsicSize) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_requiredWidthIn(_t.Protocol):
+ def __call__(self, min: float = ..., max: float = ...) -> Modifier: ...
+
+class _Modifier_requiredWidth__Dp(_t.Protocol):
+ def __call__(self, width: float) -> Modifier: ...
+
+class _Modifier_requiredWidth__IntrinsicSize(_t.Protocol):
+ def __call__(self, intrinsic_size: pythonx.compose.layout.IntrinsicSize) -> Modifier: ...
+
+class _Modifier_rotate(_t.Protocol):
+ def __call__(self, degrees: float) -> Modifier: ...
+
+class _Modifier_safeContentPadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_safeDrawingPadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_safeGesturesPadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_scale(_t.Protocol):
+ @_t.overload
+ def __call__(self, scale: float) -> Modifier: ...
+ @_t.overload
+ def __call__(self, scale_x: float, scale_y: float) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_scale__Float(_t.Protocol):
+ def __call__(self, scale: float) -> Modifier: ...
+
+class _Modifier_scale__Float_Float(_t.Protocol):
+ def __call__(self, scale_x: float, scale_y: float) -> Modifier: ...
+
+class _Modifier_semantics(_t.Protocol):
+ def __call__(self, merge_descendants: bool = ..., *, properties: _t.Callable[[_t.Any], None]) -> Modifier: ...
+
+class _Modifier_sensitiveContent(_t.Protocol):
+ def __call__(self, is_content_sensitive: bool = ...) -> Modifier: ...
+
+class _Modifier_shadow(_t.Protocol):
+ def __call__(self, elevation: float, shape: pythonx.compose.ui.graphics.Shape = ..., clip: bool = ..., ambient_color: _t.Any = ..., spot_color: _t.Any = ...) -> Modifier: ...
+
+class _Modifier_size(_t.Protocol):
+ @_t.overload
+ def __call__(self, size: float) -> Modifier: ...
+ @_t.overload
+ def __call__(self, size: _t.Any) -> Modifier: ... # type: ignore[overload-cannot-match]
+ @_t.overload
+ def __call__(self, width: float, height: float) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_sizeIn(_t.Protocol):
+ def __call__(self, min_width: float = ..., min_height: float = ..., max_width: float = ..., max_height: float = ...) -> Modifier: ...
+
+class _Modifier_size__Dp(_t.Protocol):
+ def __call__(self, size: float) -> Modifier: ...
+
+class _Modifier_size__DpSize(_t.Protocol):
+ def __call__(self, size: _t.Any) -> Modifier: ...
+
+class _Modifier_size__Dp_Dp(_t.Protocol):
+ def __call__(self, width: float, height: float) -> Modifier: ...
+
+class _Modifier_statusBarsPadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_stylusHoverIcon(_t.Protocol):
+ def __call__(self, icon: _t.Any, override_descendants: bool = ..., touch_bounds_expansion: _t.Any | None = ...) -> Modifier: ...
+
+class _Modifier_systemBarsPadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_systemGesturesPadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_testTag(_t.Protocol):
+ def __call__(self, tag: str) -> Modifier: ...
+
+class _Modifier_toolingGraphicsLayer(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_visible(_t.Protocol):
+ def __call__(self, visible: bool) -> Modifier: ...
+
+class _Modifier_waterfallPadding(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_width(_t.Protocol):
+ @_t.overload
+ def __call__(self, width: float) -> Modifier: ...
+ @_t.overload
+ def __call__(self, intrinsic_size: pythonx.compose.layout.IntrinsicSize) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_widthIn(_t.Protocol):
+ def __call__(self, min: float = ..., max: float = ...) -> Modifier: ...
+
+class _Modifier_width__Dp(_t.Protocol):
+ def __call__(self, width: float) -> Modifier: ...
+
+class _Modifier_width__IntrinsicSize(_t.Protocol):
+ def __call__(self, intrinsic_size: pythonx.compose.layout.IntrinsicSize) -> Modifier: ...
+
+class _Modifier_windowInsetsBottomHeight(_t.Protocol):
+ def __call__(self, insets: _t.Any) -> Modifier: ...
+
+class _Modifier_windowInsetsEndWidth(_t.Protocol):
+ def __call__(self, insets: _t.Any) -> Modifier: ...
+
+class _Modifier_windowInsetsPadding(_t.Protocol):
+ def __call__(self, insets: _t.Any) -> Modifier: ...
+
+class _Modifier_windowInsetsStartWidth(_t.Protocol):
+ def __call__(self, insets: _t.Any) -> Modifier: ...
+
+class _Modifier_windowInsetsTopHeight(_t.Protocol):
+ def __call__(self, insets: _t.Any) -> Modifier: ...
+
+class _Modifier_wrapContentHeight(_t.Protocol):
+ def __call__(self, align: Alignment.Vertical = ..., unbounded: bool = ...) -> Modifier: ...
+
+class _Modifier_wrapContentSize(_t.Protocol):
+ def __call__(self, align: _t.Any = ..., unbounded: bool = ...) -> Modifier: ...
+
+class _Modifier_wrapContentWidth(_t.Protocol):
+ def __call__(self, align: Alignment.Horizontal = ..., unbounded: bool = ...) -> Modifier: ...
+
+class _Modifier_zIndex(_t.Protocol):
+ def __call__(self, z_index: float) -> Modifier: ...
+
+class BiasAbsoluteAlignment:
+ """Kotlin: androidx.compose.ui.BiasAbsoluteAlignment"""
+ def __init__(self, horizontalBias: float, verticalBias: float) -> None:
+ """Kotlin constructor: androidx.compose.ui.BiasAbsoluteAlignment (androidx.compose.ui.BiasAbsoluteAlignment(horizontalBias: kotlin.Float, verticalBias: kotlin.Float): androidx.compose.ui.BiasAbsoluteAlignment)"""
+ ...
+ @property
+ def horizontal_bias(self) -> float:
+ """Kotlin property: androidx.compose.ui.BiasAbsoluteAlignment.horizontalBias (androidx.compose.ui.BiasAbsoluteAlignment.horizontalBias: kotlin.Float)"""
+ ...
+ @property
+ def vertical_bias(self) -> float:
+ """Kotlin property: androidx.compose.ui.BiasAbsoluteAlignment.verticalBias (androidx.compose.ui.BiasAbsoluteAlignment.verticalBias: kotlin.Float)"""
+ ...
+
+class BiasAlignment:
+ """Kotlin: androidx.compose.ui.BiasAlignment"""
+ def __init__(self, horizontalBias: float, verticalBias: float) -> None:
+ """Kotlin constructor: androidx.compose.ui.BiasAlignment (androidx.compose.ui.BiasAlignment(horizontalBias: kotlin.Float, verticalBias: kotlin.Float): androidx.compose.ui.BiasAlignment)"""
+ ...
+ @property
+ def horizontal_bias(self) -> float:
+ """Kotlin property: androidx.compose.ui.BiasAlignment.horizontalBias (androidx.compose.ui.BiasAlignment.horizontalBias: kotlin.Float)"""
+ ...
+ @property
+ def vertical_bias(self) -> float:
+ """Kotlin property: androidx.compose.ui.BiasAlignment.verticalBias (androidx.compose.ui.BiasAlignment.verticalBias: kotlin.Float)"""
+ ...
+
+class CombinedModifier(Modifier):
+ """Kotlin: androidx.compose.ui.CombinedModifier"""
+ def __init__(self, outer: Modifier, inner: Modifier) -> None:
+ """Kotlin constructor: androidx.compose.ui.CombinedModifier (androidx.compose.ui.CombinedModifier(outer: androidx.compose.ui.Modifier, inner: androidx.compose.ui.Modifier): androidx.compose.ui.CombinedModifier)"""
+ ...
+
+class ImageComposeScene:
+ """Kotlin: androidx.compose.ui.ImageComposeScene"""
+ use: _t.ClassVar[_ImageComposeScene_use]
+ @property
+ def constraints(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.ImageComposeScene.constraints (androidx.compose.ui.ImageComposeScene.constraints: androidx.compose.ui.unit.Constraints)"""
+ ...
+ @constraints.setter
+ def constraints(self, value: int) -> None:
+ """Kotlin property: androidx.compose.ui.ImageComposeScene.constraints="""
+ ...
+ @property
+ def content_size(self) -> int:
+ """Kotlin property: androidx.compose.ui.ImageComposeScene.contentSize (androidx.compose.ui.ImageComposeScene.contentSize: androidx.compose.ui.unit.IntSize)"""
+ ...
+ @property
+ def layout_direction(self) -> pythonx.compose.ui.unit.LayoutDirection:
+ """Kotlin property: androidx.compose.ui.ImageComposeScene.layoutDirection (androidx.compose.ui.ImageComposeScene.layoutDirection: androidx.compose.ui.unit.LayoutDirection)"""
+ ...
+ @layout_direction.setter
+ def layout_direction(self, value: pythonx.compose.ui.unit.LayoutDirection) -> None:
+ """Kotlin property: androidx.compose.ui.ImageComposeScene.layoutDirection="""
+ ...
+
+class Modifier:
+ """Kotlin: androidx.compose.ui.Modifier"""
+ absolute_offset: _t.ClassVar[_Modifier_absoluteOffset]
+ absolute_offset__Dp_Dp: _t.ClassVar[_Modifier_absoluteOffset__Dp_Dp]
+ absolute_offset__IntOffset: _t.ClassVar[_Modifier_absoluteOffset__IntOffset]
+ absolute_padding: _t.ClassVar[_Modifier_absolutePadding]
+ alpha: _t.ClassVar[_Modifier_alpha]
+ approach_layout: _t.ClassVar[_Modifier_approachLayout]
+ aspect_ratio: _t.ClassVar[_Modifier_aspectRatio]
+ blur: _t.ClassVar[_Modifier_blur]
+ blur__Dp_BlurredEdgeTreatment: _t.ClassVar[_Modifier_blur__Dp_BlurredEdgeTreatment]
+ blur__Dp_Dp_BlurredEdgeTreatment: _t.ClassVar[_Modifier_blur__Dp_Dp_BlurredEdgeTreatment]
+ caption_bar_padding: _t.ClassVar[_Modifier_captionBarPadding]
+ clear_and_set_semantics: _t.ClassVar[_Modifier_clearAndSetSemantics]
+ clip: _t.ClassVar[_Modifier_clip]
+ clip_to_bounds: _t.ClassVar[_Modifier_clipToBounds]
+ consume_window_insets: _t.ClassVar[_Modifier_consumeWindowInsets]
+ consume_window_insets__PaddingValues: _t.ClassVar[_Modifier_consumeWindowInsets__PaddingValues]
+ consume_window_insets__WindowInsets: _t.ClassVar[_Modifier_consumeWindowInsets__WindowInsets]
+ content_type: _t.ClassVar[_Modifier_contentType]
+ default_min_size: _t.ClassVar[_Modifier_defaultMinSize]
+ display_cutout_padding: _t.ClassVar[_Modifier_displayCutoutPadding]
+ draw_behind: _t.ClassVar[_Modifier_drawBehind]
+ draw_with_cache: _t.ClassVar[_Modifier_drawWithCache]
+ draw_with_content: _t.ClassVar[_Modifier_drawWithContent]
+ drop_shadow: _t.ClassVar[_Modifier_dropShadow]
+ drop_shadow__Shape_Shadow: _t.ClassVar[_Modifier_dropShadow__Shape_Shadow]
+ drop_shadow__Shape_Unit: _t.ClassVar[_Modifier_dropShadow__Shape_Unit]
+ fill_max_height: _t.ClassVar[_Modifier_fillMaxHeight]
+ fill_max_size: _t.ClassVar[_Modifier_fillMaxSize]
+ fill_max_width: _t.ClassVar[_Modifier_fillMaxWidth]
+ fit_inside: _t.ClassVar[_Modifier_fitInside]
+ fit_outside: _t.ClassVar[_Modifier_fitOutside]
+ focus_modifier: _t.ClassVar[_Modifier_focusModifier]
+ focus_order: _t.ClassVar[_Modifier_focusOrder]
+ focus_order__FocusRequester: _t.ClassVar[_Modifier_focusOrder__FocusRequester]
+ focus_order__FocusRequester_Unit: _t.ClassVar[_Modifier_focusOrder__FocusRequester_Unit]
+ focus_order__Unit: _t.ClassVar[_Modifier_focusOrder__Unit]
+ focus_properties: _t.ClassVar[_Modifier_focusProperties]
+ focus_requester: _t.ClassVar[_Modifier_focusRequester]
+ focus_restorer: _t.ClassVar[_Modifier_focusRestorer]
+ focus_restorer__androidx_compose_ui_Modifier_androidx_compose_ui_focus_FocusRequester: _t.ClassVar[_Modifier_focusRestorer__androidx_compose_ui_Modifier_androidx_compose_ui_focus_FocusRequester]
+ focus_restorer__androidx_compose_ui_Modifier_kotlin_Function0____androidx_compose_ui_focus_FocusRequester: _t.ClassVar[_Modifier_focusRestorer__androidx_compose_ui_Modifier_kotlin_Function0____androidx_compose_ui_focus_FocusRequester]
+ focus_target: _t.ClassVar[_Modifier_focusTarget]
+ graphics_layer: _t.ClassVar[_Modifier_graphicsLayer]
+ graphics_layer__Float_Float_Float_Float_Float_Float_Float_Float_Float_Float_TransformOrigin_Shape_Boolean_RenderEffect_Color_Color_CompositingStrategy_BlendMode_ColorFilter: _t.ClassVar[_Modifier_graphicsLayer__Float_Float_Float_Float_Float_Float_Float_Float_Float_Float_TransformOrigin_Shape_Boolean_RenderEffect_Color_Color_CompositingStrategy_BlendMode_ColorFilter]
+ graphics_layer__Unit: _t.ClassVar[_Modifier_graphicsLayer__Unit]
+ height: _t.ClassVar[_Modifier_height]
+ height_in: _t.ClassVar[_Modifier_heightIn]
+ height__Dp: _t.ClassVar[_Modifier_height__Dp]
+ height__IntrinsicSize: _t.ClassVar[_Modifier_height__IntrinsicSize]
+ ime_padding: _t.ClassVar[_Modifier_imePadding]
+ inner_shadow: _t.ClassVar[_Modifier_innerShadow]
+ inner_shadow__Shape_Shadow: _t.ClassVar[_Modifier_innerShadow__Shape_Shadow]
+ inner_shadow__Shape_Unit: _t.ClassVar[_Modifier_innerShadow__Shape_Unit]
+ inspectable: _t.ClassVar[_Modifier_inspectable]
+ keep_screen_on: _t.ClassVar[_Modifier_keepScreenOn]
+ layout: _t.ClassVar[_Modifier_layout]
+ layout_bounds: _t.ClassVar[_Modifier_layoutBounds]
+ mandatory_system_gestures_padding: _t.ClassVar[_Modifier_mandatorySystemGesturesPadding]
+ minimum_interactive_component_size: _t.ClassVar[_Modifier_minimumInteractiveComponentSize]
+ modifier_local_consumer: _t.ClassVar[_Modifier_modifierLocalConsumer]
+ modifier_local_provider: _t.ClassVar[_Modifier_modifierLocalProvider]
+ mouse_scroll_filter: _t.ClassVar[_Modifier_mouseScrollFilter]
+ navigation_bars_padding: _t.ClassVar[_Modifier_navigationBarsPadding]
+ nested_scroll: _t.ClassVar[_Modifier_nestedScroll]
+ offset: _t.ClassVar[_Modifier_offset]
+ offset__Dp_Dp: _t.ClassVar[_Modifier_offset__Dp_Dp]
+ offset__IntOffset: _t.ClassVar[_Modifier_offset__IntOffset]
+ on_consumed_window_insets_changed: _t.ClassVar[_Modifier_onConsumedWindowInsetsChanged]
+ on_first_visible: _t.ClassVar[_Modifier_onFirstVisible]
+ on_focus_changed: _t.ClassVar[_Modifier_onFocusChanged]
+ on_focus_event: _t.ClassVar[_Modifier_onFocusEvent]
+ on_globally_positioned: _t.ClassVar[_Modifier_onGloballyPositioned]
+ on_intercept_key_before_soft_keyboard: _t.ClassVar[_Modifier_onInterceptKeyBeforeSoftKeyboard]
+ on_key_event: _t.ClassVar[_Modifier_onKeyEvent]
+ on_layout_rect_changed: _t.ClassVar[_Modifier_onLayoutRectChanged]
+ on_placed: _t.ClassVar[_Modifier_onPlaced]
+ on_pointer_event: _t.ClassVar[_Modifier_onPointerEvent]
+ on_pre_intercept_key_before_soft_keyboard: _t.ClassVar[_Modifier_onPreInterceptKeyBeforeSoftKeyboard]
+ on_pre_rotary_scroll_event: _t.ClassVar[_Modifier_onPreRotaryScrollEvent]
+ on_preview_key_event: _t.ClassVar[_Modifier_onPreviewKeyEvent]
+ on_rotary_scroll_event: _t.ClassVar[_Modifier_onRotaryScrollEvent]
+ on_size_changed: _t.ClassVar[_Modifier_onSizeChanged]
+ on_visibility_changed: _t.ClassVar[_Modifier_onVisibilityChanged]
+ padding: _t.ClassVar[_Modifier_padding]
+ padding_from: _t.ClassVar[_Modifier_paddingFrom]
+ padding_from_baseline: _t.ClassVar[_Modifier_paddingFromBaseline]
+ padding_from_baseline__Dp_Dp: _t.ClassVar[_Modifier_paddingFromBaseline__Dp_Dp]
+ padding_from_baseline__TextUnit_TextUnit: _t.ClassVar[_Modifier_paddingFromBaseline__TextUnit_TextUnit]
+ padding_from__AlignmentLine_Dp_Dp: _t.ClassVar[_Modifier_paddingFrom__AlignmentLine_Dp_Dp]
+ padding_from__AlignmentLine_TextUnit_TextUnit: _t.ClassVar[_Modifier_paddingFrom__AlignmentLine_TextUnit_TextUnit]
+ padding__Dp: _t.ClassVar[_Modifier_padding__Dp]
+ padding__Dp_Dp: _t.ClassVar[_Modifier_padding__Dp_Dp]
+ padding__Dp_Dp_Dp_Dp: _t.ClassVar[_Modifier_padding__Dp_Dp_Dp_Dp]
+ padding__PaddingValues: _t.ClassVar[_Modifier_padding__PaddingValues]
+ paint: _t.ClassVar[_Modifier_paint]
+ pointer_hover_icon: _t.ClassVar[_Modifier_pointerHoverIcon]
+ pointer_input: _t.ClassVar[_Modifier_pointerInput]
+ pointer_input__Any_Any_PointerInputEventHandler: _t.ClassVar[_Modifier_pointerInput__Any_Any_PointerInputEventHandler]
+ pointer_input__Any_PointerInputEventHandler: _t.ClassVar[_Modifier_pointerInput__Any_PointerInputEventHandler]
+ pointer_move_filter: _t.ClassVar[_Modifier_pointerMoveFilter]
+ preferred_frame_rate: _t.ClassVar[_Modifier_preferredFrameRate]
+ preferred_frame_rate__Float: _t.ClassVar[_Modifier_preferredFrameRate__Float]
+ preferred_frame_rate__FrameRateCategory: _t.ClassVar[_Modifier_preferredFrameRate__FrameRateCategory]
+ pull_to_refresh: _t.ClassVar[_Modifier_pullToRefresh]
+ recalculate_window_insets: _t.ClassVar[_Modifier_recalculateWindowInsets]
+ required_height: _t.ClassVar[_Modifier_requiredHeight]
+ required_height_in: _t.ClassVar[_Modifier_requiredHeightIn]
+ required_height__Dp: _t.ClassVar[_Modifier_requiredHeight__Dp]
+ required_height__IntrinsicSize: _t.ClassVar[_Modifier_requiredHeight__IntrinsicSize]
+ required_size: _t.ClassVar[_Modifier_requiredSize]
+ required_size_in: _t.ClassVar[_Modifier_requiredSizeIn]
+ required_size__Dp: _t.ClassVar[_Modifier_requiredSize__Dp]
+ required_size__DpSize: _t.ClassVar[_Modifier_requiredSize__DpSize]
+ required_size__Dp_Dp: _t.ClassVar[_Modifier_requiredSize__Dp_Dp]
+ required_width: _t.ClassVar[_Modifier_requiredWidth]
+ required_width_in: _t.ClassVar[_Modifier_requiredWidthIn]
+ required_width__Dp: _t.ClassVar[_Modifier_requiredWidth__Dp]
+ required_width__IntrinsicSize: _t.ClassVar[_Modifier_requiredWidth__IntrinsicSize]
+ rotate: _t.ClassVar[_Modifier_rotate]
+ safe_content_padding: _t.ClassVar[_Modifier_safeContentPadding]
+ safe_drawing_padding: _t.ClassVar[_Modifier_safeDrawingPadding]
+ safe_gestures_padding: _t.ClassVar[_Modifier_safeGesturesPadding]
+ scale: _t.ClassVar[_Modifier_scale]
+ scale__Float: _t.ClassVar[_Modifier_scale__Float]
+ scale__Float_Float: _t.ClassVar[_Modifier_scale__Float_Float]
+ semantics: _t.ClassVar[_Modifier_semantics]
+ sensitive_content: _t.ClassVar[_Modifier_sensitiveContent]
+ shadow: _t.ClassVar[_Modifier_shadow]
+ size: _t.ClassVar[_Modifier_size]
+ size_in: _t.ClassVar[_Modifier_sizeIn]
+ size__Dp: _t.ClassVar[_Modifier_size__Dp]
+ size__DpSize: _t.ClassVar[_Modifier_size__DpSize]
+ size__Dp_Dp: _t.ClassVar[_Modifier_size__Dp_Dp]
+ status_bars_padding: _t.ClassVar[_Modifier_statusBarsPadding]
+ stylus_hover_icon: _t.ClassVar[_Modifier_stylusHoverIcon]
+ system_bars_padding: _t.ClassVar[_Modifier_systemBarsPadding]
+ system_gestures_padding: _t.ClassVar[_Modifier_systemGesturesPadding]
+ test_tag: _t.ClassVar[_Modifier_testTag]
+ tooling_graphics_layer: _t.ClassVar[_Modifier_toolingGraphicsLayer]
+ visible: _t.ClassVar[_Modifier_visible]
+ waterfall_padding: _t.ClassVar[_Modifier_waterfallPadding]
+ width: _t.ClassVar[_Modifier_width]
+ width_in: _t.ClassVar[_Modifier_widthIn]
+ width__Dp: _t.ClassVar[_Modifier_width__Dp]
+ width__IntrinsicSize: _t.ClassVar[_Modifier_width__IntrinsicSize]
+ window_insets_bottom_height: _t.ClassVar[_Modifier_windowInsetsBottomHeight]
+ window_insets_end_width: _t.ClassVar[_Modifier_windowInsetsEndWidth]
+ window_insets_padding: _t.ClassVar[_Modifier_windowInsetsPadding]
+ window_insets_start_width: _t.ClassVar[_Modifier_windowInsetsStartWidth]
+ window_insets_top_height: _t.ClassVar[_Modifier_windowInsetsTopHeight]
+ wrap_content_height: _t.ClassVar[_Modifier_wrapContentHeight]
+ wrap_content_size: _t.ClassVar[_Modifier_wrapContentSize]
+ wrap_content_width: _t.ClassVar[_Modifier_wrapContentWidth]
+ z_index: _t.ClassVar[_Modifier_zIndex]
+ class Element:
+ """Kotlin: androidx.compose.ui.Modifier.Element"""
+ class Node:
+ """Kotlin: androidx.compose.ui.Modifier.Node"""
+
+class MotionDurationScale:
+ """Kotlin: androidx.compose.ui.MotionDurationScale"""
+ @property
+ def key(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.MotionDurationScale.key (androidx.compose.ui.MotionDurationScale.key: kotlin.coroutines.CoroutineContext.Key)"""
+ ...
+ @property
+ def scale_factor(self) -> float:
+ """Kotlin property: androidx.compose.ui.MotionDurationScale.scaleFactor (androidx.compose.ui.MotionDurationScale.scaleFactor: kotlin.Float)"""
+ ...
+
+class UiMediaScope:
+ """Kotlin: androidx.compose.ui.UiMediaScope"""
+ @property
+ def has_camera(self) -> bool:
+ """Kotlin property: androidx.compose.ui.UiMediaScope.hasCamera (androidx.compose.ui.UiMediaScope.hasCamera: kotlin.Boolean)"""
+ ...
+ @property
+ def has_microphone(self) -> bool:
+ """Kotlin property: androidx.compose.ui.UiMediaScope.hasMicrophone (androidx.compose.ui.UiMediaScope.hasMicrophone: kotlin.Boolean)"""
+ ...
+ @property
+ def keyboard_kind(self) -> UiMediaScope.KeyboardKind:
+ """Kotlin property: androidx.compose.ui.UiMediaScope.keyboardKind (androidx.compose.ui.UiMediaScope.keyboardKind: androidx.compose.ui.UiMediaScope.KeyboardKind)"""
+ ...
+ @property
+ def pointer_precision(self) -> UiMediaScope.PointerPrecision:
+ """Kotlin property: androidx.compose.ui.UiMediaScope.pointerPrecision (androidx.compose.ui.UiMediaScope.pointerPrecision: androidx.compose.ui.UiMediaScope.PointerPrecision)"""
+ ...
+ @property
+ def viewing_distance(self) -> UiMediaScope.ViewingDistance:
+ """Kotlin property: androidx.compose.ui.UiMediaScope.viewingDistance (androidx.compose.ui.UiMediaScope.viewingDistance: androidx.compose.ui.UiMediaScope.ViewingDistance)"""
+ ...
+ @property
+ def window_height(self) -> float:
+ """Kotlin property: androidx.compose.ui.UiMediaScope.windowHeight (androidx.compose.ui.UiMediaScope.windowHeight: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def window_posture(self) -> UiMediaScope.Posture:
+ """Kotlin property: androidx.compose.ui.UiMediaScope.windowPosture (androidx.compose.ui.UiMediaScope.windowPosture: androidx.compose.ui.UiMediaScope.Posture)"""
+ ...
+ @property
+ def window_width(self) -> float:
+ """Kotlin property: androidx.compose.ui.UiMediaScope.windowWidth (androidx.compose.ui.UiMediaScope.windowWidth: androidx.compose.ui.unit.Dp)"""
+ ...
+ class KeyboardKind:
+ """Kotlin: androidx.compose.ui.UiMediaScope.KeyboardKind"""
+ class PointerPrecision:
+ """Kotlin: androidx.compose.ui.UiMediaScope.PointerPrecision"""
+ class Posture:
+ """Kotlin: androidx.compose.ui.UiMediaScope.Posture"""
+ class ViewingDistance:
+ """Kotlin: androidx.compose.ui.UiMediaScope.ViewingDistance"""
+
+def configure_swing_globals_for_compose(override_look_and_feel: bool = ..., use_screen_menu_bar_on_mac_os: bool = ..., use_auto_dpi_on_linux: bool = ...) -> None:
+ """Kotlin: androidx.compose.ui.configureSwingGlobalsForCompose(overrideLookAndFeel: kotlin.Boolean, useScreenMenuBarOnMacOs: kotlin.Boolean, useAutoDpiOnLinux: kotlin.Boolean): kotlin.Unit"""
+ ...
+
+def derived_media_query(query: _t.Callable[[UiMediaScope], bool]) -> pythonx.compose.runtime.State:
+ """Kotlin: androidx.compose.ui.derivedMediaQuery(query: kotlin.Function1): androidx.compose.runtime.State"""
+ ...
+
+def keep_screen_on(receiver: Modifier, /) -> Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.keepScreenOn(): androidx.compose.ui.Modifier"""
+ ...
+
+def materialize(receiver: pythonx.compose.runtime.Composer, /, modifier: Modifier) -> Modifier:
+ """Kotlin: androidx.compose.runtime.Composer.materialize(modifier: androidx.compose.ui.Modifier): androidx.compose.ui.Modifier"""
+ ...
+
+def media_query__Boolean(query: _t.Callable[[UiMediaScope], bool]) -> bool:
+ """Kotlin: androidx.compose.ui.mediaQuery(query: kotlin.Function1): kotlin.Boolean"""
+ ...
+
+def media_query__CompositionLocalAccessorScope_Boolean(receiver: pythonx.compose.runtime.CompositionLocalAccessorScope, /, query: _t.Callable[[UiMediaScope], bool]) -> bool:
+ """Kotlin: androidx.compose.runtime.CompositionLocalAccessorScope.mediaQuery(query: kotlin.Function1): kotlin.Boolean"""
+ ...
+
+def media_query__CompositionLocalConsumerModifierNode_Boolean(receiver: _t.Any, /, query: _t.Callable[[UiMediaScope], bool]) -> bool:
+ """Kotlin: androidx.compose.ui.node.CompositionLocalConsumerModifierNode.mediaQuery(query: kotlin.Function1): kotlin.Boolean"""
+ ...
+
+def preferred_frame_rate__Float(receiver: Modifier, /, frame_rate: float) -> Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.preferredFrameRate(frameRate: kotlin.Float): androidx.compose.ui.Modifier"""
+ ...
+
+def preferred_frame_rate__FrameRateCategory(receiver: Modifier, /, frame_rate_category: _t.Any) -> Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.preferredFrameRate(frameRateCategory: androidx.compose.ui.FrameRateCategory): androidx.compose.ui.Modifier"""
+ ...
+
+def sensitive_content(receiver: Modifier, /, is_content_sensitive: bool = ...) -> Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.sensitiveContent(isContentSensitive: kotlin.Boolean): androidx.compose.ui.Modifier"""
+ ...
+
+def use(receiver: ImageComposeScene, /, block: _t.Callable[[ImageComposeScene], _t.Any | None]) -> _t.Any | None:
+ """Kotlin: androidx.compose.ui.ImageComposeScene.use(block: kotlin.Function1): kotlin.Any"""
+ ...
+
+def z_index(receiver: Modifier, /, z_index: float) -> Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.zIndex(zIndex: kotlin.Float): androidx.compose.ui.Modifier"""
+ ...
+
+@_t.overload
+def media_query(query: _t.Callable[[UiMediaScope], bool]) -> bool: ...
+@_t.overload
+def media_query(receiver: pythonx.compose.runtime.CompositionLocalAccessorScope, /, query: _t.Callable[[UiMediaScope], bool]) -> bool: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def media_query(receiver: _t.Any, /, query: _t.Callable[[UiMediaScope], bool]) -> bool: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def preferred_frame_rate(receiver: Modifier, /, frame_rate: float) -> Modifier: ...
+@_t.overload
+def preferred_frame_rate(receiver: Modifier, /, frame_rate_category: _t.Any) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class AbsoluteAlignment:
+ """Kotlin: androidx.compose.ui.AbsoluteAlignment"""
+ BottomLeft: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.AbsoluteAlignment.BottomLeft(): androidx.compose.ui.Alignment"""
+ BottomRight: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.AbsoluteAlignment.BottomRight(): androidx.compose.ui.Alignment"""
+ CenterLeft: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.AbsoluteAlignment.CenterLeft(): androidx.compose.ui.Alignment"""
+ CenterRight: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.AbsoluteAlignment.CenterRight(): androidx.compose.ui.Alignment"""
+ Left: _t.ClassVar[Alignment.Horizontal]
+ """Kotlin: androidx.compose.ui.AbsoluteAlignment.Left(): androidx.compose.ui.Alignment.Horizontal"""
+ Right: _t.ClassVar[Alignment.Horizontal]
+ """Kotlin: androidx.compose.ui.AbsoluteAlignment.Right(): androidx.compose.ui.Alignment.Horizontal"""
+ TopLeft: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.AbsoluteAlignment.TopLeft(): androidx.compose.ui.Alignment"""
+ TopRight: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.AbsoluteAlignment.TopRight(): androidx.compose.ui.Alignment"""
+
+class Alignment:
+ """Kotlin: androidx.compose.ui.Alignment"""
+ class Horizontal:
+ """Kotlin: androidx.compose.ui.Alignment.Horizontal"""
+ CenterHorizontally: _t.ClassVar[Alignment.Horizontal]
+ End: _t.ClassVar[Alignment.Horizontal]
+ Start: _t.ClassVar[Alignment.Horizontal]
+ class Vertical:
+ """Kotlin: androidx.compose.ui.Alignment.Vertical"""
+ Bottom: _t.ClassVar[Alignment.Vertical]
+ CenterVertically: _t.ClassVar[Alignment.Vertical]
+ Top: _t.ClassVar[Alignment.Vertical]
+ Bottom: _t.ClassVar[Alignment.Vertical]
+ """Kotlin: androidx.compose.ui.Alignment.Bottom(): androidx.compose.ui.Alignment.Vertical"""
+ BottomCenter: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.Alignment.BottomCenter(): androidx.compose.ui.Alignment"""
+ BottomEnd: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.Alignment.BottomEnd(): androidx.compose.ui.Alignment"""
+ BottomStart: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.Alignment.BottomStart(): androidx.compose.ui.Alignment"""
+ Center: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.Alignment.Center(): androidx.compose.ui.Alignment"""
+ CenterEnd: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.Alignment.CenterEnd(): androidx.compose.ui.Alignment"""
+ CenterHorizontally: _t.ClassVar[Alignment.Horizontal]
+ """Kotlin: androidx.compose.ui.Alignment.CenterHorizontally(): androidx.compose.ui.Alignment.Horizontal"""
+ CenterStart: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.Alignment.CenterStart(): androidx.compose.ui.Alignment"""
+ CenterVertically: _t.ClassVar[Alignment.Vertical]
+ """Kotlin: androidx.compose.ui.Alignment.CenterVertically(): androidx.compose.ui.Alignment.Vertical"""
+ End: _t.ClassVar[Alignment.Horizontal]
+ """Kotlin: androidx.compose.ui.Alignment.End(): androidx.compose.ui.Alignment.Horizontal"""
+ Start: _t.ClassVar[Alignment.Horizontal]
+ """Kotlin: androidx.compose.ui.Alignment.Start(): androidx.compose.ui.Alignment.Horizontal"""
+ Top: _t.ClassVar[Alignment.Vertical]
+ """Kotlin: androidx.compose.ui.Alignment.Top(): androidx.compose.ui.Alignment.Vertical"""
+ TopCenter: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.Alignment.TopCenter(): androidx.compose.ui.Alignment"""
+ TopEnd: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.Alignment.TopEnd(): androidx.compose.ui.Alignment"""
+ TopStart: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.Alignment.TopStart(): androidx.compose.ui.Alignment"""
+
+class ComposeUiFlags:
+ """Kotlin: androidx.compose.ui.ComposeUiFlags"""
+ is_accessibility_should_include_offscreen_children_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isAccessibilityShouldIncludeOffscreenChildrenEnabled(): kotlin.Boolean"""
+ is_bypass_unfocusable_compose_view_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isBypassUnfocusableComposeViewEnabled(): kotlin.Boolean"""
+ is_focus_restoration_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isFocusRestorationEnabled(): kotlin.Boolean"""
+ is_graphics_layer_shape_semantics_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isGraphicsLayerShapeSemanticsEnabled(): kotlin.Boolean"""
+ is_indirect_pointer_navigation_gesture_detector_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled(): kotlin.Boolean"""
+ is_initial_focus_on_focusable_available: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isInitialFocusOnFocusableAvailable(): kotlin.Boolean"""
+ is_media_query_integration_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isMediaQueryIntegrationEnabled(): kotlin.Boolean"""
+ is_optimized_focus_event_dispatch_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isOptimizedFocusEventDispatchEnabled(): kotlin.Boolean"""
+ is_skip_non_important_semantics_nodes_hit_test_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isSkipNonImportantSemanticsNodesHitTestEnabled(): kotlin.Boolean"""
+ is_trackpad_gesture_handling_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isTrackpadGestureHandlingEnabled(): kotlin.Boolean"""
+ is_traversable_delegates_fix_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isTraversableDelegatesFixEnabled(): kotlin.Boolean"""
+ is_view_focus_fix_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.ComposeUiFlags.isViewFocusFixEnabled(): kotlin.Boolean"""
+
+class FrameRateCategory:
+ """Kotlin: androidx.compose.ui.FrameRateCategory"""
+ Default: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.FrameRateCategory.Default(): androidx.compose.ui.FrameRateCategory"""
+ High: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.FrameRateCategory.High(): androidx.compose.ui.FrameRateCategory"""
+ Normal: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.FrameRateCategory.Normal(): androidx.compose.ui.FrameRateCategory"""
diff --git a/pythonx/compose/ui/alignment.py b/pythonx/compose/ui/alignment.py
index 9b68396..07343d6 100644
--- a/pythonx/compose/ui/alignment.py
+++ b/pythonx/compose/ui/alignment.py
@@ -1,79 +1,47 @@
-from __future__ import annotations
-from ..wrapper import KotlinWrapper
+"""`pythonx/compose/ui/alignment.py` -- what the adaptation layer now produces, and how to spell it.
-from java import jclass
+`Alignment` and its constants used to be blocked: the walker bound top-level functions and, later,
+value-class constructors, and a constant held by a companion was neither. `PythonMultiplatform`'s
+`80318c16` added that binding (`CallableKind.STATIC_GETTER`), and `6d896fba` proved a constant
+crosses and changes a layout.
+The binding exists only under its Kotlin name. Re-exporting it as `pythonx.compose.ui.Alignment` is
+this package's job, not the binder's -- the earlier rule that whatever the layer produces gets no
+wrapper here (`0856d08`, `f7e21f8`) was the wrong way round. Until that re-export can land, this file
+records the two things a caller cannot read off the layer.
-_alignment = jclass("androidx.compose.ui.Alignment").Companion
-_absolute_alignment = jclass("androidx.compose.ui.AbsoluteAlignment").INSTANCE
+## The names the layer produces
+ Bottom BottomCenter BottomEnd BottomStart Center CenterEnd CenterHorizontally
+ CenterStart CenterVertically End Start Top TopCenter TopEnd TopStart
-class Alignment(KotlinWrapper):
- """
- An interface to calculate the position of a sized box inside an available space.
- Alignment is often used to define the alignment of a layout inside a parent layout.
- """
- TopStart = _alignment.getTopStart()
- TopCenter = _alignment.getTopCenter()
- TopEnd = _alignment.getTopEnd()
- CenterStart = _alignment.getCenterStart()
- Center = _alignment.getCenter()
- CenterEnd = _alignment.getCenterEnd()
- BottomStart = _alignment.getBottomStart()
- BottomCenter = _alignment.getBottomCenter()
- BottomEnd = _alignment.getBottomEnd()
+Read out of the walked table, not from Compose's own source: a name Compose declares but the walker
+declines would not be here.
- class Vertical(KotlinWrapper):
- Top = _alignment.getTop()
- CenterVertically = _alignment.getCenterVertically()
- Bottom = _alignment.getBottom()
+## They are read, not called
- class Horizontal(KotlinWrapper):
- Start = _alignment.getStart()
- CenterHorizontally = _alignment.getCenterHorizontally()
- End = _alignment.getEnd()
+ from pythonx.compose.ui import Alignment
+ Alignment.Center # no parentheses
+`PythonMultiplatform`'s `46be0212` taught the layer to branch on the kind column: a static getter is
+evaluated on attribute access and handed back as a value, so `Alignment.Center()` -- the spelling
+this file used to prescribe -- now raises `TypeError` because the value is not callable.
-# Type Overriding
-# Alignment.TopStart.__class__ = Alignment
-# Alignment.TopCenter.__class__ = Alignment
-# Alignment.TopEnd.__class__ = Alignment
-# Alignment.CenterStart.__class__ = Alignment
-# Alignment.Center.__class__ = Alignment
-# Alignment.CenterEnd.__class__ = Alignment
-# Alignment.BottomStart.__class__ = Alignment
-# Alignment.BottomCenter.__class__ = Alignment
-# Alignment.BottomEnd.__class__ = Alignment
-# _Vertical = Alignment.Vertical
-# _Vertical.Top.__class__ = _Vertical
-# _Vertical.CenterVertically.__class__ = _Vertical
-# _Vertical.Bottom.__class__ = _Vertical
-# _Horizontal = Alignment.Horizontal
-# _Horizontal.Start.__class__ = _Horizontal
-# _Horizontal.CenterHorizontally.__class__ = _Horizontal
-# _Horizontal.End.__class__ = _Horizontal
+`pythonx.compose.ui.Alignment` is the Kotlin object `androidx.compose.ui.Alignment` seen through the
+re-export rule (`pythonx/compose/_reexport.py`, `KotlinObject`): constants keep their Kotlin
+spelling and are read again on every access, as the binder serves them.
+## Grouped by declared type
-class AbsoluteAlignment:
- """
- A collection of common Alignments unaware of the layout direction.
- """
- TopLeft = _absolute_alignment.getTopLeft()
- TopLeft.__class__ = Alignment
- TopRight = _absolute_alignment.getTopRight()
- TopRight.__class__ = Alignment
- CenterLeft = _absolute_alignment.getCenterLeft()
- CenterLeft.__class__ = Alignment
- CenterRight = _absolute_alignment.getCenterRight()
- CenterRight.__class__ = Alignment
- BottomLeft = _absolute_alignment.getBottomLeft()
- BottomLeft.__class__ = Alignment
- BottomRight = _absolute_alignment.getBottomRight()
- BottomRight.__class__ = Alignment
- Left = _absolute_alignment.getLeft()
- Left.__class__ = Alignment
- Right = _absolute_alignment.getRight()
- Right.__class__ = Alignment
+The notebook's grouped spelling works beside Kotlin's flat one (INTENT section 5.3):
+ Alignment.Horizontal.End # the same read as Alignment.End
+ Alignment.Vertical.Top # the same read as Alignment.Top
-#TODO: Add BiasAlignment, BiasAbsoluteAlignment
+`Alignment.Horizontal` holds the constants declared as `Alignment.Horizontal` (`CenterHorizontally`,
+`End`, `Start`) and `Alignment.Vertical` those declared as `Alignment.Vertical` (`Bottom`,
+`CenterVertically`, `Top`). A constant declared as `Alignment` itself (`Center`, `TopStart`, ...) is
+in neither. The grouping is the re-export rule's (`ConstantGroup`), read from the declared types
+`python_multiplatform.describe(module, name)` reports without running a getter (python-multiplatform
+#36), so no list here drives it.
+"""
diff --git a/pythonx/compose/ui/graphics/__init__.py b/pythonx/compose/ui/graphics/__init__.py
new file mode 100644
index 0000000..a0dfd8d
--- /dev/null
+++ b/pythonx/compose/ui/graphics/__init__.py
@@ -0,0 +1,5 @@
+"""`pythonx.compose.ui.graphics` -- the Pythonic view of `androidx.compose.ui.graphics` (see `pythonx/compose/_reexport.py`)."""
+
+from pythonx.compose._reexport import reexport
+
+__getattr__, __dir__ = reexport(__name__)
diff --git a/pythonx/compose/ui/graphics/__init__.pyi b/pythonx/compose/ui/graphics/__init__.pyi
new file mode 100644
index 0000000..85e7040
--- /dev/null
+++ b/pythonx/compose/ui/graphics/__init__.pyi
@@ -0,0 +1,795 @@
+# GENERATED by pythonx/_build/gen_stubs.py from python-multiplatform's Kotlin-named stubs (artifact kotlin-stubs, workflow run 37103737430, commit a5028618, Compose 1.11.1). Do not edit.
+import typing as _t
+import pythonx.compose.ui
+
+class _ColorFilter_asDesktopColorFilter(_t.Protocol):
+ def __call__(self) -> _t.Any: ...
+
+class _ColorFilter_asSkiaColorFilter(_t.Protocol):
+ def __call__(self) -> _t.Any: ...
+
+class _PathEffect_asDesktopPathEffect(_t.Protocol):
+ def __call__(self) -> _t.Any: ...
+
+class _PathEffect_asSkiaPathEffect(_t.Protocol):
+ def __call__(self) -> _t.Any: ...
+
+class _RenderEffect_asDesktopImageFilter(_t.Protocol):
+ def __call__(self) -> _t.Any: ...
+
+class BlendModeColorFilter(ColorFilter):
+ """Kotlin: androidx.compose.ui.graphics.BlendModeColorFilter"""
+ def __init__(self, color: _t.Any, blendMode: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.ui.graphics.BlendModeColorFilter (androidx.compose.ui.graphics.BlendModeColorFilter(color: androidx.compose.ui.graphics.Color, blendMode: androidx.compose.ui.graphics.BlendMode): androidx.compose.ui.graphics.BlendModeColorFilter)"""
+ ...
+ @property
+ def blend_mode(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.BlendModeColorFilter.blendMode (androidx.compose.ui.graphics.BlendModeColorFilter.blendMode: androidx.compose.ui.graphics.BlendMode)"""
+ ...
+ @property
+ def color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.BlendModeColorFilter.color (androidx.compose.ui.graphics.BlendModeColorFilter.color: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class Brush:
+ """Kotlin: androidx.compose.ui.graphics.Brush"""
+ @property
+ def intrinsic_size(self) -> int:
+ """Kotlin property: androidx.compose.ui.graphics.Brush.intrinsicSize (androidx.compose.ui.graphics.Brush.intrinsicSize: androidx.compose.ui.geometry.Size)"""
+ ...
+
+class ColorFilter:
+ """Kotlin: androidx.compose.ui.graphics.ColorFilter"""
+ as_desktop_color_filter: _t.ClassVar[_ColorFilter_asDesktopColorFilter]
+ as_skia_color_filter: _t.ClassVar[_ColorFilter_asSkiaColorFilter]
+
+class ColorMatrix:
+ """Kotlin value class androidx.compose.ui.graphics.ColorMatrix over kotlin.FloatArray. As a parameter the raw primitive is also accepted (the binding layer's allowlist decides, at run time); a result is the raw primitive."""
+
+class ColorMatrixColorFilter(ColorFilter):
+ """Kotlin: androidx.compose.ui.graphics.ColorMatrixColorFilter"""
+ def __init__(self, colorMatrix: ColorMatrix) -> None:
+ """Kotlin constructor: androidx.compose.ui.graphics.ColorMatrixColorFilter (androidx.compose.ui.graphics.ColorMatrixColorFilter(colorMatrix: androidx.compose.ui.graphics.ColorMatrix): androidx.compose.ui.graphics.ColorMatrixColorFilter)"""
+ ...
+
+class ColorProducer:
+ """Kotlin: androidx.compose.ui.graphics.ColorProducer"""
+
+class GraphicsContext:
+ """Kotlin: androidx.compose.ui.graphics.GraphicsContext"""
+ @property
+ def shadow_context(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.GraphicsContext.shadowContext (androidx.compose.ui.graphics.GraphicsContext.shadowContext: androidx.compose.ui.graphics.shadow.ShadowContext)"""
+ ...
+
+class Interpolatable:
+ """Kotlin: androidx.compose.ui.graphics.Interpolatable"""
+
+class Interval:
+ """Kotlin: androidx.compose.ui.graphics.Interval"""
+ @property
+ def data(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.graphics.Interval.data (androidx.compose.ui.graphics.Interval.data: kotlin.Any?)"""
+ ...
+ @property
+ def end(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.Interval.end (androidx.compose.ui.graphics.Interval.end: kotlin.Float)"""
+ ...
+ @property
+ def start(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.Interval.start (androidx.compose.ui.graphics.Interval.start: kotlin.Float)"""
+ ...
+
+class LightingColorFilter(ColorFilter):
+ """Kotlin: androidx.compose.ui.graphics.LightingColorFilter"""
+ def __init__(self, multiply: _t.Any, add: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.ui.graphics.LightingColorFilter (androidx.compose.ui.graphics.LightingColorFilter(multiply: androidx.compose.ui.graphics.Color, add: androidx.compose.ui.graphics.Color): androidx.compose.ui.graphics.LightingColorFilter)"""
+ ...
+ @property
+ def add(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.LightingColorFilter.add (androidx.compose.ui.graphics.LightingColorFilter.add: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def multiply(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.LightingColorFilter.multiply (androidx.compose.ui.graphics.LightingColorFilter.multiply: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class LinearGradient:
+ """Kotlin: androidx.compose.ui.graphics.LinearGradient"""
+ @property
+ def intrinsic_size(self) -> int:
+ """Kotlin property: androidx.compose.ui.graphics.LinearGradient.intrinsicSize (androidx.compose.ui.graphics.LinearGradient.intrinsicSize: androidx.compose.ui.geometry.Size)"""
+ ...
+
+class Outline:
+ """Kotlin: androidx.compose.ui.graphics.Outline"""
+ @property
+ def bounds(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.Outline.bounds (androidx.compose.ui.graphics.Outline.bounds: androidx.compose.ui.geometry.Rect)"""
+ ...
+
+class PathEffect:
+ """Kotlin: androidx.compose.ui.graphics.PathEffect"""
+ as_desktop_path_effect: _t.ClassVar[_PathEffect_asDesktopPathEffect]
+ as_skia_path_effect: _t.ClassVar[_PathEffect_asSkiaPathEffect]
+
+class PathSegment:
+ """Kotlin: androidx.compose.ui.graphics.PathSegment"""
+ @property
+ def type(self) -> PathSegment.Type:
+ """Kotlin property: androidx.compose.ui.graphics.PathSegment.type (androidx.compose.ui.graphics.PathSegment.type: androidx.compose.ui.graphics.PathSegment.Type)"""
+ ...
+ @property
+ def weight(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.PathSegment.weight (androidx.compose.ui.graphics.PathSegment.weight: kotlin.Float)"""
+ ...
+ class Type:
+ """Kotlin: androidx.compose.ui.graphics.PathSegment.Type"""
+
+class PixelMap:
+ """Kotlin: androidx.compose.ui.graphics.PixelMap"""
+ @property
+ def buffer_offset(self) -> int:
+ """Kotlin property: androidx.compose.ui.graphics.PixelMap.bufferOffset (androidx.compose.ui.graphics.PixelMap.bufferOffset: kotlin.Int)"""
+ ...
+ @property
+ def height(self) -> int:
+ """Kotlin property: androidx.compose.ui.graphics.PixelMap.height (androidx.compose.ui.graphics.PixelMap.height: kotlin.Int)"""
+ ...
+ @property
+ def stride(self) -> int:
+ """Kotlin property: androidx.compose.ui.graphics.PixelMap.stride (androidx.compose.ui.graphics.PixelMap.stride: kotlin.Int)"""
+ ...
+ @property
+ def width(self) -> int:
+ """Kotlin property: androidx.compose.ui.graphics.PixelMap.width (androidx.compose.ui.graphics.PixelMap.width: kotlin.Int)"""
+ ...
+
+class RadialGradient:
+ """Kotlin: androidx.compose.ui.graphics.RadialGradient"""
+ @property
+ def intrinsic_size(self) -> int:
+ """Kotlin property: androidx.compose.ui.graphics.RadialGradient.intrinsicSize (androidx.compose.ui.graphics.RadialGradient.intrinsicSize: androidx.compose.ui.geometry.Size)"""
+ ...
+
+class RenderEffect:
+ """Kotlin: androidx.compose.ui.graphics.RenderEffect"""
+ as_desktop_image_filter: _t.ClassVar[_RenderEffect_asDesktopImageFilter]
+ @property
+ def skia_image_filter(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.skiaImageFilter (androidx.compose.ui.graphics.RenderEffect.skiaImageFilter: org.jetbrains.skia.ImageFilter)"""
+ ...
+
+class Shader:
+ """Kotlin: androidx.compose.ui.graphics.Shader"""
+ @property
+ def skia_shader(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.skiaShader (androidx.compose.ui.graphics.Shader.skiaShader: org.jetbrains.skia.Shader)"""
+ ...
+
+class Shadow:
+ """Kotlin: androidx.compose.ui.graphics.Shadow"""
+ @property
+ def blur_radius(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.Shadow.blurRadius (androidx.compose.ui.graphics.Shadow.blurRadius: kotlin.Float)"""
+ ...
+ @property
+ def color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.Shadow.color (androidx.compose.ui.graphics.Shadow.color: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def offset(self) -> int:
+ """Kotlin property: androidx.compose.ui.graphics.Shadow.offset (androidx.compose.ui.graphics.Shadow.offset: androidx.compose.ui.geometry.Offset)"""
+ ...
+
+class Shape:
+ """Kotlin: androidx.compose.ui.graphics.Shape"""
+
+class SkiaGraphicsContext(GraphicsContext):
+ """Kotlin: androidx.compose.ui.graphics.SkiaGraphicsContext"""
+ def __init__(self, measureDrawBounds: bool = ...) -> None:
+ """Kotlin constructor: androidx.compose.ui.graphics.SkiaGraphicsContext (androidx.compose.ui.graphics.SkiaGraphicsContext(measureDrawBounds: kotlin.Boolean): androidx.compose.ui.graphics.SkiaGraphicsContext)"""
+ ...
+ @property
+ def active_graphics_layers_count(self) -> int:
+ """Kotlin property: androidx.compose.ui.graphics.SkiaGraphicsContext.activeGraphicsLayersCount (androidx.compose.ui.graphics.SkiaGraphicsContext.activeGraphicsLayersCount: kotlin.Int)"""
+ ...
+
+class SolidColor(Brush, Interpolatable):
+ """Kotlin: androidx.compose.ui.graphics.SolidColor"""
+ def __init__(self, value: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.ui.graphics.SolidColor (androidx.compose.ui.graphics.SolidColor(value: androidx.compose.ui.graphics.Color): androidx.compose.ui.graphics.SolidColor)"""
+ ...
+ @property
+ def value(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.SolidColor.value (androidx.compose.ui.graphics.SolidColor.value: androidx.compose.ui.graphics.Color)"""
+ ...
+
+class Vertices:
+ """Kotlin: androidx.compose.ui.graphics.Vertices"""
+ @property
+ def vertex_mode(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.Vertices.vertexMode (androidx.compose.ui.graphics.Vertices.vertexMode: androidx.compose.ui.graphics.VertexMode)"""
+ ...
+
+def BlurEffect(radius_x: float, radius_y: float, edge_treatment: _t.Any = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.BlurEffect(radiusX: kotlin.Float, radiusY: kotlin.Float, edgeTreatment: androidx.compose.ui.graphics.TileMode): androidx.compose.ui.graphics.BlurEffect"""
+ ...
+
+def Canvas(image: _t.Any) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Canvas(image: androidx.compose.ui.graphics.ImageBitmap): androidx.compose.ui.graphics.Canvas"""
+ ...
+
+def Color__Float_Float_Float_Float_ColorSpace(red: float, green: float, blue: float, alpha: float = ..., color_space: _t.Any = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Color(red: kotlin.Float, green: kotlin.Float, blue: kotlin.Float, alpha: kotlin.Float, colorSpace: androidx.compose.ui.graphics.colorspace.ColorSpace): androidx.compose.ui.graphics.Color"""
+ ...
+
+def Color__Int(color: int) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Color(color: kotlin.Int): androidx.compose.ui.graphics.Color"""
+ ...
+
+def Color__Int_Int_Int_Int(red: int, green: int, blue: int, alpha: int = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Color(red: kotlin.Int, green: kotlin.Int, blue: kotlin.Int, alpha: kotlin.Int): androidx.compose.ui.graphics.Color"""
+ ...
+
+def Color__Long(color: int) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Color(color: kotlin.Long): androidx.compose.ui.graphics.Color"""
+ ...
+
+def CompositeShader(dst: Shader, src: Shader, blend_mode: _t.Any) -> Shader:
+ """Kotlin: androidx.compose.ui.graphics.CompositeShader(dst: androidx.compose.ui.graphics.Shader, src: androidx.compose.ui.graphics.Shader, blendMode: androidx.compose.ui.graphics.BlendMode): androidx.compose.ui.graphics.Shader"""
+ ...
+
+def GraphicsLayerScope() -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.GraphicsLayerScope(): androidx.compose.ui.graphics.GraphicsLayerScope"""
+ ...
+
+def ImageBitmap(width: int, height: int, config: _t.Any = ..., has_alpha: bool = ..., color_space: _t.Any = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.ImageBitmap(width: kotlin.Int, height: kotlin.Int, config: androidx.compose.ui.graphics.ImageBitmapConfig, hasAlpha: kotlin.Boolean, colorSpace: androidx.compose.ui.graphics.colorspace.ColorSpace): androidx.compose.ui.graphics.ImageBitmap"""
+ ...
+
+def ImageShader(image: _t.Any, tile_mode_x: _t.Any = ..., tile_mode_y: _t.Any = ...) -> Shader:
+ """Kotlin: androidx.compose.ui.graphics.ImageShader(image: androidx.compose.ui.graphics.ImageBitmap, tileModeX: androidx.compose.ui.graphics.TileMode, tileModeY: androidx.compose.ui.graphics.TileMode): androidx.compose.ui.graphics.Shader"""
+ ...
+
+def OffsetEffect(offset_x: float, offset_y: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.OffsetEffect(offsetX: kotlin.Float, offsetY: kotlin.Float): androidx.compose.ui.graphics.OffsetEffect"""
+ ...
+
+def Paint() -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Paint(): androidx.compose.ui.graphics.Paint"""
+ ...
+
+def Path() -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Path(): androidx.compose.ui.graphics.Path"""
+ ...
+
+def PathHitTester(path: _t.Any, tolerance: float = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.PathHitTester(path: androidx.compose.ui.graphics.Path, tolerance: kotlin.Float): androidx.compose.ui.graphics.PathHitTester"""
+ ...
+
+def PathIterator(path: _t.Any, conic_evaluation: _t.Any = ..., tolerance: float = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.PathIterator(path: androidx.compose.ui.graphics.Path, conicEvaluation: androidx.compose.ui.graphics.PathIterator.ConicEvaluation, tolerance: kotlin.Float): androidx.compose.ui.graphics.PathIterator"""
+ ...
+
+def PathMeasure() -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.PathMeasure(): androidx.compose.ui.graphics.PathMeasure"""
+ ...
+
+def ShaderBrush(shader: Shader) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.ShaderBrush(shader: androidx.compose.ui.graphics.Shader): androidx.compose.ui.graphics.ShaderBrush"""
+ ...
+
+def TransformOrigin(pivot_fraction_x: float, pivot_fraction_y: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.TransformOrigin(pivotFractionX: kotlin.Float, pivotFractionY: kotlin.Float): androidx.compose.ui.graphics.TransformOrigin"""
+ ...
+
+def add_outline(receiver: _t.Any, /, outline: Outline) -> None:
+ """Kotlin: androidx.compose.ui.graphics.Path.addOutline(outline: androidx.compose.ui.graphics.Outline): kotlin.Unit"""
+ ...
+
+def add_svg(receiver: _t.Any, /, path_data: str) -> None:
+ """Kotlin: androidx.compose.ui.graphics.Path.addSvg(pathData: kotlin.String): kotlin.Unit"""
+ ...
+
+def as_compose_canvas(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: org.jetbrains.skia.Canvas.asComposeCanvas(): androidx.compose.ui.graphics.Canvas"""
+ ...
+
+def as_compose_color_filter(receiver: _t.Any, /) -> ColorFilter:
+ """Kotlin: org.jetbrains.skia.ColorFilter.asComposeColorFilter(): androidx.compose.ui.graphics.ColorFilter"""
+ ...
+
+def as_compose_image_bitmap(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: org.jetbrains.skia.Bitmap.asComposeImageBitmap(): androidx.compose.ui.graphics.ImageBitmap"""
+ ...
+
+def as_compose_paint(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: org.jetbrains.skia.Paint.asComposePaint(): androidx.compose.ui.graphics.Paint"""
+ ...
+
+def as_compose_path(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: org.jetbrains.skia.Path.asComposePath(): androidx.compose.ui.graphics.Path"""
+ ...
+
+def as_compose_path_effect__PathEffect(receiver: _t.Any, /) -> PathEffect:
+ """Kotlin: org.jetbrains.skia.PathEffect.asComposePathEffect(): androidx.compose.ui.graphics.PathEffect"""
+ ...
+
+def as_compose_path_effect__PathMeasure(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: org.jetbrains.skia.PathMeasure.asComposePathEffect(): androidx.compose.ui.graphics.PathMeasure"""
+ ...
+
+def as_compose_render_effect(receiver: _t.Any, /) -> RenderEffect:
+ """Kotlin: org.jetbrains.skia.ImageFilter.asComposeRenderEffect(): androidx.compose.ui.graphics.RenderEffect"""
+ ...
+
+def as_compose_shader(receiver: _t.Any, /) -> Shader:
+ """Kotlin: org.jetbrains.skia.Shader.asComposeShader(): androidx.compose.ui.graphics.Shader"""
+ ...
+
+def as_desktop_bitmap(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.ImageBitmap.asDesktopBitmap(): org.jetbrains.skia.Bitmap"""
+ ...
+
+def as_desktop_color_filter(receiver: ColorFilter, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.ColorFilter.asDesktopColorFilter(): org.jetbrains.skia.ColorFilter"""
+ ...
+
+def as_desktop_image_filter(receiver: RenderEffect, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.RenderEffect.asDesktopImageFilter(): org.jetbrains.skia.ImageFilter"""
+ ...
+
+def as_desktop_path(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Path.asDesktopPath(): org.jetbrains.skia.Path"""
+ ...
+
+def as_desktop_path_effect(receiver: PathEffect, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.PathEffect.asDesktopPathEffect(): org.jetbrains.skia.PathEffect"""
+ ...
+
+def as_image_bitmap__Bitmap(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: org.jetbrains.skia.Bitmap.asImageBitmap(): androidx.compose.ui.graphics.ImageBitmap"""
+ ...
+
+def as_image_bitmap__Image(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: org.jetbrains.skia.Image.asImageBitmap(): androidx.compose.ui.graphics.ImageBitmap"""
+ ...
+
+def as_skia_bitmap(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.ImageBitmap.asSkiaBitmap(): org.jetbrains.skia.Bitmap"""
+ ...
+
+def as_skia_color_filter(receiver: ColorFilter, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.ColorFilter.asSkiaColorFilter(): org.jetbrains.skia.ColorFilter"""
+ ...
+
+def as_skia_path(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Path.asSkiaPath(): org.jetbrains.skia.Path"""
+ ...
+
+def as_skia_path_effect(receiver: PathEffect, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.PathEffect.asSkiaPathEffect(): org.jetbrains.skia.PathEffect"""
+ ...
+
+def as_skia_path_measure(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.PathMeasure.asSkiaPathMeasure(): org.jetbrains.skia.PathMeasure"""
+ ...
+
+def composite_over(receiver: _t.Any, /, background: _t.Any) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Color.compositeOver(background: androidx.compose.ui.graphics.Color): androidx.compose.ui.graphics.Color"""
+ ...
+
+def compute_direction(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Path.computeDirection(): androidx.compose.ui.graphics.Path.Direction"""
+ ...
+
+def copy(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Path.copy(): androidx.compose.ui.graphics.Path"""
+ ...
+
+def decode_to_image_bitmap(receiver: bytes, /) -> _t.Any:
+ """Kotlin: kotlin.ByteArray.decodeToImageBitmap(): androidx.compose.ui.graphics.ImageBitmap"""
+ ...
+
+def draw_outline__Outline_Brush_Float_DrawStyle_ColorFilter_BlendMode(receiver: _t.Any, /, outline: Outline, brush: Brush, alpha: float = ..., style: _t.Any = ..., color_filter: ColorFilter | None = ..., blend_mode: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.ui.graphics.drawscope.DrawScope.drawOutline(outline: androidx.compose.ui.graphics.Outline, brush: androidx.compose.ui.graphics.Brush, alpha: kotlin.Float, style: androidx.compose.ui.graphics.drawscope.DrawStyle, colorFilter: androidx.compose.ui.graphics.ColorFilter?, blendMode: androidx.compose.ui.graphics.BlendMode): kotlin.Unit"""
+ ...
+
+def draw_outline__Outline_Color_Float_DrawStyle_ColorFilter_BlendMode(receiver: _t.Any, /, outline: Outline, color: _t.Any, alpha: float = ..., style: _t.Any = ..., color_filter: ColorFilter | None = ..., blend_mode: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.ui.graphics.drawscope.DrawScope.drawOutline(outline: androidx.compose.ui.graphics.Outline, color: androidx.compose.ui.graphics.Color, alpha: kotlin.Float, style: androidx.compose.ui.graphics.drawscope.DrawStyle, colorFilter: androidx.compose.ui.graphics.ColorFilter?, blendMode: androidx.compose.ui.graphics.BlendMode): kotlin.Unit"""
+ ...
+
+def draw_outline__Outline_Paint(receiver: _t.Any, /, outline: Outline, paint: _t.Any) -> None:
+ """Kotlin: androidx.compose.ui.graphics.Canvas.drawOutline(outline: androidx.compose.ui.graphics.Outline, paint: androidx.compose.ui.graphics.Paint): kotlin.Unit"""
+ ...
+
+def evaluate_cubic(p1: float, p2: float, t: float) -> float:
+ """Kotlin: androidx.compose.ui.graphics.evaluateCubic(p1: kotlin.Float, p2: kotlin.Float, t: kotlin.Float): kotlin.Float"""
+ ...
+
+def evaluate_y(segment: PathSegment, t: float) -> float:
+ """Kotlin: androidx.compose.ui.graphics.evaluateY(segment: androidx.compose.ui.graphics.PathSegment, t: kotlin.Float): kotlin.Float"""
+ ...
+
+def find_first_cubic_root(p0: float, p1: float, p2: float, p3: float) -> float:
+ """Kotlin: androidx.compose.ui.graphics.findFirstCubicRoot(p0: kotlin.Float, p1: kotlin.Float, p2: kotlin.Float, p3: kotlin.Float): kotlin.Float"""
+ ...
+
+def find_first_root(segment: PathSegment, fraction: float) -> float:
+ """Kotlin: androidx.compose.ui.graphics.findFirstRoot(segment: androidx.compose.ui.graphics.PathSegment, fraction: kotlin.Float): kotlin.Float"""
+ ...
+
+def graphics_layer__Float_Float_Float_Float_Float_Float_Float_Float_Float_Float_TransformOrigin_Shape_Boolean_RenderEffect_Color_Color_CompositingStrategy_BlendMode_ColorFilter(receiver: pythonx.compose.ui.Modifier, /, scale_x: float, scale_y: float, alpha: float, translation_x: float, translation_y: float, shadow_elevation: float, rotation_x: float, rotation_y: float, rotation_z: float, camera_distance: float, transform_origin: _t.Any, shape: Shape, clip: bool, render_effect: RenderEffect | None, ambient_shadow_color: _t.Any, spot_shadow_color: _t.Any, compositing_strategy: _t.Any, blend_mode: _t.Any, color_filter: ColorFilter | None) -> pythonx.compose.ui.Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.graphicsLayer(scaleX: kotlin.Float, scaleY: kotlin.Float, alpha: kotlin.Float, translationX: kotlin.Float, translationY: kotlin.Float, shadowElevation: kotlin.Float, rotationX: kotlin.Float, rotationY: kotlin.Float, rotationZ: kotlin.Float, cameraDistance: kotlin.Float, transformOrigin: androidx.compose.ui.graphics.TransformOrigin, shape: androidx.compose.ui.graphics.Shape, clip: kotlin.Boolean, renderEffect: androidx.compose.ui.graphics.RenderEffect?, ambientShadowColor: androidx.compose.ui.graphics.Color, spotShadowColor: androidx.compose.ui.graphics.Color, compositingStrategy: androidx.compose.ui.graphics.CompositingStrategy, blendMode: androidx.compose.ui.graphics.BlendMode, colorFilter: androidx.compose.ui.graphics.ColorFilter?): androidx.compose.ui.Modifier"""
+ ...
+
+def graphics_layer__Unit(receiver: pythonx.compose.ui.Modifier, /, block: _t.Callable[[_t.Any], None]) -> pythonx.compose.ui.Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.graphicsLayer(block: kotlin.Function1): androidx.compose.ui.Modifier"""
+ ...
+
+def is_identity(receiver: _t.Any, /) -> bool:
+ """Kotlin: androidx.compose.ui.graphics.Matrix.isIdentity(): kotlin.Boolean"""
+ ...
+
+def is_supported__BlendMode(receiver: _t.Any, /) -> bool:
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.isSupported(): kotlin.Boolean"""
+ ...
+
+def is_supported__TileMode(receiver: _t.Any, /) -> bool:
+ """Kotlin: androidx.compose.ui.graphics.TileMode.isSupported(): kotlin.Boolean"""
+ ...
+
+def lerp__Color_Color_Float(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.lerp(start: androidx.compose.ui.graphics.Color, stop: androidx.compose.ui.graphics.Color, fraction: kotlin.Float): androidx.compose.ui.graphics.Color"""
+ ...
+
+def lerp__Shadow_Shadow_Float(start: Shadow, stop: Shadow, fraction: float) -> Shadow:
+ """Kotlin: androidx.compose.ui.graphics.lerp(start: androidx.compose.ui.graphics.Shadow, stop: androidx.compose.ui.graphics.Shadow, fraction: kotlin.Float): androidx.compose.ui.graphics.Shadow"""
+ ...
+
+def luminance(receiver: _t.Any, /) -> float:
+ """Kotlin: androidx.compose.ui.graphics.Color.luminance(): kotlin.Float"""
+ ...
+
+def materialize_skia_path(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Path.materializeSkiaPath(): org.jetbrains.skia.Path"""
+ ...
+
+def prepare_transformation_matrix(matrix: _t.Any, pivot_x: float, pivot_y: float, translation_x: float, translation_y: float, rotation_x: float, rotation_y: float, rotation_z: float, scale_x: float, scale_y: float, camera_distance: float) -> None:
+ """Kotlin: androidx.compose.ui.graphics.prepareTransformationMatrix(matrix: androidx.compose.ui.graphics.Matrix, pivotX: kotlin.Float, pivotY: kotlin.Float, translationX: kotlin.Float, translationY: kotlin.Float, rotationX: kotlin.Float, rotationY: kotlin.Float, rotationZ: kotlin.Float, scaleX: kotlin.Float, scaleY: kotlin.Float, cameraDistance: kotlin.Float): kotlin.Unit"""
+ ...
+
+def remember_graphics_layer() -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.rememberGraphicsLayer(): androidx.compose.ui.graphics.layer.GraphicsLayer"""
+ ...
+
+def reverse(receiver: _t.Any, /, destination: _t.Any = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Path.reverse(destination: androidx.compose.ui.graphics.Path): androidx.compose.ui.graphics.Path"""
+ ...
+
+def rotate(receiver: _t.Any, /, degrees: float, pivot_x: float, pivot_y: float) -> None:
+ """Kotlin: androidx.compose.ui.graphics.Canvas.rotate(degrees: kotlin.Float, pivotX: kotlin.Float, pivotY: kotlin.Float): kotlin.Unit"""
+ ...
+
+def rotate_rad(receiver: _t.Any, /, radians: float, pivot_x: float = ..., pivot_y: float = ...) -> None:
+ """Kotlin: androidx.compose.ui.graphics.Canvas.rotateRad(radians: kotlin.Float, pivotX: kotlin.Float, pivotY: kotlin.Float): kotlin.Unit"""
+ ...
+
+def scale(receiver: _t.Any, /, sx: float, sy: float = ..., *, pivot_x: float, pivot_y: float) -> None:
+ """Kotlin: androidx.compose.ui.graphics.Canvas.scale(sx: kotlin.Float, sy: kotlin.Float, pivotX: kotlin.Float, pivotY: kotlin.Float): kotlin.Unit"""
+ ...
+
+def take_or_else(receiver: _t.Any, /, block: _t.Callable[[], _t.Any]) -> _t.Any:
+ """Kotlin: androidx.compose.ui.graphics.Color.takeOrElse(block: kotlin.Function0): androidx.compose.ui.graphics.Color"""
+ ...
+
+def to_argb(receiver: _t.Any, /) -> int:
+ """Kotlin: androidx.compose.ui.graphics.Color.toArgb(): kotlin.Int"""
+ ...
+
+def to_compose_color_filter(receiver: _t.Any, /) -> ColorFilter:
+ """Kotlin: org.jetbrains.skia.ColorFilter.toComposeColorFilter(): androidx.compose.ui.graphics.ColorFilter"""
+ ...
+
+def to_compose_image_bitmap(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: org.jetbrains.skia.Image.toComposeImageBitmap(): androidx.compose.ui.graphics.ImageBitmap"""
+ ...
+
+def to_compose_rect(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: org.jetbrains.skia.Rect.toComposeRect(): androidx.compose.ui.geometry.Rect"""
+ ...
+
+def to_skia_r_rect(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.geometry.RoundRect.toSkiaRRect(): org.jetbrains.skia.RRect"""
+ ...
+
+def to_skia_rect(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.geometry.Rect.toSkiaRect(): org.jetbrains.skia.Rect"""
+ ...
+
+def to_svg(receiver: _t.Any, /, as_document: bool = ...) -> str:
+ """Kotlin: androidx.compose.ui.graphics.Path.toSvg(asDocument: kotlin.Boolean): kotlin.String"""
+ ...
+
+def tooling_graphics_layer(receiver: pythonx.compose.ui.Modifier, /) -> pythonx.compose.ui.Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.toolingGraphicsLayer(): androidx.compose.ui.Modifier"""
+ ...
+
+def with_save(receiver: _t.Any, /, block: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.ui.graphics.Canvas.withSave(block: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def with_save_layer(receiver: _t.Any, /, bounds: _t.Any, paint: _t.Any, block: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.ui.graphics.Canvas.withSaveLayer(bounds: androidx.compose.ui.geometry.Rect, paint: androidx.compose.ui.graphics.Paint, block: kotlin.Function0): kotlin.Unit"""
+ ...
+
+@_t.overload
+def Color(red: float, green: float, blue: float, alpha: float = ..., color_space: _t.Any = ...) -> _t.Any: ...
+@_t.overload
+def Color(color: int) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def Color(red: int, green: int, blue: int, alpha: int = ...) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def Color(color: int) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def as_compose_path_effect(receiver: _t.Any, /) -> PathEffect: ...
+@_t.overload
+def as_compose_path_effect(receiver: _t.Any, /) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def as_image_bitmap(receiver: _t.Any, /) -> _t.Any: ...
+@_t.overload
+def as_image_bitmap(receiver: _t.Any, /) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def draw_outline(receiver: _t.Any, /, outline: Outline, brush: Brush, alpha: float = ..., style: _t.Any = ..., color_filter: ColorFilter | None = ..., blend_mode: _t.Any = ...) -> None: ...
+@_t.overload
+def draw_outline(receiver: _t.Any, /, outline: Outline, color: _t.Any, alpha: float = ..., style: _t.Any = ..., color_filter: ColorFilter | None = ..., blend_mode: _t.Any = ...) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def draw_outline(receiver: _t.Any, /, outline: Outline, paint: _t.Any) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def graphics_layer(receiver: pythonx.compose.ui.Modifier, /, scale_x: float, scale_y: float, alpha: float, translation_x: float, translation_y: float, shadow_elevation: float, rotation_x: float, rotation_y: float, rotation_z: float, camera_distance: float, transform_origin: _t.Any, shape: Shape, clip: bool, render_effect: RenderEffect | None, ambient_shadow_color: _t.Any, spot_shadow_color: _t.Any, compositing_strategy: _t.Any, blend_mode: _t.Any, color_filter: ColorFilter | None) -> pythonx.compose.ui.Modifier: ...
+@_t.overload
+def graphics_layer(receiver: pythonx.compose.ui.Modifier, /, block: _t.Callable[[_t.Any], None]) -> pythonx.compose.ui.Modifier: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def is_supported(receiver: _t.Any, /) -> bool: ...
+@_t.overload
+def is_supported(receiver: _t.Any, /) -> bool: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def lerp(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any: ...
+@_t.overload
+def lerp(start: Shadow, stop: Shadow, fraction: float) -> Shadow: ... # type: ignore[overload-cannot-match]
+
+class BlendMode:
+ """Kotlin: androidx.compose.ui.graphics.BlendMode"""
+ Clear: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Clear(): androidx.compose.ui.graphics.BlendMode"""
+ Color: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Color(): androidx.compose.ui.graphics.BlendMode"""
+ ColorBurn: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.ColorBurn(): androidx.compose.ui.graphics.BlendMode"""
+ ColorDodge: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.ColorDodge(): androidx.compose.ui.graphics.BlendMode"""
+ Darken: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Darken(): androidx.compose.ui.graphics.BlendMode"""
+ Difference: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Difference(): androidx.compose.ui.graphics.BlendMode"""
+ Dst: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Dst(): androidx.compose.ui.graphics.BlendMode"""
+ DstAtop: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.DstAtop(): androidx.compose.ui.graphics.BlendMode"""
+ DstIn: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.DstIn(): androidx.compose.ui.graphics.BlendMode"""
+ DstOut: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.DstOut(): androidx.compose.ui.graphics.BlendMode"""
+ DstOver: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.DstOver(): androidx.compose.ui.graphics.BlendMode"""
+ Exclusion: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Exclusion(): androidx.compose.ui.graphics.BlendMode"""
+ Hardlight: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Hardlight(): androidx.compose.ui.graphics.BlendMode"""
+ Hue: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Hue(): androidx.compose.ui.graphics.BlendMode"""
+ Lighten: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Lighten(): androidx.compose.ui.graphics.BlendMode"""
+ Luminosity: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Luminosity(): androidx.compose.ui.graphics.BlendMode"""
+ Modulate: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Modulate(): androidx.compose.ui.graphics.BlendMode"""
+ Multiply: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Multiply(): androidx.compose.ui.graphics.BlendMode"""
+ Overlay: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Overlay(): androidx.compose.ui.graphics.BlendMode"""
+ Plus: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Plus(): androidx.compose.ui.graphics.BlendMode"""
+ Saturation: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Saturation(): androidx.compose.ui.graphics.BlendMode"""
+ Screen: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Screen(): androidx.compose.ui.graphics.BlendMode"""
+ Softlight: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Softlight(): androidx.compose.ui.graphics.BlendMode"""
+ Src: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Src(): androidx.compose.ui.graphics.BlendMode"""
+ SrcAtop: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.SrcAtop(): androidx.compose.ui.graphics.BlendMode"""
+ SrcIn: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.SrcIn(): androidx.compose.ui.graphics.BlendMode"""
+ SrcOut: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.SrcOut(): androidx.compose.ui.graphics.BlendMode"""
+ SrcOver: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.SrcOver(): androidx.compose.ui.graphics.BlendMode"""
+ Xor: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.BlendMode.Xor(): androidx.compose.ui.graphics.BlendMode"""
+
+class ClipOp:
+ """Kotlin: androidx.compose.ui.graphics.ClipOp"""
+ Difference: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.ClipOp.Difference(): androidx.compose.ui.graphics.ClipOp"""
+ Intersect: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.ClipOp.Intersect(): androidx.compose.ui.graphics.ClipOp"""
+
+class CompositingStrategy:
+ """Kotlin: androidx.compose.ui.graphics.CompositingStrategy"""
+ Auto: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.CompositingStrategy.Auto(): androidx.compose.ui.graphics.CompositingStrategy"""
+ ModulateAlpha: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.CompositingStrategy.ModulateAlpha(): androidx.compose.ui.graphics.CompositingStrategy"""
+ Offscreen: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.CompositingStrategy.Offscreen(): androidx.compose.ui.graphics.CompositingStrategy"""
+
+class FilterQuality:
+ """Kotlin: androidx.compose.ui.graphics.FilterQuality"""
+ High: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.FilterQuality.High(): androidx.compose.ui.graphics.FilterQuality"""
+ Low: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.FilterQuality.Low(): androidx.compose.ui.graphics.FilterQuality"""
+ Medium: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.FilterQuality.Medium(): androidx.compose.ui.graphics.FilterQuality"""
+
+class ImageBitmapConfig:
+ """Kotlin: androidx.compose.ui.graphics.ImageBitmapConfig"""
+ Alpha8: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.ImageBitmapConfig.Alpha8(): androidx.compose.ui.graphics.ImageBitmapConfig"""
+ Argb8888: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.ImageBitmapConfig.Argb8888(): androidx.compose.ui.graphics.ImageBitmapConfig"""
+ F16: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.ImageBitmapConfig.F16(): androidx.compose.ui.graphics.ImageBitmapConfig"""
+ Gpu: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.ImageBitmapConfig.Gpu(): androidx.compose.ui.graphics.ImageBitmapConfig"""
+ Rgb565: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.ImageBitmapConfig.Rgb565(): androidx.compose.ui.graphics.ImageBitmapConfig"""
+
+class Matrix:
+ """Kotlin: androidx.compose.ui.graphics.Matrix"""
+ Perspective0: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.Matrix.Perspective0(): kotlin.Int"""
+ Perspective1: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.Matrix.Perspective1(): kotlin.Int"""
+ Perspective2: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.Matrix.Perspective2(): kotlin.Int"""
+ ScaleX: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.Matrix.ScaleX(): kotlin.Int"""
+ ScaleY: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.Matrix.ScaleY(): kotlin.Int"""
+ ScaleZ: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.Matrix.ScaleZ(): kotlin.Int"""
+ SkewX: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.Matrix.SkewX(): kotlin.Int"""
+ SkewY: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.Matrix.SkewY(): kotlin.Int"""
+ TranslateX: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.Matrix.TranslateX(): kotlin.Int"""
+ TranslateY: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.Matrix.TranslateY(): kotlin.Int"""
+ TranslateZ: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.graphics.Matrix.TranslateZ(): kotlin.Int"""
+
+class PaintingStyle:
+ """Kotlin: androidx.compose.ui.graphics.PaintingStyle"""
+ Fill: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PaintingStyle.Fill(): androidx.compose.ui.graphics.PaintingStyle"""
+ Stroke: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PaintingStyle.Stroke(): androidx.compose.ui.graphics.PaintingStyle"""
+
+class PathFillType:
+ """Kotlin: androidx.compose.ui.graphics.PathFillType"""
+ EvenOdd: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PathFillType.EvenOdd(): androidx.compose.ui.graphics.PathFillType"""
+ NonZero: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PathFillType.NonZero(): androidx.compose.ui.graphics.PathFillType"""
+
+class PathOperation:
+ """Kotlin: androidx.compose.ui.graphics.PathOperation"""
+ class Companion:
+ """Kotlin: androidx.compose.ui.graphics.PathOperation.Companion"""
+ @property
+ def difference(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.difference (androidx.compose.ui.graphics.PathOperation.Companion.difference: androidx.compose.ui.graphics.PathOperation)"""
+ ...
+ @property
+ def intersect(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.intersect (androidx.compose.ui.graphics.PathOperation.Companion.intersect: androidx.compose.ui.graphics.PathOperation)"""
+ ...
+ @property
+ def reverseDifference(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.reverseDifference (androidx.compose.ui.graphics.PathOperation.Companion.reverseDifference: androidx.compose.ui.graphics.PathOperation)"""
+ ...
+ @property
+ def union(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.union (androidx.compose.ui.graphics.PathOperation.Companion.union: androidx.compose.ui.graphics.PathOperation)"""
+ ...
+ @property
+ def xor(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.xor (androidx.compose.ui.graphics.PathOperation.Companion.xor: androidx.compose.ui.graphics.PathOperation)"""
+ ...
+ Difference: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PathOperation.Difference(): androidx.compose.ui.graphics.PathOperation"""
+ Intersect: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PathOperation.Intersect(): androidx.compose.ui.graphics.PathOperation"""
+ ReverseDifference: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PathOperation.ReverseDifference(): androidx.compose.ui.graphics.PathOperation"""
+ Union: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PathOperation.Union(): androidx.compose.ui.graphics.PathOperation"""
+ Xor: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PathOperation.Xor(): androidx.compose.ui.graphics.PathOperation"""
+
+class PointMode:
+ """Kotlin: androidx.compose.ui.graphics.PointMode"""
+ Lines: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PointMode.Lines(): androidx.compose.ui.graphics.PointMode"""
+ Points: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PointMode.Points(): androidx.compose.ui.graphics.PointMode"""
+ Polygon: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.PointMode.Polygon(): androidx.compose.ui.graphics.PointMode"""
+
+class StampedPathEffectStyle:
+ """Kotlin: androidx.compose.ui.graphics.StampedPathEffectStyle"""
+ Morph: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.StampedPathEffectStyle.Morph(): androidx.compose.ui.graphics.StampedPathEffectStyle"""
+ Rotate: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.StampedPathEffectStyle.Rotate(): androidx.compose.ui.graphics.StampedPathEffectStyle"""
+ Translate: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.StampedPathEffectStyle.Translate(): androidx.compose.ui.graphics.StampedPathEffectStyle"""
+
+class StrokeCap:
+ """Kotlin: androidx.compose.ui.graphics.StrokeCap"""
+ Butt: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.StrokeCap.Butt(): androidx.compose.ui.graphics.StrokeCap"""
+ Round: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.StrokeCap.Round(): androidx.compose.ui.graphics.StrokeCap"""
+ Square: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.StrokeCap.Square(): androidx.compose.ui.graphics.StrokeCap"""
+
+class StrokeJoin:
+ """Kotlin: androidx.compose.ui.graphics.StrokeJoin"""
+ Bevel: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.StrokeJoin.Bevel(): androidx.compose.ui.graphics.StrokeJoin"""
+ Miter: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.StrokeJoin.Miter(): androidx.compose.ui.graphics.StrokeJoin"""
+ Round: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.StrokeJoin.Round(): androidx.compose.ui.graphics.StrokeJoin"""
+
+class TileMode:
+ """Kotlin: androidx.compose.ui.graphics.TileMode"""
+ Clamp: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.TileMode.Clamp(): androidx.compose.ui.graphics.TileMode"""
+ Decal: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.TileMode.Decal(): androidx.compose.ui.graphics.TileMode"""
+ Mirror: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.TileMode.Mirror(): androidx.compose.ui.graphics.TileMode"""
+ Repeated: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.TileMode.Repeated(): androidx.compose.ui.graphics.TileMode"""
+
+class VertexMode:
+ """Kotlin: androidx.compose.ui.graphics.VertexMode"""
+ TriangleFan: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.VertexMode.TriangleFan(): androidx.compose.ui.graphics.VertexMode"""
+ TriangleStrip: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.VertexMode.TriangleStrip(): androidx.compose.ui.graphics.VertexMode"""
+ Triangles: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.graphics.VertexMode.Triangles(): androidx.compose.ui.graphics.VertexMode"""
diff --git a/pythonx/compose/ui/graphics/vector/__init__.py b/pythonx/compose/ui/graphics/vector/__init__.py
new file mode 100644
index 0000000..9000dfc
--- /dev/null
+++ b/pythonx/compose/ui/graphics/vector/__init__.py
@@ -0,0 +1,5 @@
+"""`pythonx.compose.ui.graphics.vector` -- the Pythonic view of `androidx.compose.ui.graphics.vector` (see `pythonx/compose/_reexport.py`)."""
+
+from pythonx.compose._reexport import reexport
+
+__getattr__, __dir__ = reexport(__name__)
diff --git a/pythonx/compose/ui/graphics/vector/__init__.pyi b/pythonx/compose/ui/graphics/vector/__init__.pyi
new file mode 100644
index 0000000..1e708df
--- /dev/null
+++ b/pythonx/compose/ui/graphics/vector/__init__.pyi
@@ -0,0 +1,221 @@
+# GENERATED by pythonx/_build/gen_stubs.py from python-multiplatform's Kotlin-named stubs (artifact kotlin-stubs, workflow run 37103737430, commit a5028618, Compose 1.11.1). Do not edit.
+import typing as _t
+import pythonx.compose.runtime
+import pythonx.compose.ui.graphics
+
+class _ImageVector_Builder_materialPath(_t.Protocol):
+ def __call__(self, fill_alpha: float = ..., stroke_alpha: float = ..., path_fill_type: _t.Any = ..., *, path_builder: _t.Callable[[PathBuilder], None]) -> ImageVector.Builder: ...
+
+class _ImageVector_Builder_path(_t.Protocol):
+ def __call__(self, name: str, fill: pythonx.compose.ui.graphics.Brush | None, fill_alpha: float, stroke: pythonx.compose.ui.graphics.Brush | None, stroke_alpha: float, stroke_line_width: float, stroke_line_cap: _t.Any, stroke_line_join: _t.Any, stroke_line_miter: float, path_fill_type: _t.Any, path_builder: _t.Callable[[PathBuilder], None]) -> ImageVector.Builder: ...
+
+class ImageVector:
+ """Kotlin: androidx.compose.ui.graphics.vector.ImageVector"""
+ @property
+ def auto_mirror(self) -> bool:
+ """Kotlin property: androidx.compose.ui.graphics.vector.ImageVector.autoMirror (androidx.compose.ui.graphics.vector.ImageVector.autoMirror: kotlin.Boolean)"""
+ ...
+ @property
+ def default_height(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.ImageVector.defaultHeight (androidx.compose.ui.graphics.vector.ImageVector.defaultHeight: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def default_width(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.ImageVector.defaultWidth (androidx.compose.ui.graphics.vector.ImageVector.defaultWidth: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def name(self) -> str:
+ """Kotlin property: androidx.compose.ui.graphics.vector.ImageVector.name (androidx.compose.ui.graphics.vector.ImageVector.name: kotlin.String)"""
+ ...
+ @property
+ def root(self) -> VectorGroup:
+ """Kotlin property: androidx.compose.ui.graphics.vector.ImageVector.root (androidx.compose.ui.graphics.vector.ImageVector.root: androidx.compose.ui.graphics.vector.VectorGroup)"""
+ ...
+ @property
+ def tint_blend_mode(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.vector.ImageVector.tintBlendMode (androidx.compose.ui.graphics.vector.ImageVector.tintBlendMode: androidx.compose.ui.graphics.BlendMode)"""
+ ...
+ @property
+ def tint_color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.vector.ImageVector.tintColor (androidx.compose.ui.graphics.vector.ImageVector.tintColor: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def viewport_height(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.ImageVector.viewportHeight (androidx.compose.ui.graphics.vector.ImageVector.viewportHeight: kotlin.Float)"""
+ ...
+ @property
+ def viewport_width(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.ImageVector.viewportWidth (androidx.compose.ui.graphics.vector.ImageVector.viewportWidth: kotlin.Float)"""
+ ...
+ class Builder:
+ """Kotlin: androidx.compose.ui.graphics.vector.ImageVector.Builder"""
+ material_path: _t.ClassVar[_ImageVector_Builder_materialPath]
+ path: _t.ClassVar[_ImageVector_Builder_path]
+
+class PathBuilder:
+ """Kotlin: androidx.compose.ui.graphics.vector.PathBuilder"""
+ def __init__(self) -> None:
+ """Kotlin constructor: androidx.compose.ui.graphics.vector.PathBuilder (androidx.compose.ui.graphics.vector.PathBuilder(): androidx.compose.ui.graphics.vector.PathBuilder)"""
+ ...
+
+class PathNode:
+ """Kotlin: androidx.compose.ui.graphics.vector.PathNode"""
+ @property
+ def is_curve(self) -> bool:
+ """Kotlin property: androidx.compose.ui.graphics.vector.PathNode.isCurve (androidx.compose.ui.graphics.vector.PathNode.isCurve: kotlin.Boolean)"""
+ ...
+ @property
+ def is_quad(self) -> bool:
+ """Kotlin property: androidx.compose.ui.graphics.vector.PathNode.isQuad (androidx.compose.ui.graphics.vector.PathNode.isQuad: kotlin.Boolean)"""
+ ...
+
+class PathParser:
+ """Kotlin: androidx.compose.ui.graphics.vector.PathParser"""
+ def __init__(self) -> None:
+ """Kotlin constructor: androidx.compose.ui.graphics.vector.PathParser (androidx.compose.ui.graphics.vector.PathParser(): androidx.compose.ui.graphics.vector.PathParser)"""
+ ...
+
+class VNode:
+ """Kotlin: androidx.compose.ui.graphics.vector.VNode"""
+
+class VectorApplier(pythonx.compose.runtime.AbstractApplier, pythonx.compose.runtime.Applier):
+ """Kotlin: androidx.compose.ui.graphics.vector.VectorApplier"""
+ def __init__(self, root: VNode) -> None:
+ """Kotlin constructor: androidx.compose.ui.graphics.vector.VectorApplier (androidx.compose.ui.graphics.vector.VectorApplier(root: androidx.compose.ui.graphics.vector.VNode): androidx.compose.ui.graphics.vector.VectorApplier)"""
+ ...
+
+class VectorGroup:
+ """Kotlin: androidx.compose.ui.graphics.vector.VectorGroup"""
+ @property
+ def name(self) -> str:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorGroup.name (androidx.compose.ui.graphics.vector.VectorGroup.name: kotlin.String)"""
+ ...
+ @property
+ def pivot_x(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorGroup.pivotX (androidx.compose.ui.graphics.vector.VectorGroup.pivotX: kotlin.Float)"""
+ ...
+ @property
+ def pivot_y(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorGroup.pivotY (androidx.compose.ui.graphics.vector.VectorGroup.pivotY: kotlin.Float)"""
+ ...
+ @property
+ def rotation(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorGroup.rotation (androidx.compose.ui.graphics.vector.VectorGroup.rotation: kotlin.Float)"""
+ ...
+ @property
+ def scale_x(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorGroup.scaleX (androidx.compose.ui.graphics.vector.VectorGroup.scaleX: kotlin.Float)"""
+ ...
+ @property
+ def scale_y(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorGroup.scaleY (androidx.compose.ui.graphics.vector.VectorGroup.scaleY: kotlin.Float)"""
+ ...
+ @property
+ def size(self) -> int:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorGroup.size (androidx.compose.ui.graphics.vector.VectorGroup.size: kotlin.Int)"""
+ ...
+ @property
+ def translation_x(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorGroup.translationX (androidx.compose.ui.graphics.vector.VectorGroup.translationX: kotlin.Float)"""
+ ...
+ @property
+ def translation_y(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorGroup.translationY (androidx.compose.ui.graphics.vector.VectorGroup.translationY: kotlin.Float)"""
+ ...
+
+class VectorPainter(_t.Any):
+ """Kotlin: androidx.compose.ui.graphics.vector.VectorPainter"""
+ @property
+ def intrinsic_size(self) -> int:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPainter.intrinsicSize (androidx.compose.ui.graphics.vector.VectorPainter.intrinsicSize: androidx.compose.ui.geometry.Size)"""
+ ...
+
+class VectorPath:
+ """Kotlin: androidx.compose.ui.graphics.vector.VectorPath"""
+ @property
+ def fill(self) -> pythonx.compose.ui.graphics.Brush | None:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.fill (androidx.compose.ui.graphics.vector.VectorPath.fill: androidx.compose.ui.graphics.Brush?)"""
+ ...
+ @property
+ def fill_alpha(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.fillAlpha (androidx.compose.ui.graphics.vector.VectorPath.fillAlpha: kotlin.Float)"""
+ ...
+ @property
+ def name(self) -> str:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.name (androidx.compose.ui.graphics.vector.VectorPath.name: kotlin.String)"""
+ ...
+ @property
+ def path_fill_type(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.pathFillType (androidx.compose.ui.graphics.vector.VectorPath.pathFillType: androidx.compose.ui.graphics.PathFillType)"""
+ ...
+ @property
+ def stroke(self) -> pythonx.compose.ui.graphics.Brush | None:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.stroke (androidx.compose.ui.graphics.vector.VectorPath.stroke: androidx.compose.ui.graphics.Brush?)"""
+ ...
+ @property
+ def stroke_alpha(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.strokeAlpha (androidx.compose.ui.graphics.vector.VectorPath.strokeAlpha: kotlin.Float)"""
+ ...
+ @property
+ def stroke_line_cap(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.strokeLineCap (androidx.compose.ui.graphics.vector.VectorPath.strokeLineCap: androidx.compose.ui.graphics.StrokeCap)"""
+ ...
+ @property
+ def stroke_line_join(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.strokeLineJoin (androidx.compose.ui.graphics.vector.VectorPath.strokeLineJoin: androidx.compose.ui.graphics.StrokeJoin)"""
+ ...
+ @property
+ def stroke_line_miter(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.strokeLineMiter (androidx.compose.ui.graphics.vector.VectorPath.strokeLineMiter: kotlin.Float)"""
+ ...
+ @property
+ def stroke_line_width(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.strokeLineWidth (androidx.compose.ui.graphics.vector.VectorPath.strokeLineWidth: kotlin.Float)"""
+ ...
+ @property
+ def trim_path_end(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.trimPathEnd (androidx.compose.ui.graphics.vector.VectorPath.trimPathEnd: kotlin.Float)"""
+ ...
+ @property
+ def trim_path_offset(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.trimPathOffset (androidx.compose.ui.graphics.vector.VectorPath.trimPathOffset: kotlin.Float)"""
+ ...
+ @property
+ def trim_path_start(self) -> float:
+ """Kotlin property: androidx.compose.ui.graphics.vector.VectorPath.trimPathStart (androidx.compose.ui.graphics.vector.VectorPath.trimPathStart: kotlin.Float)"""
+ ...
+
+def Group(name: str = ..., rotation: float = ..., pivot_x: float = ..., pivot_y: float = ..., scale_x: float = ..., scale_y: float = ..., translation_x: float = ..., translation_y: float = ..., clip_path_data: _t.Any = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.ui.graphics.vector.Group(name: kotlin.String, rotation: kotlin.Float, pivotX: kotlin.Float, pivotY: kotlin.Float, scaleX: kotlin.Float, scaleY: kotlin.Float, translationX: kotlin.Float, translationY: kotlin.Float, clipPathData: kotlin.collections.List, content: kotlin.Function0): kotlin.Unit"""
+ ...
+
+def Path(path_data: _t.Any, path_fill_type: _t.Any = ..., name: str = ..., fill: pythonx.compose.ui.graphics.Brush | None = ..., fill_alpha: float = ..., stroke: pythonx.compose.ui.graphics.Brush | None = ..., stroke_alpha: float = ..., stroke_line_width: float = ..., stroke_line_cap: _t.Any = ..., stroke_line_join: _t.Any = ..., stroke_line_miter: float = ..., trim_path_start: float = ..., trim_path_end: float = ..., trim_path_offset: float = ...) -> None:
+ """Kotlin: androidx.compose.ui.graphics.vector.Path(pathData: kotlin.collections.List, pathFillType: androidx.compose.ui.graphics.PathFillType, name: kotlin.String, fill: androidx.compose.ui.graphics.Brush?, fillAlpha: kotlin.Float, stroke: androidx.compose.ui.graphics.Brush?, strokeAlpha: kotlin.Float, strokeLineWidth: kotlin.Float, strokeLineCap: androidx.compose.ui.graphics.StrokeCap, strokeLineJoin: androidx.compose.ui.graphics.StrokeJoin, strokeLineMiter: kotlin.Float, trimPathStart: kotlin.Float, trimPathEnd: kotlin.Float, trimPathOffset: kotlin.Float): kotlin.Unit"""
+ ...
+
+def RenderVectorGroup(group: VectorGroup, configs: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.ui.graphics.vector.RenderVectorGroup(group: androidx.compose.ui.graphics.vector.VectorGroup, configs: kotlin.collections.Map): kotlin.Unit"""
+ ...
+
+def path(receiver: ImageVector.Builder, /, name: str, fill: pythonx.compose.ui.graphics.Brush | None, fill_alpha: float, stroke: pythonx.compose.ui.graphics.Brush | None, stroke_alpha: float, stroke_line_width: float, stroke_line_cap: _t.Any, stroke_line_join: _t.Any, stroke_line_miter: float, path_fill_type: _t.Any, path_builder: _t.Callable[[PathBuilder], None]) -> ImageVector.Builder:
+ """Kotlin: androidx.compose.ui.graphics.vector.ImageVector.Builder.path(name: kotlin.String, fill: androidx.compose.ui.graphics.Brush?, fillAlpha: kotlin.Float, stroke: androidx.compose.ui.graphics.Brush?, strokeAlpha: kotlin.Float, strokeLineWidth: kotlin.Float, strokeLineCap: androidx.compose.ui.graphics.StrokeCap, strokeLineJoin: androidx.compose.ui.graphics.StrokeJoin, strokeLineMiter: kotlin.Float, pathFillType: androidx.compose.ui.graphics.PathFillType, pathBuilder: kotlin.Function1): androidx.compose.ui.graphics.vector.ImageVector.Builder"""
+ ...
+
+def remember_vector_painter__Dp_Dp_Float_Float_String_Color_BlendMode_Boolean_Unit(default_width: float, default_height: float, viewport_width: float = ..., viewport_height: float = ..., name: str = ..., tint_color: _t.Any = ..., tint_blend_mode: _t.Any = ..., auto_mirror: bool = ..., *, content: _t.Callable[[float, float], None]) -> VectorPainter:
+ """Kotlin: androidx.compose.ui.graphics.vector.rememberVectorPainter(defaultWidth: androidx.compose.ui.unit.Dp, defaultHeight: androidx.compose.ui.unit.Dp, viewportWidth: kotlin.Float, viewportHeight: kotlin.Float, name: kotlin.String, tintColor: androidx.compose.ui.graphics.Color, tintBlendMode: androidx.compose.ui.graphics.BlendMode, autoMirror: kotlin.Boolean, content: kotlin.Function2): androidx.compose.ui.graphics.vector.VectorPainter"""
+ ...
+
+def remember_vector_painter__Dp_Dp_Float_Float_String_Color_BlendMode_Unit(default_width: float, default_height: float, viewport_width: float = ..., viewport_height: float = ..., name: str = ..., tint_color: _t.Any = ..., tint_blend_mode: _t.Any = ..., *, content: _t.Callable[[float, float], None]) -> VectorPainter:
+ """Kotlin: androidx.compose.ui.graphics.vector.rememberVectorPainter(defaultWidth: androidx.compose.ui.unit.Dp, defaultHeight: androidx.compose.ui.unit.Dp, viewportWidth: kotlin.Float, viewportHeight: kotlin.Float, name: kotlin.String, tintColor: androidx.compose.ui.graphics.Color, tintBlendMode: androidx.compose.ui.graphics.BlendMode, content: kotlin.Function2): androidx.compose.ui.graphics.vector.VectorPainter"""
+ ...
+
+def remember_vector_painter__ImageVector(image: ImageVector) -> VectorPainter:
+ """Kotlin: androidx.compose.ui.graphics.vector.rememberVectorPainter(image: androidx.compose.ui.graphics.vector.ImageVector): androidx.compose.ui.graphics.vector.VectorPainter"""
+ ...
+
+@_t.overload
+def remember_vector_painter(default_width: float, default_height: float, viewport_width: float = ..., viewport_height: float = ..., name: str = ..., tint_color: _t.Any = ..., tint_blend_mode: _t.Any = ..., auto_mirror: bool = ..., *, content: _t.Callable[[float, float], None]) -> VectorPainter: ...
+@_t.overload
+def remember_vector_painter(default_width: float, default_height: float, viewport_width: float = ..., viewport_height: float = ..., name: str = ..., tint_color: _t.Any = ..., tint_blend_mode: _t.Any = ..., *, content: _t.Callable[[float, float], None]) -> VectorPainter: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def remember_vector_painter(image: ImageVector) -> VectorPainter: ... # type: ignore[overload-cannot-match]
diff --git a/pythonx/compose/ui/modifier.py b/pythonx/compose/ui/modifier.py
index 3b6c335..a551e7c 100644
--- a/pythonx/compose/ui/modifier.py
+++ b/pythonx/compose/ui/modifier.py
@@ -1,67 +1,110 @@
-from androidx.compose.material3 import ButtonKt
-
-
-__COMPILED_CODE__ = None
-Unit = None
-
-class Modifier:
- __padding = None
- __fill_max_size = None
-
-
- def padding(self) -> "Modifier":
- def find_composable(self):
- super().__init__()
-
- if self.__padding is None:
- try:
- self.__padding = ButtonKt.Button
- except Exception:
- for name, obj in ButtonKt.__dict__.items():
- if name.startswith("Button-"):
- self.__padding = obj
- break
-
- if not self.__padding:
- raise Exception("Button is cannot be found")
-
-
- def compose(
- self,
- on_click,
- modifier=__COMPILED_CODE__,
- enabled=__COMPILED_CODE__,
- shape=__COMPILED_CODE__,
- colors=__COMPILED_CODE__,
- elevation=__COMPILED_CODE__,
- border=__COMPILED_CODE__,
- content_padding=__COMPILED_CODE__,
- interaction_source=__COMPILED_CODE__,
- content=__COMPILED_CODE__
- ):
- kwargs = { key: value for key, value in dict(
- modifier=modifier,
- enabled=enabled,
- shape=shape,
- colors=colors,
- elevation=elevation,
- border=border,
- contentPadding=content_padding,
- interactionSource=interaction_source,
- content=content
- ) if value is not __COMPILED_CODE__ }
-
- if self.__kotlin_composable is None:
- self.find_composable()
-
- self.__kotlin_composable(
- onClick=on_click,
- **kwargs,
- c=self.composer,
- changed=1
- )
-
- return self.__padding()
-
- def fill_max_size(self):
- return self
\ No newline at end of file
+"""Where a `Modifier` chain starts -- and the only thing about `Modifier` that is hand-written.
+
+## What used to be here
+
+A copy of the Button wrapper. `padding()` composed nothing, `fill_max_size()` returned `self`, and
+lines 20-22 searched `ButtonKt.__dict__` for a name beginning `"Button-"` -- a prefix search over
+Kotlin's value-class mangling suffix. That search is not merely broken, it is *impossible*: the
+suffix hashes the value-class signature only, so `padding`, `size`, `width` and `height` all mangle
+to `-3ABfNKs` and a name lookup cannot tell them apart. Looking a Kotlin declaration up by JVM name
+is a removed option (`agent-rules.md` §12); the binder generates Kotlin source and lets `kotlinc`
+mangle it.
+
+## What replaced it, and where that lives
+
+Not here. `Modifier` is an ordinary proxy the binder builds from the upcall table and serves as
+`androidx.compose.ui.Modifier`; `pythonx.compose.ui.Modifier` is that same class, re-exported by
+the naming rule in `pythonx/compose/_reexport.py`.
+Every one of its methods is a `Modifier` extension the artefact walker bound out of Compose's own
+jars -- 104 of them at last count (`docs/kotlin-extensions-in-python.md` §3.2) -- and each is
+attached to the proxy type on first read and never resolved again. So:
+
+ Modifier.padding(16).size(24) # chained, with zero hand-written wrappers
+ padding(m, horizontal=8, vertical=4) # dispatched among four `padding` overloads
+
+None of that is per-declaration Python, which is exactly why none of it is a file
+(`docs/pythonx-adapter-design.md` §7). **If this file ever grows a `def padding`, the 2024 mistake
+has been made again.**
+
+## What is left, and why it cannot be derived
+
+One fact, and it is data rather than code: **the name of a Kotlin function that returns an empty
+`Modifier`.**
+
+`Modifier` as a Kotlin *expression* is `Modifier.Companion`, an object instance, and the artefact
+walker binds functions. So the empty modifier every chain starts from has **no bound name**, and the
+adaptation layer refuses to invent one -- `Modifier.padding(16)` raises a `TypeError` naming
+`register_empty` rather than guessing. Registering that name is the seam, and this file is it.
+
+**No such function exists in Compose today.** `androidx.compose.ui.emptyModifier` is the name
+`ComposeShapedFragment` uses for the fixture, and it is a placeholder: against the real jars nothing
+is bound under it, so the class-object spelling does not yet work and only the instance spelling
+(`m.padding(16)`, on a `Modifier` Kotlin handed out) does. Closing that needs one line of Kotlin in
+the consuming application -- `fun emptyModifier(): Modifier = Modifier`, picked up by KSP -- and
+[install] is where its name is supplied.
+
+## How this module is reached
+
+As `pythonx.compose.ui.modifier`, an ordinary module of this package. It needs the binder's layer
+(`python_multiplatform.binding`) to be installed by the host before [install] can do anything.
+"""
+
+from __future__ import annotations
+
+import importlib
+import sys
+
+BINDING_MODULE = "python_multiplatform.binding"
+
+KOTLIN_PACKAGE = "androidx.compose.ui"
+
+KOTLIN_TYPE = KOTLIN_PACKAGE + ".Modifier"
+"""The Kotlin type the proxy stands for. The walker reports it as `receiverTypeName`."""
+
+PLACEHOLDER_EMPTY_FACTORY = "androidx.compose.ui.emptyModifier"
+"""A name that is **not** bound by Compose. See the module docstring; supply your own to [install]."""
+
+
+def adapter():
+ """The binder's installed binding layer, or a `RuntimeError` that says what did not happen.
+
+ The Kotlin host installs it (`PythonxAdapter.install()`), not an import, so its absence means
+ the host never ran it -- a different failure from a missing package, with a different message.
+ """
+ module = sys.modules.get(BINDING_MODULE)
+ if module is None or not hasattr(module, "register_empty"):
+ raise RuntimeError(
+ "the python-multiplatform binding layer is not installed: the Kotlin host must run "
+ "PythonxAdapter.install() before anything here can resolve a Modifier"
+ )
+ return module
+
+
+def modifier_type(layer=None):
+ """The `Modifier` proxy class -- the same object `pythonx.compose.ui.Modifier` is."""
+ if layer is None:
+ adapter()
+ # Through this package's own module, so the manifest's value-class allowlist is in force.
+ return importlib.import_module("pythonx.compose.ui").Modifier
+
+
+def install(empty_factory=PLACEHOLDER_EMPTY_FACTORY, layer=None):
+ """Register where an empty `Modifier` comes from, and return the proxy class.
+
+ :param empty_factory: the fully-qualified Kotlin name of a zero-argument function returning
+ `Modifier`. Must be bound in the upcall table; nothing in Compose is, so this is normally a
+ one-line function in the consuming application's own Kotlin.
+ :param layer: the adaptation layer, for tests that hold one directly.
+ """
+ layer = layer or adapter()
+ layer.register_empty(KOTLIN_TYPE, empty_factory)
+ return modifier_type(layer)
+
+
+def __getattr__(name):
+ # `Modifier` is resolved rather than defined, so that this module cannot hold a stale class
+ # across a table reinstall -- `_register_table` invalidates every proxy, and a module-level
+ # binding made at import time would outlive that.
+ if name == "Modifier":
+ return modifier_type()
+ raise AttributeError(name)
diff --git a/pythonx/compose/ui/text/__init__.py b/pythonx/compose/ui/text/__init__.py
new file mode 100644
index 0000000..2cc495b
--- /dev/null
+++ b/pythonx/compose/ui/text/__init__.py
@@ -0,0 +1,5 @@
+"""`pythonx.compose.ui.text` -- the Pythonic view of `androidx.compose.ui.text` (see `pythonx/compose/_reexport.py`)."""
+
+from pythonx.compose._reexport import reexport
+
+__getattr__, __dir__ = reexport(__name__)
diff --git a/pythonx/compose/ui/text/__init__.pyi b/pythonx/compose/ui/text/__init__.pyi
new file mode 100644
index 0000000..6044f24
--- /dev/null
+++ b/pythonx/compose/ui/text/__init__.pyi
@@ -0,0 +1,703 @@
+# GENERATED by pythonx/_build/gen_stubs.py from python-multiplatform's Kotlin-named stubs (artifact kotlin-stubs, workflow run 37103737430, commit a5028618, Compose 1.11.1). Do not edit.
+import typing as _t
+import pythonx.compose.ui.graphics
+import pythonx.compose.ui.unit
+
+class LinkAnnotation:
+ """Kotlin: androidx.compose.ui.text.LinkAnnotation"""
+ @property
+ def link_interaction_listener(self) -> LinkInteractionListener | None:
+ """Kotlin property: androidx.compose.ui.text.LinkAnnotation.linkInteractionListener (androidx.compose.ui.text.LinkAnnotation.linkInteractionListener: androidx.compose.ui.text.LinkInteractionListener?)"""
+ ...
+ @property
+ def styles(self) -> TextLinkStyles | None:
+ """Kotlin property: androidx.compose.ui.text.LinkAnnotation.styles (androidx.compose.ui.text.LinkAnnotation.styles: androidx.compose.ui.text.TextLinkStyles?)"""
+ ...
+
+class LinkInteractionListener:
+ """Kotlin: androidx.compose.ui.text.LinkInteractionListener"""
+
+class MultiParagraph:
+ """Kotlin: androidx.compose.ui.text.MultiParagraph"""
+ @_t.overload
+ def __init__(self, intrinsics: MultiParagraphIntrinsics, constraints: int, maxLines: int = ..., overflow: _t.Any = ...) -> None: ...
+ @_t.overload
+ def __init__(self, intrinsics: MultiParagraphIntrinsics, maxLines: int = ..., ellipsis: bool = ..., *, width: float) -> None: ... # type: ignore[overload-cannot-match]
+ @property
+ def did_exceed_max_lines(self) -> bool:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraph.didExceedMaxLines (androidx.compose.ui.text.MultiParagraph.didExceedMaxLines: kotlin.Boolean)"""
+ ...
+ @property
+ def first_baseline(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraph.firstBaseline (androidx.compose.ui.text.MultiParagraph.firstBaseline: kotlin.Float)"""
+ ...
+ @property
+ def height(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraph.height (androidx.compose.ui.text.MultiParagraph.height: kotlin.Float)"""
+ ...
+ @property
+ def intrinsics(self) -> MultiParagraphIntrinsics:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraph.intrinsics (androidx.compose.ui.text.MultiParagraph.intrinsics: androidx.compose.ui.text.MultiParagraphIntrinsics)"""
+ ...
+ @property
+ def last_baseline(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraph.lastBaseline (androidx.compose.ui.text.MultiParagraph.lastBaseline: kotlin.Float)"""
+ ...
+ @property
+ def line_count(self) -> int:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraph.lineCount (androidx.compose.ui.text.MultiParagraph.lineCount: kotlin.Int)"""
+ ...
+ @property
+ def max_intrinsic_width(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraph.maxIntrinsicWidth (androidx.compose.ui.text.MultiParagraph.maxIntrinsicWidth: kotlin.Float)"""
+ ...
+ @property
+ def max_lines(self) -> int:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraph.maxLines (androidx.compose.ui.text.MultiParagraph.maxLines: kotlin.Int)"""
+ ...
+ @property
+ def min_intrinsic_width(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraph.minIntrinsicWidth (androidx.compose.ui.text.MultiParagraph.minIntrinsicWidth: kotlin.Float)"""
+ ...
+ @property
+ def width(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraph.width (androidx.compose.ui.text.MultiParagraph.width: kotlin.Float)"""
+ ...
+
+class MultiParagraphIntrinsics:
+ """Kotlin: androidx.compose.ui.text.MultiParagraphIntrinsics"""
+ @property
+ def annotated_string(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraphIntrinsics.annotatedString (androidx.compose.ui.text.MultiParagraphIntrinsics.annotatedString: androidx.compose.ui.text.AnnotatedString)"""
+ ...
+ @property
+ def has_stale_resolved_fonts(self) -> bool:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraphIntrinsics.hasStaleResolvedFonts (androidx.compose.ui.text.MultiParagraphIntrinsics.hasStaleResolvedFonts: kotlin.Boolean)"""
+ ...
+ @property
+ def max_intrinsic_width(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraphIntrinsics.maxIntrinsicWidth (androidx.compose.ui.text.MultiParagraphIntrinsics.maxIntrinsicWidth: kotlin.Float)"""
+ ...
+ @property
+ def min_intrinsic_width(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.MultiParagraphIntrinsics.minIntrinsicWidth (androidx.compose.ui.text.MultiParagraphIntrinsics.minIntrinsicWidth: kotlin.Float)"""
+ ...
+
+class ParagraphIntrinsics:
+ """Kotlin: androidx.compose.ui.text.ParagraphIntrinsics"""
+ @property
+ def has_stale_resolved_fonts(self) -> bool:
+ """Kotlin property: androidx.compose.ui.text.ParagraphIntrinsics.hasStaleResolvedFonts (androidx.compose.ui.text.ParagraphIntrinsics.hasStaleResolvedFonts: kotlin.Boolean)"""
+ ...
+ @property
+ def max_intrinsic_width(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.ParagraphIntrinsics.maxIntrinsicWidth (androidx.compose.ui.text.ParagraphIntrinsics.maxIntrinsicWidth: kotlin.Float)"""
+ ...
+ @property
+ def min_intrinsic_width(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.ParagraphIntrinsics.minIntrinsicWidth (androidx.compose.ui.text.ParagraphIntrinsics.minIntrinsicWidth: kotlin.Float)"""
+ ...
+
+class ParagraphStyle:
+ """Kotlin: androidx.compose.ui.text.ParagraphStyle"""
+ def __init__(self, textAlign: _t.Any, textDirection: _t.Any, lineHeight: _t.Any, textIndent: _t.Any | None, platformStyle: _t.Any | None, lineHeightStyle: _t.Any | None, lineBreak: _t.Any, hyphens: _t.Any, textMotion: _t.Any | None) -> None:
+ """Kotlin constructor: androidx.compose.ui.text.ParagraphStyle (androidx.compose.ui.text.ParagraphStyle(textAlign: androidx.compose.ui.text.style.TextAlign, textDirection: androidx.compose.ui.text.style.TextDirection, lineHeight: androidx.compose.ui.unit.TextUnit, textIndent: androidx.compose.ui.text.style.TextIndent?, platformStyle: androidx.compose.ui.text.PlatformParagraphStyle?, lineHeightStyle: androidx.compose.ui.text.style.LineHeightStyle?, lineBreak: androidx.compose.ui.text.style.LineBreak, hyphens: androidx.compose.ui.text.style.Hyphens, textMotion: androidx.compose.ui.text.style.TextMotion?): androidx.compose.ui.text.ParagraphStyle)"""
+ ...
+ @property
+ def deprecated_boxing_hyphens(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.deprecated_boxing_hyphens (androidx.compose.ui.text.ParagraphStyle.deprecated_boxing_hyphens: androidx.compose.ui.text.style.Hyphens?)"""
+ ...
+ @property
+ def deprecated_boxing_line_break(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.deprecated_boxing_lineBreak (androidx.compose.ui.text.ParagraphStyle.deprecated_boxing_lineBreak: androidx.compose.ui.text.style.LineBreak?)"""
+ ...
+ @property
+ def deprecated_boxing_text_align(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.deprecated_boxing_textAlign (androidx.compose.ui.text.ParagraphStyle.deprecated_boxing_textAlign: androidx.compose.ui.text.style.TextAlign?)"""
+ ...
+ @property
+ def deprecated_boxing_text_direction(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.deprecated_boxing_textDirection (androidx.compose.ui.text.ParagraphStyle.deprecated_boxing_textDirection: androidx.compose.ui.text.style.TextDirection?)"""
+ ...
+ @property
+ def hyphens(self) -> int:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.hyphens (androidx.compose.ui.text.ParagraphStyle.hyphens: androidx.compose.ui.text.style.Hyphens)"""
+ ...
+ @property
+ def line_break(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.lineBreak (androidx.compose.ui.text.ParagraphStyle.lineBreak: androidx.compose.ui.text.style.LineBreak)"""
+ ...
+ @property
+ def line_height(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.lineHeight (androidx.compose.ui.text.ParagraphStyle.lineHeight: androidx.compose.ui.unit.TextUnit)"""
+ ...
+ @property
+ def line_height_style(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.lineHeightStyle (androidx.compose.ui.text.ParagraphStyle.lineHeightStyle: androidx.compose.ui.text.style.LineHeightStyle?)"""
+ ...
+ @property
+ def platform_style(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.platformStyle (androidx.compose.ui.text.ParagraphStyle.platformStyle: androidx.compose.ui.text.PlatformParagraphStyle?)"""
+ ...
+ @property
+ def text_align(self) -> int:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.textAlign (androidx.compose.ui.text.ParagraphStyle.textAlign: androidx.compose.ui.text.style.TextAlign)"""
+ ...
+ @property
+ def text_direction(self) -> int:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.textDirection (androidx.compose.ui.text.ParagraphStyle.textDirection: androidx.compose.ui.text.style.TextDirection)"""
+ ...
+ @property
+ def text_indent(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.textIndent (androidx.compose.ui.text.ParagraphStyle.textIndent: androidx.compose.ui.text.style.TextIndent?)"""
+ ...
+ @property
+ def text_motion(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.ParagraphStyle.textMotion (androidx.compose.ui.text.ParagraphStyle.textMotion: androidx.compose.ui.text.style.TextMotion?)"""
+ ...
+
+class Placeholder:
+ """Kotlin: androidx.compose.ui.text.Placeholder"""
+ def __init__(self, width: _t.Any, height: _t.Any, placeholderVerticalAlign: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.ui.text.Placeholder (androidx.compose.ui.text.Placeholder(width: androidx.compose.ui.unit.TextUnit, height: androidx.compose.ui.unit.TextUnit, placeholderVerticalAlign: androidx.compose.ui.text.PlaceholderVerticalAlign): androidx.compose.ui.text.Placeholder)"""
+ ...
+ @property
+ def height(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.Placeholder.height (androidx.compose.ui.text.Placeholder.height: androidx.compose.ui.unit.TextUnit)"""
+ ...
+ @property
+ def placeholder_vertical_align(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.Placeholder.placeholderVerticalAlign (androidx.compose.ui.text.Placeholder.placeholderVerticalAlign: androidx.compose.ui.text.PlaceholderVerticalAlign)"""
+ ...
+ @property
+ def width(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.Placeholder.width (androidx.compose.ui.text.Placeholder.width: androidx.compose.ui.unit.TextUnit)"""
+ ...
+
+class PlatformTextStyle:
+ """Kotlin: androidx.compose.ui.text.PlatformTextStyle"""
+ @_t.overload
+ def __init__(self, spanStyle: _t.Any | None, paragraphStyle: _t.Any | None) -> None: ...
+ @_t.overload
+ def __init__(self, textDecorationLineStyle: _t.Any | None) -> None: ... # type: ignore[overload-cannot-match]
+ @property
+ def paragraph_style(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.PlatformTextStyle.paragraphStyle (androidx.compose.ui.text.PlatformTextStyle.paragraphStyle: androidx.compose.ui.text.PlatformParagraphStyle?)"""
+ ...
+ @property
+ def span_style(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.PlatformTextStyle.spanStyle (androidx.compose.ui.text.PlatformTextStyle.spanStyle: androidx.compose.ui.text.PlatformSpanStyle?)"""
+ ...
+
+class SpanStyle:
+ """Kotlin: androidx.compose.ui.text.SpanStyle"""
+ @_t.overload
+ def __init__(self, brush: pythonx.compose.ui.graphics.Brush | None, alpha: float, fontSize: _t.Any, fontWeight: _t.Any | None, fontStyle: _t.Any | None, fontSynthesis: _t.Any | None, fontFamily: _t.Any | None, fontFeatureSettings: str | None, letterSpacing: _t.Any, baselineShift: _t.Any | None, textGeometricTransform: _t.Any | None, localeList: _t.Any | None, background: _t.Any, textDecoration: _t.Any | None, shadow: pythonx.compose.ui.graphics.Shadow | None, platformStyle: _t.Any | None, drawStyle: _t.Any | None) -> None: ...
+ @_t.overload
+ def __init__(self, color: _t.Any, fontSize: _t.Any, fontWeight: _t.Any | None, fontStyle: _t.Any | None, fontSynthesis: _t.Any | None, fontFamily: _t.Any | None, fontFeatureSettings: str | None, letterSpacing: _t.Any, baselineShift: _t.Any | None, textGeometricTransform: _t.Any | None, localeList: _t.Any | None, background: _t.Any, textDecoration: _t.Any | None, shadow: pythonx.compose.ui.graphics.Shadow | None, platformStyle: _t.Any | None, drawStyle: _t.Any | None) -> None: ... # type: ignore[overload-cannot-match]
+ @property
+ def alpha(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.alpha (androidx.compose.ui.text.SpanStyle.alpha: kotlin.Float)"""
+ ...
+ @property
+ def background(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.background (androidx.compose.ui.text.SpanStyle.background: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def baseline_shift(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.baselineShift (androidx.compose.ui.text.SpanStyle.baselineShift: androidx.compose.ui.text.style.BaselineShift?)"""
+ ...
+ @property
+ def brush(self) -> pythonx.compose.ui.graphics.Brush | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.brush (androidx.compose.ui.text.SpanStyle.brush: androidx.compose.ui.graphics.Brush?)"""
+ ...
+ @property
+ def color(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.color (androidx.compose.ui.text.SpanStyle.color: androidx.compose.ui.graphics.Color)"""
+ ...
+ @property
+ def draw_style(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.drawStyle (androidx.compose.ui.text.SpanStyle.drawStyle: androidx.compose.ui.graphics.drawscope.DrawStyle?)"""
+ ...
+ @property
+ def font_family(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.fontFamily (androidx.compose.ui.text.SpanStyle.fontFamily: androidx.compose.ui.text.font.FontFamily?)"""
+ ...
+ @property
+ def font_feature_settings(self) -> str | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.fontFeatureSettings (androidx.compose.ui.text.SpanStyle.fontFeatureSettings: kotlin.String?)"""
+ ...
+ @property
+ def font_size(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.fontSize (androidx.compose.ui.text.SpanStyle.fontSize: androidx.compose.ui.unit.TextUnit)"""
+ ...
+ @property
+ def font_style(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.fontStyle (androidx.compose.ui.text.SpanStyle.fontStyle: androidx.compose.ui.text.font.FontStyle?)"""
+ ...
+ @property
+ def font_synthesis(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.fontSynthesis (androidx.compose.ui.text.SpanStyle.fontSynthesis: androidx.compose.ui.text.font.FontSynthesis?)"""
+ ...
+ @property
+ def font_weight(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.fontWeight (androidx.compose.ui.text.SpanStyle.fontWeight: androidx.compose.ui.text.font.FontWeight?)"""
+ ...
+ @property
+ def letter_spacing(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.letterSpacing (androidx.compose.ui.text.SpanStyle.letterSpacing: androidx.compose.ui.unit.TextUnit)"""
+ ...
+ @property
+ def locale_list(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.localeList (androidx.compose.ui.text.SpanStyle.localeList: androidx.compose.ui.text.intl.LocaleList?)"""
+ ...
+ @property
+ def platform_style(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.platformStyle (androidx.compose.ui.text.SpanStyle.platformStyle: androidx.compose.ui.text.PlatformSpanStyle?)"""
+ ...
+ @property
+ def shadow(self) -> pythonx.compose.ui.graphics.Shadow | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.shadow (androidx.compose.ui.text.SpanStyle.shadow: androidx.compose.ui.graphics.Shadow?)"""
+ ...
+ @property
+ def text_decoration(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.textDecoration (androidx.compose.ui.text.SpanStyle.textDecoration: androidx.compose.ui.text.style.TextDecoration?)"""
+ ...
+ @property
+ def text_geometric_transform(self) -> _t.Any | None:
+ """Kotlin property: androidx.compose.ui.text.SpanStyle.textGeometricTransform (androidx.compose.ui.text.SpanStyle.textGeometricTransform: androidx.compose.ui.text.style.TextGeometricTransform?)"""
+ ...
+
+class TextLayoutInput:
+ """Kotlin: androidx.compose.ui.text.TextLayoutInput"""
+ @property
+ def constraints(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutInput.constraints (androidx.compose.ui.text.TextLayoutInput.constraints: androidx.compose.ui.unit.Constraints)"""
+ ...
+ @property
+ def density(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutInput.density (androidx.compose.ui.text.TextLayoutInput.density: androidx.compose.ui.unit.Density)"""
+ ...
+ @property
+ def font_family_resolver(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutInput.fontFamilyResolver (androidx.compose.ui.text.TextLayoutInput.fontFamilyResolver: androidx.compose.ui.text.font.FontFamily.Resolver)"""
+ ...
+ @property
+ def layout_direction(self) -> pythonx.compose.ui.unit.LayoutDirection:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutInput.layoutDirection (androidx.compose.ui.text.TextLayoutInput.layoutDirection: androidx.compose.ui.unit.LayoutDirection)"""
+ ...
+ @property
+ def max_lines(self) -> int:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutInput.maxLines (androidx.compose.ui.text.TextLayoutInput.maxLines: kotlin.Int)"""
+ ...
+ @property
+ def overflow(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutInput.overflow (androidx.compose.ui.text.TextLayoutInput.overflow: androidx.compose.ui.text.style.TextOverflow)"""
+ ...
+ @property
+ def resource_loader(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutInput.resourceLoader (androidx.compose.ui.text.TextLayoutInput.resourceLoader: androidx.compose.ui.text.font.Font.ResourceLoader)"""
+ ...
+ @property
+ def soft_wrap(self) -> bool:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutInput.softWrap (androidx.compose.ui.text.TextLayoutInput.softWrap: kotlin.Boolean)"""
+ ...
+ @property
+ def style(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutInput.style (androidx.compose.ui.text.TextLayoutInput.style: androidx.compose.ui.text.TextStyle)"""
+ ...
+ @property
+ def text(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutInput.text (androidx.compose.ui.text.TextLayoutInput.text: androidx.compose.ui.text.AnnotatedString)"""
+ ...
+
+class TextLayoutResult:
+ """Kotlin: androidx.compose.ui.text.TextLayoutResult"""
+ def __init__(self, layoutInput: TextLayoutInput, multiParagraph: MultiParagraph, size: _t.Any) -> None:
+ """Kotlin constructor: androidx.compose.ui.text.TextLayoutResult (androidx.compose.ui.text.TextLayoutResult(layoutInput: androidx.compose.ui.text.TextLayoutInput, multiParagraph: androidx.compose.ui.text.MultiParagraph, size: androidx.compose.ui.unit.IntSize): androidx.compose.ui.text.TextLayoutResult)"""
+ ...
+ @property
+ def did_overflow_height(self) -> bool:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutResult.didOverflowHeight (androidx.compose.ui.text.TextLayoutResult.didOverflowHeight: kotlin.Boolean)"""
+ ...
+ @property
+ def did_overflow_width(self) -> bool:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutResult.didOverflowWidth (androidx.compose.ui.text.TextLayoutResult.didOverflowWidth: kotlin.Boolean)"""
+ ...
+ @property
+ def first_baseline(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutResult.firstBaseline (androidx.compose.ui.text.TextLayoutResult.firstBaseline: kotlin.Float)"""
+ ...
+ @property
+ def has_visual_overflow(self) -> bool:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutResult.hasVisualOverflow (androidx.compose.ui.text.TextLayoutResult.hasVisualOverflow: kotlin.Boolean)"""
+ ...
+ @property
+ def last_baseline(self) -> float:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutResult.lastBaseline (androidx.compose.ui.text.TextLayoutResult.lastBaseline: kotlin.Float)"""
+ ...
+ @property
+ def layout_input(self) -> TextLayoutInput:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutResult.layoutInput (androidx.compose.ui.text.TextLayoutResult.layoutInput: androidx.compose.ui.text.TextLayoutInput)"""
+ ...
+ @property
+ def line_count(self) -> int:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutResult.lineCount (androidx.compose.ui.text.TextLayoutResult.lineCount: kotlin.Int)"""
+ ...
+ @property
+ def multi_paragraph(self) -> MultiParagraph:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutResult.multiParagraph (androidx.compose.ui.text.TextLayoutResult.multiParagraph: androidx.compose.ui.text.MultiParagraph)"""
+ ...
+ @property
+ def size(self) -> int:
+ """Kotlin property: androidx.compose.ui.text.TextLayoutResult.size (androidx.compose.ui.text.TextLayoutResult.size: androidx.compose.ui.unit.IntSize)"""
+ ...
+
+class TextLinkStyles:
+ """Kotlin: androidx.compose.ui.text.TextLinkStyles"""
+ def __init__(self, style: SpanStyle | None = ..., focusedStyle: SpanStyle | None = ..., hoveredStyle: SpanStyle | None = ..., pressedStyle: SpanStyle | None = ...) -> None:
+ """Kotlin constructor: androidx.compose.ui.text.TextLinkStyles (androidx.compose.ui.text.TextLinkStyles(style: androidx.compose.ui.text.SpanStyle?, focusedStyle: androidx.compose.ui.text.SpanStyle?, hoveredStyle: androidx.compose.ui.text.SpanStyle?, pressedStyle: androidx.compose.ui.text.SpanStyle?): androidx.compose.ui.text.TextLinkStyles)"""
+ ...
+ @property
+ def focused_style(self) -> SpanStyle | None:
+ """Kotlin property: androidx.compose.ui.text.TextLinkStyles.focusedStyle (androidx.compose.ui.text.TextLinkStyles.focusedStyle: androidx.compose.ui.text.SpanStyle?)"""
+ ...
+ @property
+ def hovered_style(self) -> SpanStyle | None:
+ """Kotlin property: androidx.compose.ui.text.TextLinkStyles.hoveredStyle (androidx.compose.ui.text.TextLinkStyles.hoveredStyle: androidx.compose.ui.text.SpanStyle?)"""
+ ...
+ @property
+ def pressed_style(self) -> SpanStyle | None:
+ """Kotlin property: androidx.compose.ui.text.TextLinkStyles.pressedStyle (androidx.compose.ui.text.TextLinkStyles.pressedStyle: androidx.compose.ui.text.SpanStyle?)"""
+ ...
+ @property
+ def style(self) -> SpanStyle | None:
+ """Kotlin property: androidx.compose.ui.text.TextLinkStyles.style (androidx.compose.ui.text.TextLinkStyles.style: androidx.compose.ui.text.SpanStyle?)"""
+ ...
+
+class TextMeasurer:
+ """Kotlin: androidx.compose.ui.text.TextMeasurer"""
+ def __init__(self, defaultFontFamilyResolver: _t.Any, defaultDensity: _t.Any, defaultLayoutDirection: pythonx.compose.ui.unit.LayoutDirection, cacheSize: int = ...) -> None:
+ """Kotlin constructor: androidx.compose.ui.text.TextMeasurer (androidx.compose.ui.text.TextMeasurer(defaultFontFamilyResolver: androidx.compose.ui.text.font.FontFamily.Resolver, defaultDensity: androidx.compose.ui.unit.Density, defaultLayoutDirection: androidx.compose.ui.unit.LayoutDirection, cacheSize: kotlin.Int): androidx.compose.ui.text.TextMeasurer)"""
+ ...
+
+class TtsAnnotation:
+ """Kotlin: androidx.compose.ui.text.TtsAnnotation"""
+
+class UrlAnnotation:
+ """Kotlin: androidx.compose.ui.text.UrlAnnotation"""
+ def __init__(self, url: str) -> None:
+ """Kotlin constructor: androidx.compose.ui.text.UrlAnnotation (androidx.compose.ui.text.UrlAnnotation(url: kotlin.String): androidx.compose.ui.text.UrlAnnotation)"""
+ ...
+ @property
+ def url(self) -> str:
+ """Kotlin property: androidx.compose.ui.text.UrlAnnotation.url (androidx.compose.ui.text.UrlAnnotation.url: kotlin.String)"""
+ ...
+
+class VerbatimTtsAnnotation(TtsAnnotation):
+ """Kotlin: androidx.compose.ui.text.VerbatimTtsAnnotation"""
+ def __init__(self, verbatim: str) -> None:
+ """Kotlin constructor: androidx.compose.ui.text.VerbatimTtsAnnotation (androidx.compose.ui.text.VerbatimTtsAnnotation(verbatim: kotlin.String): androidx.compose.ui.text.VerbatimTtsAnnotation)"""
+ ...
+ @property
+ def verbatim(self) -> str:
+ """Kotlin property: androidx.compose.ui.text.VerbatimTtsAnnotation.verbatim (androidx.compose.ui.text.VerbatimTtsAnnotation.verbatim: kotlin.String)"""
+ ...
+
+def AnnotatedString__String_ParagraphStyle(text: str, paragraph_style: ParagraphStyle) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.AnnotatedString(text: kotlin.String, paragraphStyle: androidx.compose.ui.text.ParagraphStyle): androidx.compose.ui.text.AnnotatedString"""
+ ...
+
+def AnnotatedString__String_SpanStyle_ParagraphStyle(text: str, span_style: SpanStyle, paragraph_style: ParagraphStyle | None = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.AnnotatedString(text: kotlin.String, spanStyle: androidx.compose.ui.text.SpanStyle, paragraphStyle: androidx.compose.ui.text.ParagraphStyle?): androidx.compose.ui.text.AnnotatedString"""
+ ...
+
+def Paragraph__ParagraphIntrinsics_Constraints_Int_TextOverflow(paragraph_intrinsics: ParagraphIntrinsics, constraints: int, max_lines: int = ..., overflow: _t.Any = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.Paragraph(paragraphIntrinsics: androidx.compose.ui.text.ParagraphIntrinsics, constraints: androidx.compose.ui.unit.Constraints, maxLines: kotlin.Int, overflow: androidx.compose.ui.text.style.TextOverflow): androidx.compose.ui.text.Paragraph"""
+ ...
+
+def Paragraph__ParagraphIntrinsics_Int_Boolean_Float(paragraph_intrinsics: ParagraphIntrinsics, max_lines: int = ..., ellipsis: bool = ..., *, width: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.Paragraph(paragraphIntrinsics: androidx.compose.ui.text.ParagraphIntrinsics, maxLines: kotlin.Int, ellipsis: kotlin.Boolean, width: kotlin.Float): androidx.compose.ui.text.Paragraph"""
+ ...
+
+def StringAnnotation(value: str) -> str:
+ """Kotlin: androidx.compose.ui.text.StringAnnotation(value: kotlin.String): androidx.compose.ui.text.StringAnnotation"""
+ ...
+
+def TextRange__Int(index: int) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.TextRange(index: kotlin.Int): androidx.compose.ui.text.TextRange"""
+ ...
+
+def TextRange__Int_Int(start: int, end: int) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.TextRange(start: kotlin.Int, end: kotlin.Int): androidx.compose.ui.text.TextRange"""
+ ...
+
+def build_annotated_string(builder: _t.Callable[[_t.Any], None]) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.buildAnnotatedString(builder: kotlin.Function1): androidx.compose.ui.text.AnnotatedString"""
+ ...
+
+def capitalize__AnnotatedString_LocaleList(receiver: _t.Any, /, locale_list: _t.Any = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.AnnotatedString.capitalize(localeList: androidx.compose.ui.text.intl.LocaleList): androidx.compose.ui.text.AnnotatedString"""
+ ...
+
+def capitalize__String_Locale(receiver: str, /, locale: _t.Any) -> str:
+ """Kotlin: kotlin.String.capitalize(locale: androidx.compose.ui.text.intl.Locale): kotlin.String"""
+ ...
+
+def capitalize__String_LocaleList(receiver: str, /, locale_list: _t.Any) -> str:
+ """Kotlin: kotlin.String.capitalize(localeList: androidx.compose.ui.text.intl.LocaleList): kotlin.String"""
+ ...
+
+def coerce_in(receiver: _t.Any, /, minimum_value: int, maximum_value: int) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.TextRange.coerceIn(minimumValue: kotlin.Int, maximumValue: kotlin.Int): androidx.compose.ui.text.TextRange"""
+ ...
+
+def decapitalize__AnnotatedString_LocaleList(receiver: _t.Any, /, locale_list: _t.Any = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.AnnotatedString.decapitalize(localeList: androidx.compose.ui.text.intl.LocaleList): androidx.compose.ui.text.AnnotatedString"""
+ ...
+
+def decapitalize__String_Locale(receiver: str, /, locale: _t.Any) -> str:
+ """Kotlin: kotlin.String.decapitalize(locale: androidx.compose.ui.text.intl.Locale): kotlin.String"""
+ ...
+
+def decapitalize__String_LocaleList(receiver: str, /, locale_list: _t.Any) -> str:
+ """Kotlin: kotlin.String.decapitalize(localeList: androidx.compose.ui.text.intl.LocaleList): kotlin.String"""
+ ...
+
+def draw_text__TextLayoutResult_Brush_Offset_Float_Shadow_TextDecoration_DrawStyle_BlendMode(receiver: _t.Any, /, text_layout_result: TextLayoutResult, brush: pythonx.compose.ui.graphics.Brush, top_left: int = ..., alpha: float = ..., shadow: pythonx.compose.ui.graphics.Shadow | None = ..., text_decoration: _t.Any | None = ..., draw_style: _t.Any | None = ..., blend_mode: _t.Any = ...) -> None:
+ """Kotlin: androidx.compose.ui.graphics.drawscope.DrawScope.drawText(textLayoutResult: androidx.compose.ui.text.TextLayoutResult, brush: androidx.compose.ui.graphics.Brush, topLeft: androidx.compose.ui.geometry.Offset, alpha: kotlin.Float, shadow: androidx.compose.ui.graphics.Shadow?, textDecoration: androidx.compose.ui.text.style.TextDecoration?, drawStyle: androidx.compose.ui.graphics.drawscope.DrawStyle?, blendMode: androidx.compose.ui.graphics.BlendMode): kotlin.Unit"""
+ ...
+
+def draw_text__TextLayoutResult_Color_Offset_Float_Shadow_TextDecoration_DrawStyle_BlendMode(receiver: _t.Any, /, text_layout_result: TextLayoutResult, color: _t.Any, top_left: int, alpha: float, shadow: pythonx.compose.ui.graphics.Shadow | None, text_decoration: _t.Any | None, draw_style: _t.Any | None, blend_mode: _t.Any) -> None:
+ """Kotlin: androidx.compose.ui.graphics.drawscope.DrawScope.drawText(textLayoutResult: androidx.compose.ui.text.TextLayoutResult, color: androidx.compose.ui.graphics.Color, topLeft: androidx.compose.ui.geometry.Offset, alpha: kotlin.Float, shadow: androidx.compose.ui.graphics.Shadow?, textDecoration: androidx.compose.ui.text.style.TextDecoration?, drawStyle: androidx.compose.ui.graphics.drawscope.DrawStyle?, blendMode: androidx.compose.ui.graphics.BlendMode): kotlin.Unit"""
+ ...
+
+def draw_text__TextMeasurer_String_Offset_TextStyle_TextOverflow_Boolean_Int_Size_BlendMode(receiver: _t.Any, /, text_measurer: TextMeasurer, text: str, top_left: int, style: _t.Any, overflow: _t.Any, soft_wrap: bool, max_lines: int, size: int, blend_mode: _t.Any) -> None:
+ """Kotlin: androidx.compose.ui.graphics.drawscope.DrawScope.drawText(textMeasurer: androidx.compose.ui.text.TextMeasurer, text: kotlin.String, topLeft: androidx.compose.ui.geometry.Offset, style: androidx.compose.ui.text.TextStyle, overflow: androidx.compose.ui.text.style.TextOverflow, softWrap: kotlin.Boolean, maxLines: kotlin.Int, size: androidx.compose.ui.geometry.Size, blendMode: androidx.compose.ui.graphics.BlendMode): kotlin.Unit"""
+ ...
+
+def lerp__ParagraphStyle_ParagraphStyle_Float(start: ParagraphStyle, stop: ParagraphStyle, fraction: float) -> ParagraphStyle:
+ """Kotlin: androidx.compose.ui.text.lerp(start: androidx.compose.ui.text.ParagraphStyle, stop: androidx.compose.ui.text.ParagraphStyle, fraction: kotlin.Float): androidx.compose.ui.text.ParagraphStyle"""
+ ...
+
+def lerp__PlatformParagraphStyle_PlatformParagraphStyle_Float(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.lerp(start: androidx.compose.ui.text.PlatformParagraphStyle, stop: androidx.compose.ui.text.PlatformParagraphStyle, fraction: kotlin.Float): androidx.compose.ui.text.PlatformParagraphStyle"""
+ ...
+
+def lerp__PlatformSpanStyle_PlatformSpanStyle_Float(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.lerp(start: androidx.compose.ui.text.PlatformSpanStyle, stop: androidx.compose.ui.text.PlatformSpanStyle, fraction: kotlin.Float): androidx.compose.ui.text.PlatformSpanStyle"""
+ ...
+
+def lerp__SpanStyle_SpanStyle_Float(start: SpanStyle, stop: SpanStyle, fraction: float) -> SpanStyle:
+ """Kotlin: androidx.compose.ui.text.lerp(start: androidx.compose.ui.text.SpanStyle, stop: androidx.compose.ui.text.SpanStyle, fraction: kotlin.Float): androidx.compose.ui.text.SpanStyle"""
+ ...
+
+def lerp__TextStyle_TextStyle_Float(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.lerp(start: androidx.compose.ui.text.TextStyle, stop: androidx.compose.ui.text.TextStyle, fraction: kotlin.Float): androidx.compose.ui.text.TextStyle"""
+ ...
+
+def remember_text_measurer(cache_size: int = ...) -> TextMeasurer:
+ """Kotlin: androidx.compose.ui.text.rememberTextMeasurer(cacheSize: kotlin.Int): androidx.compose.ui.text.TextMeasurer"""
+ ...
+
+def resolve_defaults(style: _t.Any, direction: pythonx.compose.ui.unit.LayoutDirection) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.resolveDefaults(style: androidx.compose.ui.text.TextStyle, direction: androidx.compose.ui.unit.LayoutDirection): androidx.compose.ui.text.TextStyle"""
+ ...
+
+def to_lower_case__AnnotatedString_LocaleList(receiver: _t.Any, /, locale_list: _t.Any = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.AnnotatedString.toLowerCase(localeList: androidx.compose.ui.text.intl.LocaleList): androidx.compose.ui.text.AnnotatedString"""
+ ...
+
+def to_lower_case__String_Locale(receiver: str, /, locale: _t.Any) -> str:
+ """Kotlin: kotlin.String.toLowerCase(locale: androidx.compose.ui.text.intl.Locale): kotlin.String"""
+ ...
+
+def to_lower_case__String_LocaleList(receiver: str, /, locale_list: _t.Any) -> str:
+ """Kotlin: kotlin.String.toLowerCase(localeList: androidx.compose.ui.text.intl.LocaleList): kotlin.String"""
+ ...
+
+def to_upper_case__AnnotatedString_LocaleList(receiver: _t.Any, /, locale_list: _t.Any = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.AnnotatedString.toUpperCase(localeList: androidx.compose.ui.text.intl.LocaleList): androidx.compose.ui.text.AnnotatedString"""
+ ...
+
+def to_upper_case__String_Locale(receiver: str, /, locale: _t.Any) -> str:
+ """Kotlin: kotlin.String.toUpperCase(locale: androidx.compose.ui.text.intl.Locale): kotlin.String"""
+ ...
+
+def to_upper_case__String_LocaleList(receiver: str, /, locale_list: _t.Any) -> str:
+ """Kotlin: kotlin.String.toUpperCase(localeList: androidx.compose.ui.text.intl.LocaleList): kotlin.String"""
+ ...
+
+def MultiParagraph__MultiParagraphIntrinsics_Constraints_Int_TextOverflow(intrinsics: MultiParagraphIntrinsics, constraints: int, max_lines: int = ..., overflow: _t.Any = ...) -> MultiParagraph:
+ """Kotlin: androidx.compose.ui.text.MultiParagraph(intrinsics: androidx.compose.ui.text.MultiParagraphIntrinsics, constraints: androidx.compose.ui.unit.Constraints, maxLines: kotlin.Int, overflow: androidx.compose.ui.text.style.TextOverflow): androidx.compose.ui.text.MultiParagraph"""
+ ...
+
+def MultiParagraph__MultiParagraphIntrinsics_Int_Boolean_Float(intrinsics: MultiParagraphIntrinsics, max_lines: int = ..., ellipsis: bool = ..., *, width: float) -> MultiParagraph:
+ """Kotlin: androidx.compose.ui.text.MultiParagraph(intrinsics: androidx.compose.ui.text.MultiParagraphIntrinsics, maxLines: kotlin.Int, ellipsis: kotlin.Boolean, width: kotlin.Float): androidx.compose.ui.text.MultiParagraph"""
+ ...
+
+def PlatformTextStyle__PlatformSpanStyle_PlatformParagraphStyle(span_style: _t.Any | None, paragraph_style: _t.Any | None) -> PlatformTextStyle:
+ """Kotlin: androidx.compose.ui.text.PlatformTextStyle(spanStyle: androidx.compose.ui.text.PlatformSpanStyle?, paragraphStyle: androidx.compose.ui.text.PlatformParagraphStyle?): androidx.compose.ui.text.PlatformTextStyle"""
+ ...
+
+def PlatformTextStyle__TextDecorationLineStyle(text_decoration_line_style: _t.Any | None) -> PlatformTextStyle:
+ """Kotlin: androidx.compose.ui.text.PlatformTextStyle(textDecorationLineStyle: androidx.compose.ui.text.TextDecorationLineStyle?): androidx.compose.ui.text.PlatformTextStyle"""
+ ...
+
+def SpanStyle__Brush_Float_TextUnit_FontWeight_FontStyle_FontSynthesis_FontFamily_String_TextUnit_BaselineShift_TextGeometricTransform_LocaleList_Color_TextDecoration_Shadow_PlatformSpanStyle_DrawStyle(brush: pythonx.compose.ui.graphics.Brush | None, alpha: float, font_size: _t.Any, font_weight: _t.Any | None, font_style: _t.Any | None, font_synthesis: _t.Any | None, font_family: _t.Any | None, font_feature_settings: str | None, letter_spacing: _t.Any, baseline_shift: _t.Any | None, text_geometric_transform: _t.Any | None, locale_list: _t.Any | None, background: _t.Any, text_decoration: _t.Any | None, shadow: pythonx.compose.ui.graphics.Shadow | None, platform_style: _t.Any | None, draw_style: _t.Any | None) -> SpanStyle:
+ """Kotlin: androidx.compose.ui.text.SpanStyle(brush: androidx.compose.ui.graphics.Brush?, alpha: kotlin.Float, fontSize: androidx.compose.ui.unit.TextUnit, fontWeight: androidx.compose.ui.text.font.FontWeight?, fontStyle: androidx.compose.ui.text.font.FontStyle?, fontSynthesis: androidx.compose.ui.text.font.FontSynthesis?, fontFamily: androidx.compose.ui.text.font.FontFamily?, fontFeatureSettings: kotlin.String?, letterSpacing: androidx.compose.ui.unit.TextUnit, baselineShift: androidx.compose.ui.text.style.BaselineShift?, textGeometricTransform: androidx.compose.ui.text.style.TextGeometricTransform?, localeList: androidx.compose.ui.text.intl.LocaleList?, background: androidx.compose.ui.graphics.Color, textDecoration: androidx.compose.ui.text.style.TextDecoration?, shadow: androidx.compose.ui.graphics.Shadow?, platformStyle: androidx.compose.ui.text.PlatformSpanStyle?, drawStyle: androidx.compose.ui.graphics.drawscope.DrawStyle?): androidx.compose.ui.text.SpanStyle"""
+ ...
+
+def SpanStyle__Color_TextUnit_FontWeight_FontStyle_FontSynthesis_FontFamily_String_TextUnit_BaselineShift_TextGeometricTransform_LocaleList_Color_TextDecoration_Shadow_PlatformSpanStyle_DrawStyle(color: _t.Any, font_size: _t.Any, font_weight: _t.Any | None, font_style: _t.Any | None, font_synthesis: _t.Any | None, font_family: _t.Any | None, font_feature_settings: str | None, letter_spacing: _t.Any, baseline_shift: _t.Any | None, text_geometric_transform: _t.Any | None, locale_list: _t.Any | None, background: _t.Any, text_decoration: _t.Any | None, shadow: pythonx.compose.ui.graphics.Shadow | None, platform_style: _t.Any | None, draw_style: _t.Any | None) -> SpanStyle:
+ """Kotlin: androidx.compose.ui.text.SpanStyle(color: androidx.compose.ui.graphics.Color, fontSize: androidx.compose.ui.unit.TextUnit, fontWeight: androidx.compose.ui.text.font.FontWeight?, fontStyle: androidx.compose.ui.text.font.FontStyle?, fontSynthesis: androidx.compose.ui.text.font.FontSynthesis?, fontFamily: androidx.compose.ui.text.font.FontFamily?, fontFeatureSettings: kotlin.String?, letterSpacing: androidx.compose.ui.unit.TextUnit, baselineShift: androidx.compose.ui.text.style.BaselineShift?, textGeometricTransform: androidx.compose.ui.text.style.TextGeometricTransform?, localeList: androidx.compose.ui.text.intl.LocaleList?, background: androidx.compose.ui.graphics.Color, textDecoration: androidx.compose.ui.text.style.TextDecoration?, shadow: androidx.compose.ui.graphics.Shadow?, platformStyle: androidx.compose.ui.text.PlatformSpanStyle?, drawStyle: androidx.compose.ui.graphics.drawscope.DrawStyle?): androidx.compose.ui.text.SpanStyle"""
+ ...
+
+@_t.overload
+def AnnotatedString(text: str, paragraph_style: ParagraphStyle) -> _t.Any: ...
+@_t.overload
+def AnnotatedString(text: str, span_style: SpanStyle, paragraph_style: ParagraphStyle | None = ...) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def Paragraph(paragraph_intrinsics: ParagraphIntrinsics, constraints: int, max_lines: int = ..., overflow: _t.Any = ...) -> _t.Any: ...
+@_t.overload
+def Paragraph(paragraph_intrinsics: ParagraphIntrinsics, max_lines: int = ..., ellipsis: bool = ..., *, width: float) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def TextRange(index: int) -> _t.Any: ...
+@_t.overload
+def TextRange(start: int, end: int) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def capitalize(receiver: _t.Any, /, locale_list: _t.Any = ...) -> _t.Any: ...
+@_t.overload
+def capitalize(receiver: str, /, locale: _t.Any) -> str: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def capitalize(receiver: str, /, locale_list: _t.Any) -> str: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def decapitalize(receiver: _t.Any, /, locale_list: _t.Any = ...) -> _t.Any: ...
+@_t.overload
+def decapitalize(receiver: str, /, locale: _t.Any) -> str: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def decapitalize(receiver: str, /, locale_list: _t.Any) -> str: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def draw_text(receiver: _t.Any, /, text_layout_result: TextLayoutResult, brush: pythonx.compose.ui.graphics.Brush, top_left: int = ..., alpha: float = ..., shadow: pythonx.compose.ui.graphics.Shadow | None = ..., text_decoration: _t.Any | None = ..., draw_style: _t.Any | None = ..., blend_mode: _t.Any = ...) -> None: ...
+@_t.overload
+def draw_text(receiver: _t.Any, /, text_layout_result: TextLayoutResult, color: _t.Any, top_left: int, alpha: float, shadow: pythonx.compose.ui.graphics.Shadow | None, text_decoration: _t.Any | None, draw_style: _t.Any | None, blend_mode: _t.Any) -> None: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def draw_text(receiver: _t.Any, /, text_measurer: TextMeasurer, text: str, top_left: int, style: _t.Any, overflow: _t.Any, soft_wrap: bool, max_lines: int, size: int, blend_mode: _t.Any) -> None: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def lerp(start: ParagraphStyle, stop: ParagraphStyle, fraction: float) -> ParagraphStyle: ...
+@_t.overload
+def lerp(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def lerp(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def lerp(start: SpanStyle, stop: SpanStyle, fraction: float) -> SpanStyle: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def lerp(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def to_lower_case(receiver: _t.Any, /, locale_list: _t.Any = ...) -> _t.Any: ...
+@_t.overload
+def to_lower_case(receiver: str, /, locale: _t.Any) -> str: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def to_lower_case(receiver: str, /, locale_list: _t.Any) -> str: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def to_upper_case(receiver: _t.Any, /, locale_list: _t.Any = ...) -> _t.Any: ...
+@_t.overload
+def to_upper_case(receiver: str, /, locale: _t.Any) -> str: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def to_upper_case(receiver: str, /, locale_list: _t.Any) -> str: ... # type: ignore[overload-cannot-match]
+
+class Bullet:
+ """Kotlin: androidx.compose.ui.text.Bullet"""
+ Default: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.Bullet.Default(): androidx.compose.ui.text.Bullet"""
+ DefaultIndentation: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.Bullet.DefaultIndentation(): androidx.compose.ui.unit.TextUnit"""
+ DefaultPadding: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.Bullet.DefaultPadding(): androidx.compose.ui.unit.TextUnit"""
+ DefaultSize: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.Bullet.DefaultSize(): androidx.compose.ui.unit.TextUnit"""
+
+class ComposeUiTextFlags:
+ """Kotlin: androidx.compose.ui.text.ComposeUiTextFlags"""
+ is_correct_shadow_lerp_with_nulls_enabled: _t.ClassVar[bool]
+ """Kotlin: androidx.compose.ui.text.ComposeUiTextFlags.isCorrectShadowLerpWithNullsEnabled(): kotlin.Boolean"""
+
+class FontRasterizationSettings:
+ """Kotlin: androidx.compose.ui.text.FontRasterizationSettings"""
+ PlatformDefault: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.FontRasterizationSettings.PlatformDefault(): androidx.compose.ui.text.FontRasterizationSettings"""
+
+class PlaceholderVerticalAlign:
+ """Kotlin: androidx.compose.ui.text.PlaceholderVerticalAlign"""
+ AboveBaseline: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.PlaceholderVerticalAlign.AboveBaseline(): androidx.compose.ui.text.PlaceholderVerticalAlign"""
+ Bottom: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.PlaceholderVerticalAlign.Bottom(): androidx.compose.ui.text.PlaceholderVerticalAlign"""
+ Center: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.PlaceholderVerticalAlign.Center(): androidx.compose.ui.text.PlaceholderVerticalAlign"""
+ TextBottom: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.PlaceholderVerticalAlign.TextBottom(): androidx.compose.ui.text.PlaceholderVerticalAlign"""
+ TextCenter: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.PlaceholderVerticalAlign.TextCenter(): androidx.compose.ui.text.PlaceholderVerticalAlign"""
+ TextTop: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.PlaceholderVerticalAlign.TextTop(): androidx.compose.ui.text.PlaceholderVerticalAlign"""
+ Top: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.PlaceholderVerticalAlign.Top(): androidx.compose.ui.text.PlaceholderVerticalAlign"""
+
+class PlatformParagraphStyle:
+ """Kotlin: androidx.compose.ui.text.PlatformParagraphStyle"""
+ Default: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.PlatformParagraphStyle.Default(): androidx.compose.ui.text.PlatformParagraphStyle"""
+
+class PlatformSpanStyle:
+ """Kotlin: androidx.compose.ui.text.PlatformSpanStyle"""
+ Default: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.PlatformSpanStyle.Default(): androidx.compose.ui.text.PlatformSpanStyle"""
+
+class TextDecorationLineStyle:
+ """Kotlin: androidx.compose.ui.text.TextDecorationLineStyle"""
+ Dashed: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.text.TextDecorationLineStyle.Dashed(): androidx.compose.ui.text.TextDecorationLineStyle"""
+ Dotted: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.text.TextDecorationLineStyle.Dotted(): androidx.compose.ui.text.TextDecorationLineStyle"""
+ Double: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.text.TextDecorationLineStyle.Double(): androidx.compose.ui.text.TextDecorationLineStyle"""
+ Solid: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.text.TextDecorationLineStyle.Solid(): androidx.compose.ui.text.TextDecorationLineStyle"""
+ Wavy: _t.ClassVar[int]
+ """Kotlin: androidx.compose.ui.text.TextDecorationLineStyle.Wavy(): androidx.compose.ui.text.TextDecorationLineStyle"""
+
+class TextGranularity:
+ """Kotlin: androidx.compose.ui.text.TextGranularity"""
+ Character: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.TextGranularity.Character(): androidx.compose.ui.text.TextGranularity"""
+ Word: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.TextGranularity.Word(): androidx.compose.ui.text.TextGranularity"""
+
+class TextInclusionStrategy:
+ """Kotlin: androidx.compose.ui.text.TextInclusionStrategy"""
+ AnyOverlap: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.TextInclusionStrategy.AnyOverlap(): androidx.compose.ui.text.TextInclusionStrategy"""
+ ContainsAll: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.TextInclusionStrategy.ContainsAll(): androidx.compose.ui.text.TextInclusionStrategy"""
+ ContainsCenter: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.TextInclusionStrategy.ContainsCenter(): androidx.compose.ui.text.TextInclusionStrategy"""
+
+class TextPainter:
+ """Kotlin: androidx.compose.ui.text.TextPainter"""
+ @staticmethod
+ def paint(canvas: _t.Any, text_layout_result: TextLayoutResult) -> None:
+ """Kotlin: androidx.compose.ui.text.TextPainter.paint(canvas: androidx.compose.ui.graphics.Canvas, textLayoutResult: androidx.compose.ui.text.TextLayoutResult): kotlin.Unit"""
+ ...
+
+class TextStyle:
+ """Kotlin: androidx.compose.ui.text.TextStyle"""
+ Default: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.text.TextStyle.Default(): androidx.compose.ui.text.TextStyle"""
diff --git a/pythonx/compose/ui/unit/__init__.py b/pythonx/compose/ui/unit/__init__.py
index 8251e6f..7ea5fb6 100644
--- a/pythonx/compose/ui/unit/__init__.py
+++ b/pythonx/compose/ui/unit/__init__.py
@@ -1,3 +1,19 @@
-from __future__ import annotations
+"""`pythonx/compose/ui/unit/__init__.py` -- unit declarations provided by the adaptation layer.
-from .dp import dp
+## What used to be here, and why it is gone
+
+A relative import `from .dp import dp`. `dp.py` was an empty placeholder file, now deleted; what it
+noted still holds: `Dp` parameters take raw numbers (`16` or `16.0`) directly, as in `padding(16)`,
+without an explicit `dp` wrapper.
+
+## Dynamic unit handling
+
+A raw number reaches a `Dp` parameter because `pythonx-map.toml` allows it and the re-export rule
+hands that allowlist to the binder (`pythonx/compose/_reexport.py`). An explicit `Dp` value is
+`python_multiplatform.binding.value_of('androidx.compose.ui.unit.Dp', 16)`; a short `dp()` spelling
+is not provided yet.
+"""
+
+from pythonx.compose._reexport import reexport
+
+__getattr__, __dir__ = reexport(__name__)
diff --git a/pythonx/compose/ui/unit/__init__.pyi b/pythonx/compose/ui/unit/__init__.pyi
new file mode 100644
index 0000000..bd81f8f
--- /dev/null
+++ b/pythonx/compose/ui/unit/__init__.pyi
@@ -0,0 +1,348 @@
+# GENERATED by pythonx/_build/gen_stubs.py from python-multiplatform's Kotlin-named stubs (artifact kotlin-stubs, workflow run 37103737430, commit a5028618, Compose 1.11.1). Do not edit.
+import typing as _t
+
+class DpRect:
+ """Kotlin: androidx.compose.ui.unit.DpRect"""
+ @_t.overload
+ def __init__(self, origin: int, size: _t.Any) -> None: ...
+ @_t.overload
+ def __init__(self, left: float, top: float, right: float, bottom: float) -> None: ... # type: ignore[overload-cannot-match]
+ @property
+ def bottom(self) -> float:
+ """Kotlin property: androidx.compose.ui.unit.DpRect.bottom (androidx.compose.ui.unit.DpRect.bottom: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def height(self) -> float:
+ """Kotlin property: androidx.compose.ui.unit.height (androidx.compose.ui.unit.DpRect.height: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def left(self) -> float:
+ """Kotlin property: androidx.compose.ui.unit.DpRect.left (androidx.compose.ui.unit.DpRect.left: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def right(self) -> float:
+ """Kotlin property: androidx.compose.ui.unit.DpRect.right (androidx.compose.ui.unit.DpRect.right: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def size(self) -> _t.Any:
+ """Kotlin property: androidx.compose.ui.unit.size (androidx.compose.ui.unit.DpRect.size: androidx.compose.ui.unit.DpSize)"""
+ ...
+ @property
+ def top(self) -> float:
+ """Kotlin property: androidx.compose.ui.unit.DpRect.top (androidx.compose.ui.unit.DpRect.top: androidx.compose.ui.unit.Dp)"""
+ ...
+ @property
+ def width(self) -> float:
+ """Kotlin property: androidx.compose.ui.unit.width (androidx.compose.ui.unit.DpRect.width: androidx.compose.ui.unit.Dp)"""
+ ...
+
+class FontScalingLinear:
+ """Kotlin: androidx.compose.ui.unit.FontScalingLinear"""
+ @property
+ def font_scale(self) -> float:
+ """Kotlin property: androidx.compose.ui.unit.FontScalingLinear.fontScale (androidx.compose.ui.unit.FontScalingLinear.fontScale: kotlin.Float)"""
+ ...
+
+class LayoutDirection:
+ """Kotlin: androidx.compose.ui.unit.LayoutDirection"""
+
+def Constraints(min_width: int = ..., max_width: int = ..., min_height: int = ..., max_height: int = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.Constraints(minWidth: kotlin.Int, maxWidth: kotlin.Int, minHeight: kotlin.Int, maxHeight: kotlin.Int): androidx.compose.ui.unit.Constraints"""
+ ...
+
+def Density(density: float, font_scale: float = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.Density(density: kotlin.Float, fontScale: kotlin.Float): androidx.compose.ui.unit.Density"""
+ ...
+
+def DpOffset(x: float, y: float) -> int:
+ """Kotlin: androidx.compose.ui.unit.DpOffset(x: androidx.compose.ui.unit.Dp, y: androidx.compose.ui.unit.Dp): androidx.compose.ui.unit.DpOffset"""
+ ...
+
+def DpSize(width: float, height: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.DpSize(width: androidx.compose.ui.unit.Dp, height: androidx.compose.ui.unit.Dp): androidx.compose.ui.unit.DpSize"""
+ ...
+
+def IntOffset(x: int, y: int) -> int:
+ """Kotlin: androidx.compose.ui.unit.IntOffset(x: kotlin.Int, y: kotlin.Int): androidx.compose.ui.unit.IntOffset"""
+ ...
+
+def IntRect__IntOffset_Int(center: int, radius: int) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.IntRect(center: androidx.compose.ui.unit.IntOffset, radius: kotlin.Int): androidx.compose.ui.unit.IntRect"""
+ ...
+
+def IntRect__IntOffset_IntOffset(top_left: int, bottom_right: int) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.IntRect(topLeft: androidx.compose.ui.unit.IntOffset, bottomRight: androidx.compose.ui.unit.IntOffset): androidx.compose.ui.unit.IntRect"""
+ ...
+
+def IntRect__IntOffset_IntSize(offset: int, size: _t.Any) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.IntRect(offset: androidx.compose.ui.unit.IntOffset, size: androidx.compose.ui.unit.IntSize): androidx.compose.ui.unit.IntRect"""
+ ...
+
+def IntSize(width: int, height: int) -> int:
+ """Kotlin: androidx.compose.ui.unit.IntSize(width: kotlin.Int, height: kotlin.Int): androidx.compose.ui.unit.IntSize"""
+ ...
+
+def TextUnit(value: float, type: int) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.TextUnit(value: kotlin.Float, type: androidx.compose.ui.unit.TextUnitType): androidx.compose.ui.unit.TextUnit"""
+ ...
+
+def Velocity(x: float, y: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.Velocity(x: kotlin.Float, y: kotlin.Float): androidx.compose.ui.unit.Velocity"""
+ ...
+
+def coerce_at_least(receiver: float, /, minimum_value: float) -> float:
+ """Kotlin: androidx.compose.ui.unit.Dp.coerceAtLeast(minimumValue: androidx.compose.ui.unit.Dp): androidx.compose.ui.unit.Dp"""
+ ...
+
+def coerce_at_most(receiver: float, /, maximum_value: float) -> float:
+ """Kotlin: androidx.compose.ui.unit.Dp.coerceAtMost(maximumValue: androidx.compose.ui.unit.Dp): androidx.compose.ui.unit.Dp"""
+ ...
+
+def coerce_in(receiver: float, /, minimum_value: float, maximum_value: float) -> float:
+ """Kotlin: androidx.compose.ui.unit.Dp.coerceIn(minimumValue: androidx.compose.ui.unit.Dp, maximumValue: androidx.compose.ui.unit.Dp): androidx.compose.ui.unit.Dp"""
+ ...
+
+def constrain_height(receiver: int, /, height: int) -> int:
+ """Kotlin: androidx.compose.ui.unit.Constraints.constrainHeight(height: kotlin.Int): kotlin.Int"""
+ ...
+
+def constrain_width(receiver: int, /, width: int) -> int:
+ """Kotlin: androidx.compose.ui.unit.Constraints.constrainWidth(width: kotlin.Int): kotlin.Int"""
+ ...
+
+def constrain__Constraints(receiver: int, /, other_constraints: int) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.Constraints.constrain(otherConstraints: androidx.compose.ui.unit.Constraints): androidx.compose.ui.unit.Constraints"""
+ ...
+
+def constrain__IntSize(receiver: int, /, size: _t.Any) -> int:
+ """Kotlin: androidx.compose.ui.unit.Constraints.constrain(size: androidx.compose.ui.unit.IntSize): androidx.compose.ui.unit.IntSize"""
+ ...
+
+def is_satisfied_by(receiver: int, /, size: _t.Any) -> bool:
+ """Kotlin: androidx.compose.ui.unit.Constraints.isSatisfiedBy(size: androidx.compose.ui.unit.IntSize): kotlin.Boolean"""
+ ...
+
+def lerp__DpOffset_DpOffset_Float(start: int, stop: int, fraction: float) -> int:
+ """Kotlin: androidx.compose.ui.unit.lerp(start: androidx.compose.ui.unit.DpOffset, stop: androidx.compose.ui.unit.DpOffset, fraction: kotlin.Float): androidx.compose.ui.unit.DpOffset"""
+ ...
+
+def lerp__DpSize_DpSize_Float(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.lerp(start: androidx.compose.ui.unit.DpSize, stop: androidx.compose.ui.unit.DpSize, fraction: kotlin.Float): androidx.compose.ui.unit.DpSize"""
+ ...
+
+def lerp__Dp_Dp_Float(start: float, stop: float, fraction: float) -> float:
+ """Kotlin: androidx.compose.ui.unit.lerp(start: androidx.compose.ui.unit.Dp, stop: androidx.compose.ui.unit.Dp, fraction: kotlin.Float): androidx.compose.ui.unit.Dp"""
+ ...
+
+def lerp__IntOffset_IntOffset_Float(start: int, stop: int, fraction: float) -> int:
+ """Kotlin: androidx.compose.ui.unit.lerp(start: androidx.compose.ui.unit.IntOffset, stop: androidx.compose.ui.unit.IntOffset, fraction: kotlin.Float): androidx.compose.ui.unit.IntOffset"""
+ ...
+
+def lerp__IntRect_IntRect_Float(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.lerp(start: androidx.compose.ui.unit.IntRect, stop: androidx.compose.ui.unit.IntRect, fraction: kotlin.Float): androidx.compose.ui.unit.IntRect"""
+ ...
+
+def lerp__TextUnit_TextUnit_Float(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.lerp(start: androidx.compose.ui.unit.TextUnit, stop: androidx.compose.ui.unit.TextUnit, fraction: kotlin.Float): androidx.compose.ui.unit.TextUnit"""
+ ...
+
+def max(a: float, b: float) -> float:
+ """Kotlin: androidx.compose.ui.unit.max(a: androidx.compose.ui.unit.Dp, b: androidx.compose.ui.unit.Dp): androidx.compose.ui.unit.Dp"""
+ ...
+
+def min(a: float, b: float) -> float:
+ """Kotlin: androidx.compose.ui.unit.min(a: androidx.compose.ui.unit.Dp, b: androidx.compose.ui.unit.Dp): androidx.compose.ui.unit.Dp"""
+ ...
+
+def minus__IntOffset(receiver: int, /, offset: int) -> int:
+ """Kotlin: androidx.compose.ui.geometry.Offset.minus(offset: androidx.compose.ui.unit.IntOffset): androidx.compose.ui.geometry.Offset"""
+ ...
+
+def minus__Offset(receiver: int, /, offset: int) -> int:
+ """Kotlin: androidx.compose.ui.unit.IntOffset.minus(offset: androidx.compose.ui.geometry.Offset): androidx.compose.ui.geometry.Offset"""
+ ...
+
+def offset(receiver: int, /, horizontal: int = ..., vertical: int = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.Constraints.offset(horizontal: kotlin.Int, vertical: kotlin.Int): androidx.compose.ui.unit.Constraints"""
+ ...
+
+def plus__IntOffset(receiver: int, /, offset: int) -> int:
+ """Kotlin: androidx.compose.ui.geometry.Offset.plus(offset: androidx.compose.ui.unit.IntOffset): androidx.compose.ui.geometry.Offset"""
+ ...
+
+def plus__Offset(receiver: int, /, offset: int) -> int:
+ """Kotlin: androidx.compose.ui.unit.IntOffset.plus(offset: androidx.compose.ui.geometry.Offset): androidx.compose.ui.geometry.Offset"""
+ ...
+
+def round(receiver: int, /) -> int:
+ """Kotlin: androidx.compose.ui.geometry.Offset.round(): androidx.compose.ui.unit.IntOffset"""
+ ...
+
+def round_to_int_rect(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.geometry.Rect.roundToIntRect(): androidx.compose.ui.unit.IntRect"""
+ ...
+
+def round_to_int_size(receiver: int, /) -> int:
+ """Kotlin: androidx.compose.ui.geometry.Size.roundToIntSize(): androidx.compose.ui.unit.IntSize"""
+ ...
+
+def take_or_else__Dp(receiver: float, /, block: _t.Callable[[], _t.Any]) -> float:
+ """Kotlin: androidx.compose.ui.unit.Dp.takeOrElse(block: kotlin.Function0): androidx.compose.ui.unit.Dp"""
+ ...
+
+def take_or_else__DpOffset(receiver: int, /, block: _t.Callable[[], _t.Any]) -> int:
+ """Kotlin: androidx.compose.ui.unit.DpOffset.takeOrElse(block: kotlin.Function0): androidx.compose.ui.unit.DpOffset"""
+ ...
+
+def take_or_else__DpSize(receiver: _t.Any, /, block: _t.Callable[[], _t.Any]) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.DpSize.takeOrElse(block: kotlin.Function0): androidx.compose.ui.unit.DpSize"""
+ ...
+
+def take_or_else__TextUnit(receiver: _t.Any, /, block: _t.Callable[[], _t.Any]) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.TextUnit.takeOrElse(block: kotlin.Function0): androidx.compose.ui.unit.TextUnit"""
+ ...
+
+def times__Double_Dp(receiver: float, /, other: float) -> float:
+ """Kotlin: kotlin.Double.times(other: androidx.compose.ui.unit.Dp): androidx.compose.ui.unit.Dp"""
+ ...
+
+def times__Double_TextUnit(receiver: float, /, other: _t.Any) -> _t.Any:
+ """Kotlin: kotlin.Double.times(other: androidx.compose.ui.unit.TextUnit): androidx.compose.ui.unit.TextUnit"""
+ ...
+
+def times__Float_Dp(receiver: float, /, other: float) -> float:
+ """Kotlin: kotlin.Float.times(other: androidx.compose.ui.unit.Dp): androidx.compose.ui.unit.Dp"""
+ ...
+
+def times__Float_DpSize(receiver: float, /, size: _t.Any) -> _t.Any:
+ """Kotlin: kotlin.Float.times(size: androidx.compose.ui.unit.DpSize): androidx.compose.ui.unit.DpSize"""
+ ...
+
+def times__Float_TextUnit(receiver: float, /, other: _t.Any) -> _t.Any:
+ """Kotlin: kotlin.Float.times(other: androidx.compose.ui.unit.TextUnit): androidx.compose.ui.unit.TextUnit"""
+ ...
+
+def times__Int_Dp(receiver: int, /, other: float) -> float:
+ """Kotlin: kotlin.Int.times(other: androidx.compose.ui.unit.Dp): androidx.compose.ui.unit.Dp"""
+ ...
+
+def times__Int_DpSize(receiver: int, /, size: _t.Any) -> _t.Any:
+ """Kotlin: kotlin.Int.times(size: androidx.compose.ui.unit.DpSize): androidx.compose.ui.unit.DpSize"""
+ ...
+
+def times__Int_IntSize(receiver: int, /, size: _t.Any) -> int:
+ """Kotlin: kotlin.Int.times(size: androidx.compose.ui.unit.IntSize): androidx.compose.ui.unit.IntSize"""
+ ...
+
+def times__Int_TextUnit(receiver: int, /, other: _t.Any) -> _t.Any:
+ """Kotlin: kotlin.Int.times(other: androidx.compose.ui.unit.TextUnit): androidx.compose.ui.unit.TextUnit"""
+ ...
+
+def to_int_rect(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.IntSize.toIntRect(): androidx.compose.ui.unit.IntRect"""
+ ...
+
+def to_int_size(receiver: int, /) -> int:
+ """Kotlin: androidx.compose.ui.geometry.Size.toIntSize(): androidx.compose.ui.unit.IntSize"""
+ ...
+
+def to_offset(receiver: int, /) -> int:
+ """Kotlin: androidx.compose.ui.unit.IntOffset.toOffset(): androidx.compose.ui.geometry.Offset"""
+ ...
+
+def to_rect(receiver: _t.Any, /) -> _t.Any:
+ """Kotlin: androidx.compose.ui.unit.IntRect.toRect(): androidx.compose.ui.geometry.Rect"""
+ ...
+
+def to_size(receiver: _t.Any, /) -> int:
+ """Kotlin: androidx.compose.ui.unit.IntSize.toSize(): androidx.compose.ui.geometry.Size"""
+ ...
+
+def DpRect__DpOffset_DpSize(origin: int, size: _t.Any) -> DpRect:
+ """Kotlin: androidx.compose.ui.unit.DpRect(origin: androidx.compose.ui.unit.DpOffset, size: androidx.compose.ui.unit.DpSize): androidx.compose.ui.unit.DpRect"""
+ ...
+
+def DpRect__Dp_Dp_Dp_Dp(left: float, top: float, right: float, bottom: float) -> DpRect:
+ """Kotlin: androidx.compose.ui.unit.DpRect(left: androidx.compose.ui.unit.Dp, top: androidx.compose.ui.unit.Dp, right: androidx.compose.ui.unit.Dp, bottom: androidx.compose.ui.unit.Dp): androidx.compose.ui.unit.DpRect"""
+ ...
+
+@_t.overload
+def IntRect(center: int, radius: int) -> _t.Any: ...
+@_t.overload
+def IntRect(top_left: int, bottom_right: int) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def IntRect(offset: int, size: _t.Any) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def constrain(receiver: int, /, other_constraints: int) -> _t.Any: ...
+@_t.overload
+def constrain(receiver: int, /, size: _t.Any) -> int: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def lerp(start: int, stop: int, fraction: float) -> int: ...
+@_t.overload
+def lerp(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def lerp(start: float, stop: float, fraction: float) -> float: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def lerp(start: int, stop: int, fraction: float) -> int: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def lerp(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def lerp(start: _t.Any, stop: _t.Any, fraction: float) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def minus(receiver: int, /, offset: int) -> int: ...
+@_t.overload
+def minus(receiver: int, /, offset: int) -> int: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def plus(receiver: int, /, offset: int) -> int: ...
+@_t.overload
+def plus(receiver: int, /, offset: int) -> int: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def take_or_else(receiver: float, /, block: _t.Callable[[], _t.Any]) -> float: ...
+@_t.overload
+def take_or_else(receiver: int, /, block: _t.Callable[[], _t.Any]) -> int: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def take_or_else(receiver: _t.Any, /, block: _t.Callable[[], _t.Any]) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def take_or_else(receiver: _t.Any, /, block: _t.Callable[[], _t.Any]) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+@_t.overload
+def times(receiver: float, /, other: float) -> float: ...
+@_t.overload
+def times(receiver: float, /, other: _t.Any) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def times(receiver: float, /, other: float) -> float: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def times(receiver: float, /, size: _t.Any) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def times(receiver: float, /, other: _t.Any) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def times(receiver: int, /, other: float) -> float: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def times(receiver: int, /, size: _t.Any) -> _t.Any: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def times(receiver: int, /, size: _t.Any) -> int: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def times(receiver: int, /, other: _t.Any) -> _t.Any: ... # type: ignore[overload-cannot-match]
+
+class Dp:
+ """Kotlin: androidx.compose.ui.unit.Dp"""
+ Hairline: _t.ClassVar[float]
+ """Kotlin: androidx.compose.ui.unit.Dp.Hairline(): androidx.compose.ui.unit.Dp"""
+ Infinity: _t.ClassVar[float]
+ """Kotlin: androidx.compose.ui.unit.Dp.Infinity(): androidx.compose.ui.unit.Dp"""
+ Unspecified: _t.ClassVar[float]
+ """Kotlin: androidx.compose.ui.unit.Dp.Unspecified(): androidx.compose.ui.unit.Dp"""
+
+class TextUnitType:
+ """Kotlin: androidx.compose.ui.unit.TextUnitType"""
+ Em: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.unit.TextUnitType.Em(): androidx.compose.ui.unit.TextUnitType"""
+ Sp: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.unit.TextUnitType.Sp(): androidx.compose.ui.unit.TextUnitType"""
+ Unspecified: _t.ClassVar[_t.Any]
+ """Kotlin: androidx.compose.ui.unit.TextUnitType.Unspecified(): androidx.compose.ui.unit.TextUnitType"""
diff --git a/pythonx/compose/ui/unit/dp.py b/pythonx/compose/ui/unit/dp.py
deleted file mode 100644
index e69de29..0000000
diff --git a/pythonx/compose/wrapper/__init__.py b/pythonx/compose/wrapper/__init__.py
deleted file mode 100644
index 83edc67..0000000
--- a/pythonx/compose/wrapper/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-class KotlinWrapper:
- def __new__(cls, kotlin_object):
- kotlin_object.__class__ = cls
- return kotlin_object
diff --git a/test/.gitignore b/test/.gitignore
deleted file mode 100644
index 9be4b76..0000000
--- a/test/.gitignore
+++ /dev/null
@@ -1,32 +0,0 @@
-# Gradle files
-.gradle/
-build/
-kotlin-js-store/
-
-# Local configuration file (sdk path, etc)
-local.properties
-
-# Log/OS Files
-*.log
-.DS_Store
-
-# Android Studio generated files and folders
-captures/
-.externalNativeBuild/
-.cxx/
-*.apk
-output.json
-
-# IntelliJ
-*.iml
-.idea/
-
-# Keystore files
-*.jks
-*.keystore
-
-# Google Services (e.g. APIs or Firebase)
-google-services.json
-
-# Android Profiling
-*.hprof
diff --git a/test/android/build.gradle.kts b/test/android/build.gradle.kts
deleted file mode 100644
index 31670aa..0000000
--- a/test/android/build.gradle.kts
+++ /dev/null
@@ -1,72 +0,0 @@
-plugins {
- alias(libs.plugins.android.application)
- alias(libs.plugins.kotlin.android)
- alias(libs.plugins.jetpack.compose)
-
- alias(libs.plugins.chaquo.python)
-}
-
-chaquopy {
- defaultConfig {
- version = "3.11"
- }
- sourceSets {
- getByName("main") {
- srcDir("src/main/python")
- }
- }
-}
-
-android {
- namespace = "io.github.thisisthepy.pycomposeui.test.android"
- compileSdk = 34
- defaultConfig {
- applicationId = "io.github.thisisthepy.pycomposeui.test.android"
- minSdk = 24
- targetSdk = 34
- versionCode = 1
- versionName = "1.0"
- ndk {
- abiFilters += listOf("arm64-v8a", "armeabi-v7a", "x86_64", "x86")
- }
- }
- buildFeatures {
- compose = true
- }
- composeOptions {
- kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
- }
- packaging {
- resources {
- excludes += "/META-INF/{AL2.0,LGPL2.1}"
- }
- }
- buildTypes {
- getByName("release") {
- isMinifyEnabled = false
- }
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
- }
- kotlinOptions {
- jvmTarget = JavaVersion.VERSION_1_8.toString()
- }
- sourceSets {
- getByName("main") {
- kotlin.srcDirs("src/main/kotlin")
- }
- }
-}
-
-dependencies {
- //implementation(projects.pythonMultiplatform)
- implementation(projects.pycomposeui)
- implementation(projects.common)
- implementation(compose.ui)
- implementation(compose.material3)
- implementation(libs.androidx.activity.compose)
- implementation(libs.compose.ui.tooling.preview)
- debugImplementation(libs.compose.ui.tooling)
-}
\ No newline at end of file
diff --git a/test/android/src/main/AndroidManifest.xml b/test/android/src/main/AndroidManifest.xml
deleted file mode 100644
index e640ca4..0000000
--- a/test/android/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/test/android/src/main/kotlin/io/github/thisisthepy/pycomposeui/test/android/MainActivity.kt b/test/android/src/main/kotlin/io/github/thisisthepy/pycomposeui/test/android/MainActivity.kt
deleted file mode 100644
index 5a2b9c4..0000000
--- a/test/android/src/main/kotlin/io/github/thisisthepy/pycomposeui/test/android/MainActivity.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.android
-
-import android.os.Bundle
-import androidx.activity.ComponentActivity
-import androidx.activity.compose.setContent
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.currentComposer
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.tooling.preview.Preview
-import io.github.thisisthepy.pycomposeui.PythonAppView
-import io.github.thisisthepy.pycomposeui.PythonLauncher
-import io.github.thisisthepy.pycomposeui.moduleNamePreset
-import io.github.thisisthepy.pycomposeui.test.common.App
-import io.github.thisisthepy.pycomposeui.test.common.AppTheme
-
-class MainActivity : ComponentActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContent {
- AppTheme {
- println(currentComposer)
- PythonLauncher {
- try {
- moduleNamePreset = "pycomposeui.main"
- } catch (ignored: IllegalStateException) {}
-
- PythonAppView(Modifier.fillMaxSize())
- }
- }
- }
- }
-}
-
-@Preview
-@Composable
-fun DefaultPreview() {
- App()
-}
diff --git a/test/android/src/main/res/values/styles.xml b/test/android/src/main/res/values/styles.xml
deleted file mode 100644
index 6b4fa3d..0000000
--- a/test/android/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/test/build.gradle.kts b/test/build.gradle.kts
deleted file mode 100644
index 26693ff..0000000
--- a/test/build.gradle.kts
+++ /dev/null
@@ -1,11 +0,0 @@
-plugins {
- alias(libs.plugins.android.application).apply(false)
- alias(libs.plugins.android.library).apply(false)
- alias(libs.plugins.kotlin.jvm).apply(false)
- alias(libs.plugins.kotlin.android).apply(false)
- alias(libs.plugins.kotlin.multiplatform).apply(false)
- alias(libs.plugins.jetpack.compose).apply(false)
-
- alias(libs.plugins.chaquo.python).apply(false)
- alias(libs.plugins.moko.resources).apply(false)
-}
diff --git a/test/common/build.gradle.kts b/test/common/build.gradle.kts
deleted file mode 100644
index 8f7ebd5..0000000
--- a/test/common/build.gradle.kts
+++ /dev/null
@@ -1,99 +0,0 @@
-plugins {
- alias(libs.plugins.kotlin.multiplatform)
- alias(libs.plugins.android.library)
- alias(libs.plugins.jetpack.compose)
- //alias(libs.plugins.kotlin.cocoapods)
-}
-
-@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class)
-kotlin {
- targetHierarchy.default()
-
- androidTarget {
- compilations.all {
- kotlinOptions {
- jvmTarget = JavaVersion.VERSION_1_8.toString()
- }
- }
- }
-
- jvm("desktop") {
- compilations.all {
- kotlinOptions.jvmTarget = JavaVersion.VERSION_17.toString()
- }
- }
-
- js(IR) {
- browser()
- }
-
- ios()
- listOf(
- iosX64(),
- iosArm64(),
- iosSimulatorArm64()
- ).forEach {
- it.binaries.framework {
- baseName = "common"
- }
- }
-
- sourceSets {
- val commonMain by getting {
- dependencies {
- api(compose.runtime)
- api(compose.ui)
- api(compose.foundation)
- api(compose.materialIconsExtended)
- api(compose.material3)
- implementation(libs.ktor.core)
- implementation(libs.koin.core)
- }
- }
- val commonTest by getting {
- dependencies {
- implementation(libs.kotlin.test)
- }
- }
- val androidMain by getting {
- dependencies {
- api(libs.androidx.appcompat)
- api(libs.androidx.core)
- implementation(libs.ktor.jvm)
- }
- }
- val desktopMain by getting {
- dependencies {
- api(compose.preview)
- implementation(libs.ktor.jvm)
- }
- }
- val desktopTest by getting
- val jsMain by getting {
- dependencies {
- api(compose.html.core)
- implementation(libs.ktor.js)
- implementation(libs.ktor.jsonjs)
- }
- }
- val iosX64Main by getting
- val iosArm64Main by getting
- val iosSimulatorArm64Main by getting
- val iosMain by getting {
- dependencies {
- implementation(libs.ktor.ios)
- }
- iosX64Main.dependsOn(this)
- iosArm64Main.dependsOn(this)
- iosSimulatorArm64Main.dependsOn(this)
- }
- }
-}
-
-android {
- namespace = "io.github.thisisthepy.pycomposeui.test"
- compileSdk = 34
- defaultConfig {
- minSdk = 24
- }
-}
diff --git a/test/common/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.android.kt b/test/common/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.android.kt
deleted file mode 100644
index 45b75b7..0000000
--- a/test/common/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.android.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-class AndroidPlatform : Platform {
- override val name: String = "Android ${android.os.Build.VERSION.SDK_INT}"
-}
-
-actual fun getPlatform(): Platform = AndroidPlatform()
\ No newline at end of file
diff --git a/test/common/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.android.kt b/test/common/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.android.kt
deleted file mode 100644
index f06eb7c..0000000
--- a/test/common/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.android.kt
+++ /dev/null
@@ -1,55 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import android.app.Activity
-import android.os.Build
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Surface
-import androidx.compose.material3.dynamicDarkColorScheme
-import androidx.compose.material3.dynamicLightColorScheme
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.SideEffect
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.toArgb
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.platform.LocalView
-import androidx.core.view.WindowCompat
-
-
-@Composable
-actual fun AppTheme(
- darkTheme: Boolean,
- dynamicColor: Boolean,
- content: @Composable () -> Unit
-) {
- val colorScheme = when {
- dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
- val context = LocalContext.current
- if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
- }
-
- darkTheme -> colorDark
- else -> colorLight
- }
-
- val view = LocalView.current
- if (!view.isInEditMode) {
- SideEffect {
- val activity = view.context as Activity
- activity.window.statusBarColor = colorScheme.primary.toArgb()
- WindowCompat.getInsetsController(activity.window, view).isAppearanceLightStatusBars = darkTheme
- }
- }
-
- MaterialTheme(
- colorScheme = colorScheme,
- typography = typography,
- shapes = shapes
- ) {
- Surface(
- modifier = Modifier.fillMaxSize(),
- color = colorScheme.background,
- content = content
- )
- }
-}
diff --git a/test/common/src/androidUnitTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.android.kt b/test/common/src/androidUnitTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.android.kt
deleted file mode 100644
index 9c8c211..0000000
--- a/test/common/src/androidUnitTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.android.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import org.junit.Assert.assertTrue
-import org.junit.Test
-
-class AndroidGreetingTest {
-
- @Test
- fun testExample() {
- assertTrue("Check Android is mentioned", Greeting().greet().contains("Android"))
- }
-}
diff --git a/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/App.kt b/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/App.kt
deleted file mode 100644
index c6b1cc0..0000000
--- a/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/App.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.runtime.Composable
-import androidx.compose.material3.Text
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-
-@Composable
-fun App() {
- AppTheme {
- Box(
- Modifier.fillMaxSize(),
- contentAlignment = Alignment.Center
- ) {
- Text(Greeting().greet())
- }
- }
-}
diff --git a/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Greeting.kt b/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Greeting.kt
deleted file mode 100644
index 36dd2ff..0000000
--- a/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Greeting.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-class Greeting {
- private val platform: Platform = getPlatform()
-
- fun greet(): String {
- return "Hello, ${platform.name}!"
- }
-}
\ No newline at end of file
diff --git a/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.kt b/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.kt
deleted file mode 100644
index 2646c26..0000000
--- a/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-interface Platform {
- val name: String
-}
-
-expect fun getPlatform(): Platform
\ No newline at end of file
diff --git a/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.kt b/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.kt
deleted file mode 100644
index f34780a..0000000
--- a/test/common/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import androidx.compose.foundation.isSystemInDarkTheme
-import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.material3.Shapes
-import androidx.compose.material3.Typography
-import androidx.compose.material3.darkColorScheme
-import androidx.compose.material3.lightColorScheme
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.FontFamily
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.sp
-
-
-val colorDark = darkColorScheme(
- primary = Color(0xFFBB86FC),
- secondary = Color(0xFF03DAC5),
- tertiary = Color(0xFF3700B3),
- background = Color(0xffffffff)
-)
-
-val colorLight = lightColorScheme(
- primary = Color(0xFF6200EE),
- secondary = Color(0xFF03DAC5),
- tertiary = Color(0xFF3700B3),
- background = Color(0xffffc778)
-)
-
-val typography = Typography(
- bodyMedium = TextStyle(
- fontFamily = FontFamily.Default,
- fontWeight = FontWeight.Normal,
- fontSize = 16.sp
- )
-)
-
-val shapes = Shapes(
- small = RoundedCornerShape(4.dp),
- medium = RoundedCornerShape(4.dp),
- large = RoundedCornerShape(0.dp)
-)
-
-@Composable
-expect fun AppTheme(
- darkTheme: Boolean = isSystemInDarkTheme(),
- dynamicColor: Boolean = true,
- content: @Composable () -> Unit
-)
diff --git a/test/common/src/commonTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.kt b/test/common/src/commonTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.kt
deleted file mode 100644
index e5cb8b0..0000000
--- a/test/common/src/commonTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import kotlin.test.Test
-import kotlin.test.assertTrue
-
-class CommonGreetingTest {
-
- @Test
- fun testExample() {
- assertTrue(Greeting().greet().contains("Hello"), "Check 'Hello' is mentioned")
- }
-}
\ No newline at end of file
diff --git a/test/common/src/desktopMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.desktop.kt b/test/common/src/desktopMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.desktop.kt
deleted file mode 100644
index e905fd8..0000000
--- a/test/common/src/desktopMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.desktop.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import java.util.*
-
-
-class DesktopPlatform : Platform {
- private val os = System.getProperty("os.name").lowercase(Locale.getDefault())
- private val version = System.getProperty("java.version")
- override val name: String = "JVM $version Desktop on ${getSystem()}"
-
- private fun getSystem(): String = when {
- os.contains("win") -> "Windows"
- os.contains("mac") -> "Mac"
- (os.contains("nix") || os.contains("nux") || os.contains("aix")) -> "Unix"
- os.contains("linux") -> "Linux"
- os.contains("sunos") -> "Solaris"
- else -> "Unknown"
- }
-}
-
-actual fun getPlatform(): Platform = DesktopPlatform()
\ No newline at end of file
diff --git a/test/common/src/desktopMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.desktop.kt b/test/common/src/desktopMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.desktop.kt
deleted file mode 100644
index 10a04e1..0000000
--- a/test/common/src/desktopMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.desktop.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Surface
-import androidx.compose.material3.darkColorScheme
-import androidx.compose.material3.lightColorScheme
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-
-
-@Composable
-actual fun AppTheme(
- darkTheme: Boolean,
- dynamicColor: Boolean,
- content: @Composable () -> Unit
-) {
- val colorScheme = if (darkTheme) darkColorScheme() else lightColorScheme()
- MaterialTheme(
- colorScheme = colorScheme,
- typography = typography,
- shapes = shapes
- ) {
- Surface(
- modifier = Modifier.fillMaxSize(),
- color = colorScheme.background,
- content = content
- )
- }
-}
diff --git a/test/common/src/desktopTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.desktop.kt b/test/common/src/desktopTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.desktop.kt
deleted file mode 100644
index 09123aa..0000000
--- a/test/common/src/desktopTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.desktop.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import kotlin.test.Test
-import kotlin.test.assertTrue
-
-class DesktopGreetingTest {
-
- @Test
- fun testExample() {
- assertTrue(Greeting().greet().contains("Desktop"), "Check desktop is mentioned")
- }
-}
diff --git a/test/common/src/iosMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.ios.kt b/test/common/src/iosMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.ios.kt
deleted file mode 100644
index a95d810..0000000
--- a/test/common/src/iosMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.ios.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import platform.UIKit.UIDevice
-
-class IOSPlatform: Platform {
- override val name: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
-}
-
-actual fun getPlatform(): Platform = IOSPlatform()
\ No newline at end of file
diff --git a/test/common/src/iosMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.ios.kt b/test/common/src/iosMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.ios.kt
deleted file mode 100644
index 10a04e1..0000000
--- a/test/common/src/iosMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.ios.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Surface
-import androidx.compose.material3.darkColorScheme
-import androidx.compose.material3.lightColorScheme
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-
-
-@Composable
-actual fun AppTheme(
- darkTheme: Boolean,
- dynamicColor: Boolean,
- content: @Composable () -> Unit
-) {
- val colorScheme = if (darkTheme) darkColorScheme() else lightColorScheme()
- MaterialTheme(
- colorScheme = colorScheme,
- typography = typography,
- shapes = shapes
- ) {
- Surface(
- modifier = Modifier.fillMaxSize(),
- color = colorScheme.background,
- content = content
- )
- }
-}
diff --git a/test/common/src/iosMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/ViewController.kt b/test/common/src/iosMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/ViewController.kt
deleted file mode 100644
index 9cc0673..0000000
--- a/test/common/src/iosMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/ViewController.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import androidx.compose.ui.window.ComposeUIViewController
-import platform.UIKit.UIViewController
-
-
-fun MainViewController(): UIViewController = ComposeUIViewController {
- App()
-}
diff --git a/test/common/src/iosTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.ios.kt b/test/common/src/iosTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.ios.kt
deleted file mode 100644
index 2ee68af..0000000
--- a/test/common/src/iosTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.ios.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import kotlin.test.Test
-import kotlin.test.assertTrue
-
-class IosGreetingTest {
-
- @Test
- fun testExample() {
- assertTrue(Greeting().greet().contains("iOS"), "Check iOS is mentioned")
- }
-}
diff --git a/test/common/src/jsMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.js.kt b/test/common/src/jsMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.js.kt
deleted file mode 100644
index f2c9789..0000000
--- a/test/common/src/jsMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Platform.js.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-
-class JsPlatform: Platform {
- override val name: String = "Web/JS"
-}
-
-actual fun getPlatform(): Platform = JsPlatform()
\ No newline at end of file
diff --git a/test/common/src/jsMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.js.kt b/test/common/src/jsMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.js.kt
deleted file mode 100644
index 10a04e1..0000000
--- a/test/common/src/jsMain/kotlin/io/github/thisisthepy/pycomposeui/test/common/Theme.js.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Surface
-import androidx.compose.material3.darkColorScheme
-import androidx.compose.material3.lightColorScheme
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-
-
-@Composable
-actual fun AppTheme(
- darkTheme: Boolean,
- dynamicColor: Boolean,
- content: @Composable () -> Unit
-) {
- val colorScheme = if (darkTheme) darkColorScheme() else lightColorScheme()
- MaterialTheme(
- colorScheme = colorScheme,
- typography = typography,
- shapes = shapes
- ) {
- Surface(
- modifier = Modifier.fillMaxSize(),
- color = colorScheme.background,
- content = content
- )
- }
-}
diff --git a/test/common/src/jsTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.js.kt b/test/common/src/jsTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.js.kt
deleted file mode 100644
index 9d0fb1f..0000000
--- a/test/common/src/jsTest/kotlin/io/github/thisisthepy/pycomposeui/test/common/Test.js.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package io.github.thisisthepy.pycomposeui.test.common
-
-import kotlin.test.Test
-import kotlin.test.assertTrue
-
-class JsGreetingTest {
-
- @Test
- fun testExample() {
- assertTrue(Greeting().greet().contains("Web/JS"), "Check JS is mentioned")
- }
-}
diff --git a/test/desktop/build.gradle.kts b/test/desktop/build.gradle.kts
deleted file mode 100644
index 0719aed..0000000
--- a/test/desktop/build.gradle.kts
+++ /dev/null
@@ -1,57 +0,0 @@
-import org.jetbrains.compose.desktop.application.dsl.TargetFormat
-
-plugins {
- alias(libs.plugins.kotlin.multiplatform)
- alias(libs.plugins.jetpack.compose)
-}
-
-group = "io.github.thisisthepy.pycomposeui.test"
-version = "1.0-SNAPSHOT"
-
-kotlin {
- jvm {
- compilations.all {
- kotlinOptions.jvmTarget = JavaVersion.VERSION_17.toString()
- }
- withJava()
- }
- val osName = System.getProperty("os.name")
- val targetOs = when {
- osName == "Mac OS X" -> "macos"
- osName.startsWith("Win") -> "windows"
- osName.startsWith("Linux") -> "linux"
- else -> error("Unsupported OS: $osName")
- }
-
- val targetArch = when (val osArch = System.getProperty("os.arch")) {
- "x86_64", "amd64" -> "x64"
- "aarch64" -> "arm64"
- else -> error("Unsupported arch: $osArch")
- }
-
- val version = libs.versions.skiko.get()
- val target = "${targetOs}-${targetArch}"
-
- sourceSets {
- val jvmMain by getting {
- dependencies {
- implementation(projects.common)
- implementation(compose.desktop.currentOs)
- implementation("org.jetbrains.skiko:skiko-awt-runtime-$target:$version")
- api(compose.preview)
- }
- }
- val jvmTest by getting
- }
-}
-
-compose.desktop {
- application {
- mainClass = "MainKt"
- nativeDistributions {
- targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
- packageName = "common"
- packageVersion = "1.0.0"
- }
- }
-}
diff --git a/test/desktop/src/jvmMain/kotlin/Main.kt b/test/desktop/src/jvmMain/kotlin/Main.kt
deleted file mode 100644
index 1e86879..0000000
--- a/test/desktop/src/jvmMain/kotlin/Main.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-import androidx.compose.desktop.ui.tooling.preview.Preview
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.window.Window
-import androidx.compose.ui.window.application
-import io.github.thisisthepy.pycomposeui.test.common.App
-
-fun main() = application {
- Window(onCloseRequest = ::exitApplication) {
- App()
- }
-}
-
-@Preview
-@Composable
-fun DefaultPreview() {
- App()
-}
diff --git a/test/gradle.properties b/test/gradle.properties
deleted file mode 100644
index 5fe9415..0000000
--- a/test/gradle.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#Gradle
-org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options\="-Xmx2048M"
-
-#Kotlin
-kotlin.code.style=official
-
-#Android
-android.useAndroidX=true
-android.nonTransitiveRClass=true
-
-#iOS
-xcodeproj=ios
-
-#MPP
-kotlin.mpp.enableCInteropCommonization=true
-kotlin.native.binary.memoryModel=experimental
-kotlin.native.useEmbeddableCompilerJar=true
-
-#Compose
-org.jetbrains.compose.experimental.jscanvas.enabled=true
-org.jetbrains.compose.experimental.uikit.enabled=true
diff --git a/test/gradle/libs.versions.toml b/test/gradle/libs.versions.toml
deleted file mode 100644
index bae115c..0000000
--- a/test/gradle/libs.versions.toml
+++ /dev/null
@@ -1,44 +0,0 @@
-[versions]
-agp = "8.1.2"
-kotlin = "1.9.10"
-compose = "1.5.10"
-compose-ui = "1.5.4"
-compose-compiler = "1.5.3"
-skiko = "0.7.85"
-androidx-activityCompose = "1.8.0"
-androidx-appcompat = "1.6.1"
-androidx-core = "1.12.0"
-ktor = "2.3.5"
-koin = "3.4.0"
-chaquo = "15.0.0"
-stately-concurrent-collections = "2.0.0"
-toasterAtSnackBar = "1.0.3"
-moko-resources = "0.23.0"
-
-[libraries]
-kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
-androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" }
-androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
-androidx-core = { module = "androidx.core:core-ktx", version = "androidx-core" }
-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "compose-ui" }
-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "compose-ui" }
-ktor-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }
-ktor-jvm = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }
-ktor-js = { module = "io.ktor:ktor-client-js", version.ref = "ktor" }
-ktor-jsonjs = { module = "io.ktor:ktor-client-json-js", version.ref = "ktor" }
-ktor-ios = { module = "io.ktor:ktor-client-darwin", version.ref = "ktor" }
-koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" }
-stately-concurrent-collections = { module = "co.touchlab:stately-concurrent-collections", version.ref = "stately-concurrent-collections" }
-toasterAtSnackBar = { module = "io.github.untactorder:toasterAtSnackBar", version.ref = "toasterAtSnackBar" }
-moko-resources = { module = "dev.icerock.moko:resources-compose", version.ref = "moko-resources" }
-
-[plugins]
-android-application = { id = "com.android.application", version.ref = "agp" }
-android-library = { id = "com.android.library", version.ref = "agp" }
-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
-kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
-kotlin-cocoapods = { id = "org.jetbrains.kotlin.native.cocoapods", version.ref = "kotlin" }
-jetpack-compose = { id = "org.jetbrains.compose", version.ref = "compose" }
-chaquo-python = { id = "com.chaquo.python", version.ref = "chaquo" }
-moko-resources = { id = "dev.icerock.mobile.multiplatform-resources", version.ref = "moko-resources" }
diff --git a/test/gradle/wrapper/gradle-wrapper.jar b/test/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index e708b1c..0000000
Binary files a/test/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/test/gradle/wrapper/gradle-wrapper.properties b/test/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 931a4b0..0000000
--- a/test/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Mon Nov 06 02:00:27 KST 2023
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/test/gradlew b/test/gradlew
deleted file mode 100644
index 4f906e0..0000000
--- a/test/gradlew
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/env sh
-
-#
-# Copyright 2015 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
- echo "$*"
-}
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=`expr $i + 1`
- done
- case $i in
- 0) set -- ;;
- 1) set -- "$args0" ;;
- 2) set -- "$args0" "$args1" ;;
- 3) set -- "$args0" "$args1" "$args2" ;;
- 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=`save "$@"`
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-exec "$JAVACMD" "$@"
diff --git a/test/gradlew.bat b/test/gradlew.bat
deleted file mode 100644
index 107acd3..0000000
--- a/test/gradlew.bat
+++ /dev/null
@@ -1,89 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/test/ios/iosApp.xcodeproj/project.pbxproj b/test/ios/iosApp.xcodeproj/project.pbxproj
deleted file mode 100644
index 032d8cb..0000000
--- a/test/ios/iosApp.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,389 +0,0 @@
- // !$*UTF8*$!
- {
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 50;
- objects = {
-
- /* Begin PBXBuildFile section */
-058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; };
-058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; };
- 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; };
- 7555FF83242A565900829871 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7555FF82242A565900829871 /* ContentView.swift */; };
- /* End PBXBuildFile section */
-
- /* Begin PBXCopyFilesBuildPhase section */
- 7555FFB4242A642300829871 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
- /* End PBXCopyFilesBuildPhase section */
-
- /* Begin PBXFileReference section */
- 058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
-058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
- 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; };
- 7555FF7B242A565900829871 /* iosApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iosApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 7555FF82242A565900829871 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
- 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- /* End PBXFileReference section */
-
- /* Begin PBXFrameworksBuildPhase section */
- 7555FF78242A565900829871 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- /* End PBXFrameworksBuildPhase section */
-
- /* Begin PBXGroup section */
- 058557D7273AAEEB004C7B11 /* Preview Content */ = {
- isa = PBXGroup;
- children = (
- 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */,
- );
- path = "Preview Content";
- sourceTree = "";
-};
- 7555FF72242A565900829871 = {
- isa = PBXGroup;
- children = (
- 7555FF7D242A565900829871 /* iosApp */,
- 7555FF7C242A565900829871 /* Products */,
- 7555FFB0242A642200829871 /* Frameworks */,
- );
- sourceTree = "";
- };
- 7555FF7C242A565900829871 /* Products */ = {
- isa = PBXGroup;
- children = (
- 7555FF7B242A565900829871 /* iosApp.app */,
- );
- name = Products;
- sourceTree = "";
- };
- 7555FF7D242A565900829871 /* iosApp */ = {
- isa = PBXGroup;
- children = (
- 058557BA273AAA24004C7B11 /* Assets.xcassets */,
- 7555FF82242A565900829871 /* ContentView.swift */,
- 7555FF8C242A565B00829871 /* Info.plist */,
- 2152FB032600AC8F00CF470E /* iOSApp.swift */,
- 058557D7273AAEEB004C7B11 /* Preview Content */,
- );
- path = iosApp;
- sourceTree = "";
- };
- 7555FFB0242A642200829871 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- );
- name = Frameworks;
- sourceTree = "";
- };
- /* End PBXGroup section */
-
- /* Begin PBXNativeTarget section */
- 7555FF7A242A565900829871 /* iosApp */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */;
- buildPhases = (
- 7555FFB5242A651A00829871 /* ShellScript */,
- 7555FF77242A565900829871 /* Sources */,
- 7555FF78242A565900829871 /* Frameworks */,
- 7555FF79242A565900829871 /* Resources */,
- 7555FFB4242A642300829871 /* Embed Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = iosApp;
- productName = iosApp;
- productReference = 7555FF7B242A565900829871 /* iosApp.app */;
- productType = "com.apple.product-type.application";
- };
- /* End PBXNativeTarget section */
-
- /* Begin PBXProject section */
- 7555FF73242A565900829871 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastSwiftUpdateCheck = 1130;
- LastUpgradeCheck = 1130;
- ORGANIZATIONNAME = orgName;
- TargetAttributes = {
- 7555FF7A242A565900829871 = {
- CreatedOnToolsVersion = 11.3.1;
- };
- };
- };
- buildConfigurationList = 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */;
- compatibilityVersion = "Xcode 9.3";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 7555FF72242A565900829871;
- productRefGroup = 7555FF7C242A565900829871 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 7555FF7A242A565900829871 /* iosApp */,
- );
- };
- /* End PBXProject section */
-
- /* Begin PBXResourcesBuildPhase section */
- 7555FF79242A565900829871 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */,
- 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- /* End PBXResourcesBuildPhase section */
-
- /* Begin PBXShellScriptBuildPhase section */
- 7555FFB5242A651A00829871 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- );
- outputFileListPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "cd \"$SRCROOT/..\"\n./gradlew :common:embedAndSignAppleFrameworkForXcode\n";
- };
- /* End PBXShellScriptBuildPhase section */
-
- /* Begin PBXSourcesBuildPhase section */
- 7555FF77242A565900829871 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */,
- 7555FF83242A565900829871 /* ContentView.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- /* End PBXSourcesBuildPhase section */
-
- /* Begin XCBuildConfiguration section */
- 7555FFA3242A565B00829871 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_ENABLE_OBJC_WEAK = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 14.1;
- MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
- MTL_FAST_MATH = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- };
- name = Debug;
- };
- 7555FFA4242A565B00829871 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_ENABLE_OBJC_WEAK = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 14.1;
- MTL_ENABLE_DEBUG_INFO = NO;
- MTL_FAST_MATH = YES;
- SDKROOT = iphoneos;
- SWIFT_COMPILATION_MODE = wholemodule;
- SWIFT_OPTIMIZATION_LEVEL = "-O";
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
- 7555FFA6242A565B00829871 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
- ENABLE_PREVIEWS = YES;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(SRCROOT)/../common/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)"
- );
- INFOPLIST_FILE = iosApp/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- OTHER_LDFLAGS = (
- "$(inherited)",
- "-framework",
- common,
- );
- PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_VERSION = 5.0;
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Debug;
- };
- 7555FFA7242A565B00829871 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CODE_SIGN_STYLE = Automatic;
- DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
- ENABLE_PREVIEWS = YES;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(SRCROOT)/../common/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)"
- );
- INFOPLIST_FILE = iosApp/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- OTHER_LDFLAGS = (
- "$(inherited)",
- "-framework",
- common,
- );
- PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_VERSION = 5.0;
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Release;
- };
- /* End XCBuildConfiguration section */
-
- /* Begin XCConfigurationList section */
- 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 7555FFA3242A565B00829871 /* Debug */,
- 7555FFA4242A565B00829871 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 7555FFA6242A565B00829871 /* Debug */,
- 7555FFA7242A565B00829871 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- /* End XCConfigurationList section */
- };
- rootObject = 7555FF73242A565900829871 /* Project object */;
- }
\ No newline at end of file
diff --git a/test/ios/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/test/ios/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d9810..0000000
--- a/test/ios/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/test/ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/irack.xcuserdatad/UserInterfaceState.xcuserstate b/test/ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/irack.xcuserdatad/UserInterfaceState.xcuserstate
deleted file mode 100644
index 8bad2f1..0000000
Binary files a/test/ios/iosApp.xcodeproj/project.xcworkspace/xcuserdata/irack.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ
diff --git a/test/ios/iosApp.xcodeproj/xcuserdata/irack.xcuserdatad/xcschemes/xcschememanagement.plist b/test/ios/iosApp.xcodeproj/xcuserdata/irack.xcuserdatad/xcschemes/xcschememanagement.plist
deleted file mode 100644
index 56b5955..0000000
--- a/test/ios/iosApp.xcodeproj/xcuserdata/irack.xcuserdatad/xcschemes/xcschememanagement.plist
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- SchemeUserState
-
- iosApp.xcscheme_^#shared#^_
-
- orderHint
- 0
-
-
-
-
diff --git a/test/ios/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json b/test/ios/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json
deleted file mode 100644
index ee7e3ca..0000000
--- a/test/ios/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "colors" : [
- {
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
\ No newline at end of file
diff --git a/test/ios/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/test/ios/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index fb88a39..0000000
--- a/test/ios/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "20x20"
- },
- {
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "20x20"
- },
- {
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "29x29"
- },
- {
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "29x29"
- },
- {
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "40x40"
- },
- {
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "40x40"
- },
- {
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "60x60"
- },
- {
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "60x60"
- },
- {
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "20x20"
- },
- {
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "20x20"
- },
- {
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "29x29"
- },
- {
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "29x29"
- },
- {
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "40x40"
- },
- {
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "40x40"
- },
- {
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "76x76"
- },
- {
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "76x76"
- },
- {
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "83.5x83.5"
- },
- {
- "idiom" : "ios-marketing",
- "scale" : "1x",
- "size" : "1024x1024"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
\ No newline at end of file
diff --git a/test/ios/iosApp/Assets.xcassets/Contents.json b/test/ios/iosApp/Assets.xcassets/Contents.json
deleted file mode 100644
index 4aa7c53..0000000
--- a/test/ios/iosApp/Assets.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
\ No newline at end of file
diff --git a/test/ios/iosApp/ContentView.swift b/test/ios/iosApp/ContentView.swift
deleted file mode 100644
index fecc4ab..0000000
--- a/test/ios/iosApp/ContentView.swift
+++ /dev/null
@@ -1 +0,0 @@
-import Foundation
diff --git a/test/ios/iosApp/Info.plist b/test/ios/iosApp/Info.plist
deleted file mode 100644
index 8044709..0000000
--- a/test/ios/iosApp/Info.plist
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- $(PRODUCT_BUNDLE_PACKAGE_TYPE)
- CFBundleShortVersionString
- 1.0
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- UIApplicationSceneManifest
-
- UIApplicationSupportsMultipleScenes
-
-
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UISupportedInterfaceOrientations~ipad
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UILaunchScreen
-
-
-
\ No newline at end of file
diff --git a/test/ios/iosApp/Preview Content/Preview Assets.xcassets/Contents.json b/test/ios/iosApp/Preview Content/Preview Assets.xcassets/Contents.json
deleted file mode 100644
index 4aa7c53..0000000
--- a/test/ios/iosApp/Preview Content/Preview Assets.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
\ No newline at end of file
diff --git a/test/ios/iosApp/iOSApp.swift b/test/ios/iosApp/iOSApp.swift
deleted file mode 100644
index b2b1330..0000000
--- a/test/ios/iosApp/iOSApp.swift
+++ /dev/null
@@ -1,15 +0,0 @@
-import UIKit
-import common
-
-@UIApplicationMain
-class AppDelegate: UIResponder, UIApplicationDelegate {
- var window: UIWindow?
-
- func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
- window = UIWindow(frame: UIScreen.main.bounds)
- let mainViewController = ViewControllerKt.MainViewController()
- window?.rootViewController = mainViewController
- window?.makeKeyAndVisible()
- return true
- }
-}
diff --git a/test/pycomposeui/build.gradle.kts b/test/pycomposeui/build.gradle.kts
deleted file mode 100644
index e93ce5f..0000000
--- a/test/pycomposeui/build.gradle.kts
+++ /dev/null
@@ -1,124 +0,0 @@
-plugins {
- alias(libs.plugins.kotlin.multiplatform)
- alias(libs.plugins.android.library)
- alias(libs.plugins.jetpack.compose)
- //alias(libs.plugins.kotlin.cocoapods)
-
- alias(libs.plugins.chaquo.python)
- alias(libs.plugins.moko.resources)
-}
-
-@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class)
-kotlin {
- targetHierarchy.default()
-
- androidTarget {
- compilations.all {
- kotlinOptions {
- jvmTarget = JavaVersion.VERSION_1_8.toString()
- }
- }
- }
-
- jvm("desktop") {
- compilations.all {
- kotlinOptions.jvmTarget = JavaVersion.VERSION_17.toString()
- }
- }
-
- js(IR) {
- browser()
- }
-
- ios()
- listOf(
- iosX64(),
- iosArm64(),
- iosSimulatorArm64()
- ).forEach {
- it.binaries.framework {
- baseName = "pycomposeui"
- }
- }
-
- sourceSets {
- val commonMain by getting {
- dependencies {
- api(compose.runtime)
- api(compose.ui)
- api(compose.foundation)
- api(compose.materialIconsExtended)
- api(compose.material3)
- implementation(libs.ktor.core)
- implementation(libs.koin.core)
- api(libs.moko.resources)
- }
- }
- val commonTest by getting {
- dependencies {
- implementation(libs.kotlin.test)
- }
- }
- val androidMain by getting {
- dependencies {
- api(libs.androidx.appcompat)
- api(libs.androidx.core)
- implementation(libs.ktor.jvm)
- implementation(libs.toasterAtSnackBar)
- }
- dependsOn(commonMain)
- }
- val desktopMain by getting {
- dependencies {
- api(compose.preview)
- implementation(libs.ktor.jvm)
- }
- }
- val desktopTest by getting
- val jsMain by getting {
- dependencies {
- api(compose.html.core)
- implementation(libs.ktor.js)
- implementation(libs.ktor.jsonjs)
- }
- }
- val iosX64Main by getting
- val iosArm64Main by getting
- val iosSimulatorArm64Main by getting
- val iosMain by getting {
- dependencies {
- implementation(libs.ktor.ios)
- }
- iosX64Main.dependsOn(this)
- iosArm64Main.dependsOn(this)
- iosSimulatorArm64Main.dependsOn(this)
- }
- }
-}
-
-chaquopy {
- defaultConfig {
- version = "3.11"
- }
- sourceSets {
- getByName("main") {
- srcDir("src/androidMain/python")
- }
- }
-}
-
-android {
- namespace = "io.github.thisisthepy.pycomposeui.test"
- compileSdk = 34
- defaultConfig {
- minSdk = 24
- ndk {
- abiFilters += listOf("arm64-v8a", "armeabi-v7a", "x86_64", "x86")
- }
- }
-}
-
-multiplatformResources {
- multiplatformResourcesPackage = "io.github.thisisthepy.pycomposeui.test"
- multiplatformResourcesClassName = "MR"
-}
diff --git a/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/AlignmentBinding.java b/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/AlignmentBinding.java
deleted file mode 100644
index 7c03d90..0000000
--- a/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/AlignmentBinding.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package io.github.thisisthepy.pycomposeui;
-
-import androidx.compose.foundation.layout.Arrangement;
-import androidx.compose.foundation.layout.PaddingValues;
-import androidx.compose.ui.Alignment;
-import androidx.compose.ui.AbsoluteAlignment;
-import androidx.compose.ui.Modifier;
-import androidx.compose.foundation.layout.PaddingKt;
-import androidx.compose.ui.unit.Dp;
-import androidx.compose.ui.unit.TextUnit;
-
-
-public class AlignmentBinding {
- public Arrangement a = Arrangement.INSTANCE;
- public Modifier modifier = PaddingKt.padding(Modifier.Companion, Pad);
-
- public Dp aa = new Dp();
- public TextUnit textUnit = 1.sp()
-}
diff --git a/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/Material3.android.kt b/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/Material3.android.kt
deleted file mode 100644
index e8c425f..0000000
--- a/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/Material3.android.kt
+++ /dev/null
@@ -1,46 +0,0 @@
-package io.github.thisisthepy.pycomposeui
-
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Row
-import androidx.compose.material3.Button
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import com.chaquo.python.PyObject
-
-
-@JvmName("SimpleColumnWidget")
-@Composable
-fun SimpleColumnWidget(
- modifier: Modifier,
- verticalArrangement: Arrangement.Vertical,
- horizontalAlignment: Alignment.Horizontal,
- content: PyObject
-) {
- Column(modifier, verticalArrangement, horizontalAlignment) {
- content.call()
- }
-}
-
-@JvmName("SimpleRowWidget")
-@Composable
-fun SimpleRowWidget(
- content: PyObject
-) {
- Row {
- content.call()
- }
-}
-
-
-@JvmName("SimpleButtonWidget")
-@Composable
-fun SimpleButtonWidget(
- onClick: PyObject,
- content: PyObject
-) {
- Button({ onClick.call() }) {
- content.call()
- }
-}
diff --git a/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/PythonAppView.android.kt b/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/PythonAppView.android.kt
deleted file mode 100644
index a922c5c..0000000
--- a/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/PythonAppView.android.kt
+++ /dev/null
@@ -1,105 +0,0 @@
-package io.github.thisisthepy.pycomposeui
-
-import androidx.compose.foundation.BorderStroke
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Surface
-import androidx.compose.material3.contentColorFor
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.currentComposer
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.RectangleShape
-import androidx.compose.ui.graphics.Shape
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.unit.Dp
-import androidx.compose.ui.unit.dp
-import com.chaquo.python.PyObject
-import com.chaquo.python.Python
-import com.chaquo.python.android.AndroidPlatform
-
-
-var moduleNamePreset: String = ""
- set(name) {
- if (field.isNotEmpty()) {
- throw IllegalStateException("Python Module Name Preset can be set only once.")
- }
- field = name
- }
-
-
-@Composable
-fun PythonLauncher(
- content: @Composable () -> Unit
-) {
- if (!Python.isStarted()) {
- val platform = AndroidPlatform(LocalContext.current)
- platform.redirectStdioToLogcat()
- Python.start(platform)
- println("PythonLauncher: Python is started...")
- }
- val runtime = Python.getInstance().getModule("pycomposeui.runtime")
- val composable = runtime["Composable"]
- if (composable != null) {
- composable.callAttr("register_composer", currentComposer)
- println("PythonLauncher: Composer is registered.")
- } else {
- throw RuntimeException("PythonLauncher: Failed to register Composer. Cannot find Composable class in python runtime.")
- }
-
- content()
-}
-
-private fun getPyModule(name: String): PyObject {
- if (!Python.isStarted()) throw IllegalStateException("Python is not started. Please run PythonLauncher Composable first.")
- return Python.getInstance().getModule(name)
-}
-
-val sys: PyObject
- get() = getPyModule("sys")
-val version: String
- get() = sys["version"].toString()
-val os: PyObject
- get() = getPyModule("os")
-
-@Composable
-fun PythonWidget(
- composableName: String,
- modifier: Modifier = Modifier,
- shape: Shape = RectangleShape,
- color: Color = MaterialTheme.colorScheme.surface,
- contentColor: Color = contentColorFor(color),
- tonalElevation: Dp = 0.dp,
- shadowElevation: Dp = 0.dp,
- border: BorderStroke? = null,
- moduleName: String = moduleNamePreset,
- content: @Composable (args: Array) -> Unit = {}
-) {
- val module = getPyModule(moduleName)
- Surface(modifier, shape, color, contentColor, tonalElevation, shadowElevation, border) {
- module.callAttr(composableName, content)
- }
-}
-
-@Composable
-fun PythonAppView(
- modifier: Modifier = Modifier,
- shape: Shape = RectangleShape,
- color: Color = MaterialTheme.colorScheme.surface,
- contentColor: Color = contentColorFor(color),
- tonalElevation: Dp = 0.dp,
- shadowElevation: Dp = 0.dp,
- border: BorderStroke? = null
-) {
- val module = getPyModule(moduleNamePreset)
- Surface(modifier, shape, color, contentColor, tonalElevation, shadowElevation, border) {
- module.callAttr("App")
- }
-}
-
-fun runPy(functionName: String, moduleName: String = moduleNamePreset, vararg args: Any): PyObject {
- val module = getPyModule(moduleName)
- return when {
- args.isEmpty() -> module.callAttr(functionName)
- else -> module.callAttr(functionName, *(args.toList().toTypedArray()))
- }
-}
diff --git a/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/Runtime.android.kt b/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/Runtime.android.kt
deleted file mode 100644
index 1c43c86..0000000
--- a/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/Runtime.android.kt
+++ /dev/null
@@ -1,43 +0,0 @@
-package io.github.thisisthepy.pycomposeui
-
-import android.annotation.SuppressLint
-import androidx.compose.runtime.*
-import androidx.compose.runtime.saveable.rememberSaveable
-import com.chaquo.python.PyObject
-
-//
-///*
-// * Description: Composable Template contains Python codes can be invoked by Kotlin functions
-// */
-//@JvmName("ComposableTemplate")
-//@Composable
-//fun ComposableTemplate(content: PyObject, vararg args: Any) {
-// content.call(*args)
-//}
-
-
-@SuppressLint("MutableCollectionMutableState")
-@JvmName("rememberSaveableWrapper")
-@Composable
-fun rememberSaveableWrapper(init: PyObject, type: PyObject): MutableState = when(type.toString()) {
- "int" -> {
- rememberSaveable { mutableIntStateOf(init.toInt()) }
- }
- "long" -> {
- rememberSaveable { mutableLongStateOf(init.toLong()) }
- }
- "boolean" -> {
- rememberSaveable { mutableStateOf(init.toBoolean()) }
- }
- "float" -> {
- rememberSaveable { mutableDoubleStateOf(init.toDouble()) }
- }
- "str" -> {
- rememberSaveable { mutableStateOf(init.toString()) }
- }
- else -> {
- println("Warning: A value that cannot be converted to a primitive type is passed as a argument to the rememberSaveable function." +
- "An exception may occur if CustomSaver is not specified... : Any - $init")
- rememberSaveable { mutableStateOf(init) }
- }
-}
diff --git a/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Theme.android.kt b/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Theme.android.kt
deleted file mode 100644
index 8084ec0..0000000
--- a/test/pycomposeui/src/androidMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Theme.android.kt
+++ /dev/null
@@ -1,69 +0,0 @@
-package io.github.thisisthepy.pycomposeui.theme
-
-import android.app.Activity
-import android.os.Build
-import android.view.View
-import android.view.WindowManager
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Surface
-import androidx.compose.material3.dynamicDarkColorScheme
-import androidx.compose.material3.dynamicLightColorScheme
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.SideEffect
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.platform.LocalView
-import androidx.core.view.WindowCompat
-
-
-@Composable
-actual fun AppTheme(
- darkTheme: Boolean,
- dynamicColor: Boolean,
- content: @Composable () -> Unit
-) {
- val colorScheme = when {
- dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
- val context = LocalContext.current
- if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
- }
-
- darkTheme -> colorDark
- else -> colorLight
- }
-
- val view = LocalView.current
- if (!view.isInEditMode) {
- SideEffect {
- (view.context as Activity).setStatusBarTransparent(view, !darkTheme)
- }
- }
-
- MaterialTheme(
- colorScheme = colorScheme,
- typography = typography,
- shapes = shapes
- ) {
- Surface(
- modifier = Modifier.fillMaxSize(),
- color = MaterialTheme.colorScheme.background,
- content = content
- )
- }
-}
-
-fun Activity.setStatusBarTransparent(localView: View, lightSystemBar: Boolean) {
- window.apply {
- setFlags(
- WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
- WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
- )
- }
- if (Build.VERSION.SDK_INT >= 30) {
- WindowCompat.setDecorFitsSystemWindows(window, false)
- }
-
- WindowCompat.getInsetsController(this.window, localView).isAppearanceLightStatusBars = lightSystemBar
- WindowCompat.getInsetsController(this.window, localView).isAppearanceLightNavigationBars = lightSystemBar
-}
diff --git a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/Material3.kt b/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/Material3.kt
deleted file mode 100644
index 56b01ff..0000000
--- a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/Material3.kt
+++ /dev/null
@@ -1,84 +0,0 @@
-package io.github.thisisthepy.pycomposeui
-
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.ColumnScope
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.text.InlineTextContent
-import androidx.compose.material3.LocalTextStyle
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.text.AnnotatedString
-import androidx.compose.ui.text.TextLayoutResult
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.FontFamily
-import androidx.compose.ui.text.font.FontStyle
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.text.style.TextAlign
-import androidx.compose.ui.text.style.TextDecoration
-import androidx.compose.ui.text.style.TextOverflow
-import androidx.compose.ui.unit.TextUnit
-import kotlin.jvm.JvmName
-
-
-@JvmName("SimpleTextWidget")
-@Composable
-fun SimpleTextWidget(
- text: String
-) {
- Text(text)
-}
-
-
-@JvmName("TextWidget")
-@Composable
-fun TextWidget(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = Color.Unspecified,
- fontSize: TextUnit = TextUnit.Unspecified,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight? = null,
- fontFamily: FontFamily? = null,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- maxLines: Int = Int.MAX_VALUE,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- Text(text, modifier, color, fontSize, fontStyle, fontWeight, fontFamily, letterSpacing, textDecoration, textAlign,
- lineHeight, overflow, softWrap, maxLines, minLines, onTextLayout, style)
-}
-
-
-@JvmName("AnnotatedStringTextWidget")
-@Composable
-fun AnnotatedStringTextWidget(
- text: AnnotatedString,
- modifier: Modifier = Modifier,
- color: Color = Color.Unspecified,
- fontSize: TextUnit = TextUnit.Unspecified,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight? = null,
- fontFamily: FontFamily? = null,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- maxLines: Int = Int.MAX_VALUE,
- minLines: Int = 1,
- inlineContent: Map = mapOf(),
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- Text(text, modifier, color, fontSize, fontStyle, fontWeight, fontFamily, letterSpacing, textDecoration, textAlign,
- lineHeight, overflow, softWrap, maxLines, minLines, inlineContent, onTextLayout, style)
-}
diff --git a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/Runtime.kt b/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/Runtime.kt
deleted file mode 100644
index fc85a7c..0000000
--- a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/Runtime.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package io.github.thisisthepy.pycomposeui
-
-import androidx.compose.runtime.Composable
-import kotlin.jvm.JvmName
-
-
-/*
- * Description: Composable Wrapper contains Kotlin Composable can be invoked by Python functions
- */
-@JvmName("composableWrapper")
-@Composable
-fun composableWrapper(content: @Composable (args: Array) -> Any, args: Array): Any {
- return content(args)
-}
diff --git a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/Ui.kt b/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/Ui.kt
deleted file mode 100644
index 6d58064..0000000
--- a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/Ui.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package io.github.thisisthepy.pycomposeui
-
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-
-
-fun getModifier() = Modifier
-
-fun getAlignment() = Alignment
diff --git a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/style/AdvancedTextShape.kt b/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/style/AdvancedTextShape.kt
deleted file mode 100644
index c28ef0b..0000000
--- a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/style/AdvancedTextShape.kt
+++ /dev/null
@@ -1,321 +0,0 @@
-package io.github.thisisthepy.pycomposeui.style
-
-import androidx.compose.animation.core.*
-import androidx.compose.foundation.background
-import androidx.compose.foundation.layout.*
-import androidx.compose.material3.LocalTextStyle
-import androidx.compose.material3.Text
-import androidx.compose.runtime.*
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.clipToBounds
-import androidx.compose.ui.draw.drawWithContent
-import androidx.compose.ui.graphics.Brush
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.layout.Placeable
-import androidx.compose.ui.layout.SubcomposeLayout
-import androidx.compose.ui.platform.LocalDensity
-import androidx.compose.ui.text.TextLayoutResult
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.FontFamily
-import androidx.compose.ui.text.font.FontStyle
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.text.style.TextAlign
-import androidx.compose.ui.text.style.TextDecoration
-import androidx.compose.ui.text.style.TextOverflow
-import androidx.compose.ui.unit.TextUnit
-import androidx.compose.ui.unit.dp
-import kotlinx.coroutines.delay
-
-
-/**
- * @see Marquee Text Effect
- */
-@Composable
-fun MarqueeText(
- text: String,
- modifier: Modifier = Modifier,
- textModifier: Modifier = Modifier,
- gradientEdgeColor: Color = Color.White,
- color: Color = Color.Unspecified,
- fontSize: TextUnit = TextUnit.Unspecified,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight? = null,
- fontFamily: FontFamily? = null,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current,
-) {
- val createText = @Composable { localModifier: Modifier ->
- Text(
- text,
- textAlign = textAlign,
- modifier = localModifier,
- color = color,
- fontSize = fontSize,
- fontStyle = fontStyle,
- fontWeight = fontWeight,
- fontFamily = fontFamily,
- letterSpacing = letterSpacing,
- textDecoration = textDecoration,
- lineHeight = lineHeight,
- overflow = overflow,
- softWrap = softWrap,
- maxLines = 1,
- onTextLayout = onTextLayout,
- style = style,
- )
- }
- var offset by remember { mutableStateOf(0) }
- val textLayoutInfoState = remember { mutableStateOf(null) }
- LaunchedEffect(textLayoutInfoState.value) {
- val textLayoutInfo = textLayoutInfoState.value ?: return@LaunchedEffect
- if (textLayoutInfo.textWidth <= textLayoutInfo.containerWidth) return@LaunchedEffect
- val nonZeroContainerWidth = if (textLayoutInfo.containerWidth < 1) 1 else textLayoutInfo.containerWidth
- val duration = 5500 * textLayoutInfo.textWidth / nonZeroContainerWidth
- val delay = 1000L
-
- do {
- val animation = TargetBasedAnimation(
- animationSpec = infiniteRepeatable(
- animation = tween(
- durationMillis = duration,
- delayMillis = 1000,
- easing = LinearEasing,
- ),
- repeatMode = RepeatMode.Restart
- ),
- typeConverter = Int.VectorConverter,
- initialValue = 0,
- targetValue = -textLayoutInfo.textWidth
- )
- val startTime = withFrameNanos { it }
- do {
- val playTime = withFrameNanos { it } - startTime
- offset = (animation.getValueFromNanos(playTime))
- } while (!animation.isFinishedFromNanos(playTime))
- delay(delay)
- } while (true)
- }
-
- SubcomposeLayout(
- modifier = modifier.clipToBounds()
- ) { constraints ->
- val infiniteWidthConstraints = constraints.copy(maxWidth = Int.MAX_VALUE)
- var mainText = subcompose(MarqueeLayers.MainText) {
- createText(textModifier)
- }.first().measure(infiniteWidthConstraints)
-
- var gradient: Placeable? = null
-
- var secondPlaceableWithOffset: Pair? = null
- if (mainText.width <= constraints.maxWidth) {
- mainText = subcompose(MarqueeLayers.SecondaryText) {
- createText(textModifier.fillMaxWidth())
- }.first().measure(constraints)
- textLayoutInfoState.value = null
- } else {
- val spacing = constraints.maxWidth * 2 / 3
- textLayoutInfoState.value = TextLayoutInfo(
- textWidth = mainText.width + spacing,
- containerWidth = constraints.maxWidth
- )
- val secondTextOffset = mainText.width + offset + spacing
- val secondTextSpace = constraints.maxWidth - secondTextOffset
- if (secondTextSpace > 0) {
- secondPlaceableWithOffset = subcompose(MarqueeLayers.SecondaryText) {
- createText(textModifier)
- }.first().measure(infiniteWidthConstraints) to secondTextOffset
- }
- gradient = subcompose(MarqueeLayers.EdgesGradient) {
- Row {
- GradientEdge(gradientEdgeColor, Color.Transparent)
- Spacer(Modifier.weight(1f))
- GradientEdge(Color.Transparent, gradientEdgeColor)
- }
- }.first().measure(constraints.copy(maxHeight = mainText.height))
- }
-
- layout(
- width = constraints.maxWidth,
- height = mainText.height
- ) {
- mainText.place(offset, 0)
- secondPlaceableWithOffset?.let {
- it.first.place(it.second, 0)
- }
- gradient?.place(0, 0)
- }
- }
-}
-
-@Composable
-private fun GradientEdge(
- startColor: Color, endColor: Color,
-) {
- Box(
- modifier = Modifier
- .width(10.dp)
- .fillMaxHeight()
- .background(
- brush = Brush.horizontalGradient(
- 0f to startColor, 1f to endColor,
- )
- )
- )
-}
-
-private enum class MarqueeLayers { MainText, SecondaryText, EdgesGradient }
-private data class TextLayoutInfo(val textWidth: Int, val containerWidth: Int)
-
-
-/**
- * @see AutoSizeText
- */
-@Composable
-fun AutoSizeTextWithResizer(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = Color.Unspecified,
- fontSize: TextUnit = TextUnit.Unspecified,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight? = null,
- fontFamily: FontFamily? = null,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- maxLines: Int = 1,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current,
- resizer: MutableState = remember { mutableStateOf(1f) }
-) {
- Text(
- text, modifier, color,
- fontSize = fontSize * resizer.value,
- fontStyle, fontWeight, fontFamily, letterSpacing,
- textDecoration, textAlign, lineHeight, overflow, softWrap,
- maxLines, minLines,
- onTextLayout = {
- if (it.hasVisualOverflow) {
- resizer.value *= 0.99f
- }
- onTextLayout(it)
- },
- style
- )
-}
-
-
-/**
- * @see AutoSizeText
- */
-@Composable
-fun ConstraintAutoSizeText(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = Color.Unspecified,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight? = null,
- fontFamily: FontFamily? = null,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- maxLines: Int = 1,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- var scaledTextStyle by remember { mutableStateOf(style) }
- val localDensity = LocalDensity.current
-
- Text(
- text = text,
- color = color,
- maxLines = maxLines,
- minLines = minLines,
- fontStyle = fontStyle,
- fontWeight = fontWeight,
- fontFamily = fontFamily,
- letterSpacing = letterSpacing,
- textDecoration = textDecoration,
- textAlign = textAlign,
- lineHeight = lineHeight,
- overflow = overflow,
- softWrap = false,
- style = scaledTextStyle,
- onTextLayout = { result ->
- val scaleByHeight =
- result.layoutInput.constraints.maxHeight / 2
- val scaleByWidth =
- result.layoutInput.constraints.maxWidth / result.layoutInput.text.length
- scaledTextStyle = scaledTextStyle.copy(
- fontSize = with(localDensity) {
- if (scaleByHeight < scaleByWidth)
- scaleByHeight.toSp()
- else
- scaleByWidth.toSp()
- }
- )
- onTextLayout(result)
- },
- modifier = modifier.drawWithContent { drawContent() }
- )
-}
-
-
-/**
- * @see AutoSizeText
- */
-@Composable
-fun AutoSizeText(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = Color.Unspecified,
- fontSize: TextUnit = TextUnit.Unspecified,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight? = null,
- fontFamily: FontFamily? = null,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- maxLines: Int = 1,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- val resizer = remember { mutableStateOf(1f) }
- val stableFlag = mutableStateOf(false)
- Text(
- text, modifier, color,
- fontSize = fontSize * resizer.value,
- fontStyle, fontWeight, fontFamily, letterSpacing,
- textDecoration, textAlign, lineHeight, overflow, softWrap,
- maxLines, minLines,
- onTextLayout = {
- if (stableFlag.value) {
- resizer.value = 1f
- stableFlag.value = false
- }
- if (it.hasVisualOverflow) {
- resizer.value -= 0.01f
- } else {
- stableFlag.value = true
- }
- onTextLayout(it)
- },
- style
- )
-}
diff --git a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Color.kt b/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Color.kt
deleted file mode 100644
index a7272c6..0000000
--- a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Color.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package io.github.thisisthepy.pycomposeui.theme
-
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.darkColorScheme
-import androidx.compose.material3.lightColorScheme
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.graphics.Color
-
-
-val colorLight = lightColorScheme(
- primary = Color(0xFFF4F8FE),
- onPrimary = Color(0xFF6E7C96),
- secondary = Color.White,
- onSecondary = Color(0xFF6E7C96),
- tertiary = Color(0xFF6E7C96),
- onTertiary = Color.White,
- background = Color(0xFFE9F1FD),
- onBackground = Color(0xFFA2B0C9),
- surface = Color(0xFFE9F1FD)
-)
-
-val colorDark = darkColorScheme(
- primary = Color(0xFF25262B),
- onPrimary = Color.White,
- secondary = Color(0xFF393A3F),
- onSecondary = Color.White,
- tertiary = Color(0xFF393A3F),
- onTertiary = Color.White,
- background = Color(0xFF1A1C20),
- onBackground = Color(0xFF767171),
- surface = Color(0xFF1A1C20)
-)
-
-abstract class AppColorSet {
- abstract val lightShadow: Color
- abstract val darkShadow : Color
- abstract val brightPanelForeground: Color
- abstract val brightPanelBackground: Color
- abstract val listSelectionButtonForeground: Color
- abstract val listSelectionButtonBackground: Color
-
- companion object {
- val isLight
- @Composable get() = !isTimeInNightPeriod()
-
- val currentColorScheme
- @Composable get() = MaterialTheme.colorScheme
-
- val currentAppColorSet
- @Composable get() = if (isLight) LightColorSet else DarkColorSet
- }
-}
-
-object LightColorSet: AppColorSet() {
- override val lightShadow = Color(0x60E0E3F3)
- override val darkShadow = Color(0xF0CBD3ED)
- override val brightPanelForeground = Color.White
- override val brightPanelBackground = colorLight.onPrimary
- override val listSelectionButtonForeground = colorLight.onPrimary
- override val listSelectionButtonBackground = Color(0xFFEDF3FD)
-}
-
-object DarkColorSet: AppColorSet() {
- override val lightShadow = Color(0x60494949)
- override val darkShadow = Color(0xD0000000)
- override val brightPanelForeground = Color.White
- override val brightPanelBackground = colorDark.primary
- override val listSelectionButtonForeground = colorDark.onSecondary
- override val listSelectionButtonBackground = colorDark.secondary
-}
-
-val appColorSet
- @Composable get() = AppColorSet.currentAppColorSet
diff --git a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Dimens.kt b/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Dimens.kt
deleted file mode 100644
index 1057dfc..0000000
--- a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Dimens.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package io.github.thisisthepy.pycomposeui.theme
-
-import androidx.compose.foundation.layout.BoxWithConstraintsScope
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.unit.Dp
-import androidx.compose.ui.unit.TextUnit
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.sp
-
-
-val defaultCornerRadius: Dp = 36.dp
-
-val bodyTextFontSize: TextUnit = 16.sp
-val headTextFontSize: TextUnit = 22.sp
-val footTextFontSize: TextUnit = 12.sp
-val statusTextFontSize: TextUnit = 26.sp
-
-val horizontalLayoutThreshold = 600.dp
-@Composable
-fun BoxWithConstraintsScope.isHorizontal(): Boolean = this.maxWidth > horizontalLayoutThreshold
diff --git a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Shape.kt b/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Shape.kt
deleted file mode 100644
index 82f87dc..0000000
--- a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Shape.kt
+++ /dev/null
@@ -1,99 +0,0 @@
-package io.github.thisisthepy.pycomposeui.theme
-
-import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.material3.LocalTextStyle
-import androidx.compose.material3.Shapes
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.text.TextLayoutResult
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.FontStyle
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.text.style.TextAlign
-import androidx.compose.ui.text.style.TextDecoration
-import androidx.compose.ui.text.style.TextOverflow
-import androidx.compose.ui.unit.TextUnit
-import androidx.compose.ui.unit.dp
-import io.github.thisisthepy.pycomposeui.style.AutoSizeText
-import io.github.thisisthepy.pycomposeui.style.MarqueeText
-
-
-val shapes = Shapes(
- small = RoundedCornerShape(4.dp),
- medium = RoundedCornerShape(4.dp),
- large = RoundedCornerShape(0.dp)
-)
-
-
-@Composable
-fun Text(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = Color.Unspecified,
- fontSize: TextUnit = TextUnit.Unspecified,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight = FontWeight.SemiBold,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- maxLines: Int = Int.MAX_VALUE,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- Text(text, modifier, color, fontSize, fontStyle, fontWeight, suiteFontFamily, letterSpacing,
- textDecoration, textAlign, lineHeight, overflow, softWrap, maxLines, minLines, onTextLayout, style)
-}
-
-@Composable
-fun MarqueeText(
- text: String,
- modifier: Modifier = Modifier,
- textModifier: Modifier = Modifier,
- gradientEdgeColor: Color = Color.White,
- color: Color = Color.Unspecified,
- fontSize: TextUnit = TextUnit.Unspecified,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight? = null,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current,
-) {
- MarqueeText(text, modifier, textModifier, gradientEdgeColor, color, fontSize, fontStyle, fontWeight, suiteFontFamily,
- letterSpacing, textDecoration, textAlign, lineHeight, overflow, softWrap, onTextLayout, style)
-}
-
-@Composable
-fun AutoSizeText(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = Color.Unspecified,
- fontSize: TextUnit = TextUnit.Unspecified,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight? = null,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- maxLines: Int = 1,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- AutoSizeText(text, modifier, color, fontSize, fontStyle, fontWeight, suiteFontFamily,
- letterSpacing, textDecoration, textAlign, lineHeight, overflow, softWrap,
- maxLines, minLines, onTextLayout, style
- )
-}
diff --git a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Theme.kt b/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Theme.kt
deleted file mode 100644
index 7e0da23..0000000
--- a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Theme.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package io.github.thisisthepy.pycomposeui.theme
-
-import androidx.compose.foundation.isSystemInDarkTheme
-import androidx.compose.runtime.Composable
-
-
-@Composable
-expect fun AppTheme(
- darkTheme: Boolean = isSystemInDarkTheme(),
- dynamicColor: Boolean = false,
- content: @Composable () -> Unit
-)
-
-/*
- * @return true when nighttime or if dark theme is enabled
- */
-@Composable
-fun isTimeInNightPeriod(): Boolean = isSystemInDarkTheme()// || !isAfter6AMBefore6PM()
diff --git a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Type.kt b/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Type.kt
deleted file mode 100644
index cb02869..0000000
--- a/test/pycomposeui/src/commonMain/kotlin/io/github/thisisthepy/pycomposeui/theme/Type.kt
+++ /dev/null
@@ -1,202 +0,0 @@
-package io.github.thisisthepy.pycomposeui.theme
-
-import androidx.compose.material3.LocalTextStyle
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Typography
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.MutableState
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.text.TextLayoutResult
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.FontFamily
-import androidx.compose.ui.text.font.FontStyle
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.text.style.TextAlign
-import androidx.compose.ui.text.style.TextDecoration
-import androidx.compose.ui.text.style.TextOverflow
-import androidx.compose.ui.unit.TextUnit
-import androidx.compose.ui.unit.sp
-import dev.icerock.moko.resources.compose.fontFamilyResource
-import io.github.thisisthepy.pycomposeui.style.AutoSizeTextWithResizer
-import io.github.thisisthepy.pycomposeui.test.MR
-
-
-val suiteFontFamily: FontFamily
- @Composable get() = fontFamilyResource(MR.fonts.SUITE.variable)
-
-
-val typography
- @Composable get() = Typography(
- bodyMedium = TextStyle(
- fontFamily = suiteFontFamily,
- fontWeight = FontWeight.Normal,
- fontSize = 16.sp
- )
-)
-
-
-@Composable
-fun HeadText(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = MaterialTheme.colorScheme.onPrimary,
- fontSize: TextUnit = headTextFontSize,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight = FontWeight.SemiBold,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Ellipsis,
- softWrap: Boolean = true,
- maxLines: Int = 1,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- Text(
- text, modifier, color, fontSize, fontStyle, fontWeight, letterSpacing,
- textDecoration, textAlign, lineHeight, overflow, softWrap,
- maxLines, minLines, onTextLayout, style
- )
-}
-
-
-@Composable
-fun BodyText(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = MaterialTheme.colorScheme.onBackground,
- fontSize: TextUnit = bodyTextFontSize,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight = FontWeight.SemiBold,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Ellipsis,
- softWrap: Boolean = true,
- maxLines: Int = 1,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- Text(
- text, modifier, color, fontSize, fontStyle, fontWeight, letterSpacing,
- textDecoration, textAlign, lineHeight, overflow, softWrap,
- maxLines, minLines, onTextLayout, style
- )
-}
-
-
-@Composable
-fun BodyText(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = MaterialTheme.colorScheme.onBackground,
- fontSize: TextUnit = bodyTextFontSize,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight = FontWeight.SemiBold,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- maxLines: Int = 1,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current,
- resizer: MutableState = remember { mutableStateOf(1f) }
-) {
- AutoSizeTextWithResizer(
- text, modifier, color, fontSize, fontStyle, fontWeight, suiteFontFamily, letterSpacing,
- textDecoration, textAlign, lineHeight, overflow, softWrap,
- maxLines, minLines, onTextLayout, style, resizer
- )
-}
-
-
-@Composable
-fun FootText(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = MaterialTheme.colorScheme.onBackground,
- fontSize: TextUnit = footTextFontSize,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight = FontWeight.SemiBold,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Ellipsis,
- softWrap: Boolean = true,
- maxLines: Int = 1,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- Text(
- text, modifier, color, fontSize, fontStyle, fontWeight, letterSpacing,
- textDecoration, textAlign, lineHeight, overflow, softWrap,
- maxLines, minLines, onTextLayout, style
- )
-}
-
-
-@Composable
-fun StatusText(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = MaterialTheme.colorScheme.onPrimary,
- fontSize: TextUnit = statusTextFontSize,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight = FontWeight.Normal,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Ellipsis,
- softWrap: Boolean = true,
- maxLines: Int = 1,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current
-) {
- Text(
- text, modifier, color, fontSize, fontStyle, fontWeight, letterSpacing,
- textDecoration, textAlign, lineHeight, overflow, softWrap,
- maxLines, minLines, onTextLayout, style
- )
-}
-
-
-@Composable
-fun StatusText(
- text: String,
- modifier: Modifier = Modifier,
- color: Color = MaterialTheme.colorScheme.onPrimary,
- fontSize: TextUnit = statusTextFontSize,
- fontStyle: FontStyle? = null,
- fontWeight: FontWeight = FontWeight.Normal,
- letterSpacing: TextUnit = TextUnit.Unspecified,
- textDecoration: TextDecoration? = null,
- textAlign: TextAlign? = null,
- lineHeight: TextUnit = TextUnit.Unspecified,
- overflow: TextOverflow = TextOverflow.Clip,
- softWrap: Boolean = true,
- maxLines: Int = 1,
- minLines: Int = 1,
- onTextLayout: (TextLayoutResult) -> Unit = {},
- style: TextStyle = LocalTextStyle.current,
- resizer: MutableState = remember { mutableStateOf(1f) }
-) {
- AutoSizeTextWithResizer(
- text, modifier, color, fontSize, fontStyle, fontWeight, suiteFontFamily, letterSpacing,
- textDecoration, textAlign, lineHeight, overflow, softWrap,
- maxLines, minLines, onTextLayout, style, resizer
- )
-}
diff --git a/test/pycomposeui/src/commonMain/resources/MR/fonts/SUITE-Variable.ttf b/test/pycomposeui/src/commonMain/resources/MR/fonts/SUITE-Variable.ttf
deleted file mode 100644
index 8063945..0000000
Binary files a/test/pycomposeui/src/commonMain/resources/MR/fonts/SUITE-Variable.ttf and /dev/null differ
diff --git a/test/python-multiplatform/build.gradle.kts b/test/python-multiplatform/build.gradle.kts
deleted file mode 100644
index 0907883..0000000
--- a/test/python-multiplatform/build.gradle.kts
+++ /dev/null
@@ -1,116 +0,0 @@
-plugins {
- alias(libs.plugins.kotlin.multiplatform)
- alias(libs.plugins.android.library)
- alias(libs.plugins.jetpack.compose)
- //alias(libs.plugins.kotlin.cocoapods)
-
- alias(libs.plugins.chaquo.python)
-}
-
-@OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class)
-kotlin {
- targetHierarchy.default()
-
- androidTarget {
- compilations.all {
- kotlinOptions {
- jvmTarget = JavaVersion.VERSION_1_8.toString()
- }
- }
- }
-
- jvm("desktop") {
- compilations.all {
- kotlinOptions.jvmTarget = JavaVersion.VERSION_17.toString()
- }
- }
-
- js(IR) {
- browser()
- }
-
- ios()
- listOf(
- iosX64(),
- iosArm64(),
- iosSimulatorArm64()
- ).forEach {
- it.binaries.framework {
- baseName = "pycomposeui"
- }
- }
-
- sourceSets {
- val commonMain by getting {
- dependencies {
- api(compose.runtime)
- api(compose.ui)
- api(compose.foundation)
- api(compose.materialIconsExtended)
- api(compose.material3)
- implementation(libs.ktor.core)
- implementation(libs.koin.core)
- implementation(libs.stately.concurrent.collections)
- }
- }
- val commonTest by getting {
- dependencies {
- implementation(libs.kotlin.test)
- }
- }
- val androidMain by getting {
- dependencies {
- api(libs.androidx.appcompat)
- api(libs.androidx.core)
- implementation(libs.ktor.jvm)
- }
- }
- val desktopMain by getting {
- dependencies {
- api(compose.preview)
- implementation(libs.ktor.jvm)
- }
- }
- val desktopTest by getting
- val jsMain by getting {
- dependencies {
- api(compose.html.core)
- implementation(libs.ktor.js)
- implementation(libs.ktor.jsonjs)
- }
- }
- val iosX64Main by getting
- val iosArm64Main by getting
- val iosSimulatorArm64Main by getting
- val iosMain by getting {
- dependencies {
- implementation(libs.ktor.ios)
- }
- iosX64Main.dependsOn(this)
- iosArm64Main.dependsOn(this)
- iosSimulatorArm64Main.dependsOn(this)
- }
- }
-}
-
-chaquopy {
- defaultConfig {
- version = "3.11"
- }
- sourceSets {
- getByName("main") {
- srcDir("src/androidMain/python")
- }
- }
-}
-
-android {
- namespace = "io.github.thisisthepy.pycomposeui.test"
- compileSdk = 34
- defaultConfig {
- minSdk = 24
- ndk {
- abiFilters += listOf("arm64-v8a", "armeabi-v7a", "x86_64", "x86")
- }
- }
-}
diff --git a/test/python-multiplatform/src/androidMain/kotlin/io/github/thisisthepy/runtime/PyObject.android.kt b/test/python-multiplatform/src/androidMain/kotlin/io/github/thisisthepy/runtime/PyObject.android.kt
deleted file mode 100644
index 2df069e..0000000
--- a/test/python-multiplatform/src/androidMain/kotlin/io/github/thisisthepy/runtime/PyObject.android.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package io.github.thisisthepy.runtime
-
-import java.lang.ref.WeakReference
-
-
-/*
- * Python Object Cache
- */
-private val pyobjCache: MutableMap> = HashMap()
-
-
-/*
- * Obtain a reference to a specific pointer address from the object cache
- */
-fun PyObject.getInstance(pointer: Long): PyObject? {
- if (pointer == 0L) return null
- synchronized(pyobjCache) {
- val wr: WeakReference? = pyobjCache[pointer]
- if (wr != null) {
- // wr.get() returns null if the PyObject is unreachable, but it has not yet been removed from the cache.
- val obj: PyObject? = wr.get()
- if (obj != null) return obj
- }
- val obj = PyObject(pointer)
- pyobjCache[pointer] = WeakReference(obj)
- return obj
- }
-}
-
-/*
- * Delete PyObject from the object cache
- */
-fun PyObject.destroyInstance() {
- if (this.pointer == 0L) return
- synchronized(pyobjCache) {
- val wr: WeakReference? = pyobjCache.remove(pointer)
- if (wr != null) {
- val obj: PyObject? = wr.get()
- if (obj != null && obj !== this) {
- pyobjCache[pointer] = wr
- }
- }
- }
- this.pointer = 0
-}
diff --git a/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/Platform.kt b/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/Platform.kt
deleted file mode 100644
index a9ea00c..0000000
--- a/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/Platform.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package io.github.thisisthepy.runtime
-
-
-/*
- * Platform Object containing target system's information
- */
-expect object Platform() {
- fun getModulePointerByName(): Long
-}
diff --git a/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/PyException.kt b/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/PyException.kt
deleted file mode 100644
index 591a7ef..0000000
--- a/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/PyException.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package io.github.thisisthepy.runtime
-
-
-/*
- * Python Exception Class
- */
-class PyException: RuntimeException {
- constructor()
- constructor(s: String?) : super(s)
- constructor(s: String?, throwable: Throwable?) : super(s, throwable)
- constructor(throwable: Throwable?) : super(throwable)
-}
diff --git a/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/PyObject.kt b/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/PyObject.kt
deleted file mode 100644
index ee07af0..0000000
--- a/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/PyObject.kt
+++ /dev/null
@@ -1,86 +0,0 @@
-package io.github.thisisthepy.runtime
-
-
-/*
- * Obtain a reference to a specific pointer address from the object cache
- */
-expect fun PyObject.getInstance(pointer: Long): PyObject?
-
-/*
- * Delete PyObject from the object cache
- */
-expect fun PyObject.destroyInstance()
-
-
-/*
- * Python Object Binding
- */
-class PyObject(var pointer: Long) {
-
-
- fun call(vararg args: Object?): PyObject? {
- return try {
- callThrows(*args)
- } catch (e: PyException) {
- throw e
- } catch (e: Throwable) {
- throw PyException(e)
- }
- }
-
- fun toBoolean(): Boolean
-
- fun toByte(): Byte
-
- fun toChar(): Char
-
- fun toShort(): Short
-
- fun toInt(): Int
-
- fun toLong(): Long
-
- fun toFloat(): Float
-
- fun toDouble(): Double
-
- fun toString(): String
-
- fun asList(): List
-
- fun asMap(): Map
-
- fun asSet(): Set
-
- fun hasAttr(key: String): Boolean
-
- fun setAttr(key: String, value: PyObject)
-
- @throws IllegalStateException
- fun removeAttr(key: String)
-
- fun repr(): String
-
- fun is(compareWith: PyObject): Boolean
-
- fun equals(other: PyObject): Boolean
-
- fun type(): PyType
-
- fun isNone(): Boolean
-
- fun isTrue(): Boolean
-
- fun isFalse(): Boolean
-
- fun size(): Int
-
- fun fromKt(obj: Objects): PyObject
-
- fun toKt(): Objects
-
- @Override
- protected fun finalize() {
-
- }
-}
diff --git a/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/Python.kt b/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/Python.kt
deleted file mode 100644
index 5d00cf4..0000000
--- a/test/python-multiplatform/src/commonMain/kotlin/io/github/thisisthepy/runtime/Python.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package io.github.thisisthepy.runtime
-
-
-/*
- * Python Interpreter
- */
-object Python {
- var platform: Platform
- var
-
- /**
- *
- */
- fun getModule(name: String): PyObject {
- return requireNonNull(PyObject.getInstance(getModulePointerByName(name)))
- }
-}
diff --git a/test/python-multiplatform/src/iosMain/kotlin/io/github/thisisthepy/runtime/PyObject.ios.kt b/test/python-multiplatform/src/iosMain/kotlin/io/github/thisisthepy/runtime/PyObject.ios.kt
deleted file mode 100644
index 2c5304e..0000000
--- a/test/python-multiplatform/src/iosMain/kotlin/io/github/thisisthepy/runtime/PyObject.ios.kt
+++ /dev/null
@@ -1,46 +0,0 @@
-package io.github.thisisthepy.runtime
-
-import co.touchlab.stately.collections.ConcurrentMutableMap
-import kotlin.native.ref.WeakReference
-import kotlin.experimental.ExperimentalNativeApi
-
-
-/*
- * Python Object Cache
- */
-@OptIn(ExperimentalNativeApi::class)
-private val pyobjCache: ConcurrentMutableMap> = ConcurrentMutableMap()
-
-
-/*
- * Obtain a reference to a specific pointer address from the object cache
- */
-@OptIn(ExperimentalNativeApi::class)
-fun PyObject.getInstance(pointer: Long): PyObject? {
- if (pointer == 0L) return null
- val wr: WeakReference? = pyobjCache[pointer]
- if (wr != null) {
- // wr.get() returns null if the PyObject is unreachable, but it has not yet been removed from the cache.
- val obj: PyObject? = wr.get()
- if (obj != null) return obj
- }
- val obj = PyObject(pointer)
- pyobjCache[pointer] = WeakReference(obj)
- return obj
-}
-
-/*
- * Delete PyObject from the object cache
- */
-@OptIn(ExperimentalNativeApi::class)
-fun PyObject.destroyInstance() {
- if (this.pointer == 0L) return
- val wr: WeakReference? = pyobjCache.remove(pointer)
- if (wr != null) {
- val obj: PyObject? = wr.get()
- if (obj != null && obj !== this) {
- pyobjCache[pointer] = wr
- }
- }
- this.pointer = 0
-}
diff --git a/test/settings.gradle.kts b/test/settings.gradle.kts
deleted file mode 100644
index 378b088..0000000
--- a/test/settings.gradle.kts
+++ /dev/null
@@ -1,37 +0,0 @@
-enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
-pluginManagement {
- repositories {
- google()
- gradlePluginPortal()
- mavenCentral()
-
- maven {
- setUrl("https://jitpack.io")
- setUrl("https://kotlin.bintray.com/kotlinx")
- setUrl("https://maven.pkg.jetbrains.space/public/p/compose/dev")
- setUrl("https://chaquo.com/maven-test")
- }
- }
-}
-
-dependencyResolutionManagement {
- repositories {
- google()
- mavenCentral()
-
- maven {
- setUrl("https://jitpack.io")
- setUrl("https://kotlin.bintray.com/kotlinx")
- setUrl("https://maven.pkg.jetbrains.space/public/p/compose/dev")
- }
- }
-}
-
-rootProject.name = "Test"
-
-include(":android")
-include(":desktop")
-include(":web")
-include(":common")
-include(":pycomposeui")
-//include(":python-multiplatform")
diff --git a/test/web/build.gradle.kts b/test/web/build.gradle.kts
deleted file mode 100644
index 798d4ef..0000000
--- a/test/web/build.gradle.kts
+++ /dev/null
@@ -1,33 +0,0 @@
-import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
-
-plugins {
- alias(libs.plugins.kotlin.multiplatform)
- alias(libs.plugins.jetpack.compose)
-}
-
-kotlin {
- js(IR) {
- browser {
- useCommonJs()
- binaries.executable()
- }
- }
- sourceSets {
- val jsMain by getting {
- dependencies {
- implementation(projects.common)
- }
- }
- }
-}
-
-compose.experimental {
- web.application {}
-}
-
-afterEvaluate {
- rootProject.extensions.configure {
- versions.webpackDevServer.version = "4.0.0"
- versions.webpackCli.version = "4.10.0"
- }
-}
diff --git a/test/web/src/jsMain/kotlin/main.js.kt b/test/web/src/jsMain/kotlin/main.js.kt
deleted file mode 100644
index 011b6a8..0000000
--- a/test/web/src/jsMain/kotlin/main.js.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-import androidx.compose.ui.window.Window
-import org.jetbrains.skiko.wasm.onWasmReady
-import io.github.thisisthepy.pycomposeui.test.common.App
-
-fun main() {
- onWasmReady {
- Window("PyComposeTest") {
- App()
- }
- }
-}
diff --git a/test/web/src/jsMain/resources/index.html b/test/web/src/jsMain/resources/index.html
deleted file mode 100644
index 7e13e15..0000000
--- a/test/web/src/jsMain/resources/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- compose multiplatform web
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/test/web/src/jsMain/resources/styles.css b/test/web/src/jsMain/resources/styles.css
deleted file mode 100644
index 004fe76..0000000
--- a/test/web/src/jsMain/resources/styles.css
+++ /dev/null
@@ -1,14 +0,0 @@
-#root {
- width: 100%;
- height: 100vh;
-}
-
-#root > .compose-web-column > div {
- position: relative;
-}
-
-canvas {
- width: 90%;
- height: 90%;
- display: block;
-}
\ No newline at end of file
diff --git a/tests/adapter.py b/tests/adapter.py
new file mode 100644
index 0000000..fbc130a
--- /dev/null
+++ b/tests/adapter.py
@@ -0,0 +1,196 @@
+"""Install the binder's Python layers, read out of a `PythonMultiplatform` checkout.
+
+The binder ships two hand-written Python sources as Kotlin raw-string literals, and `exec`s them at
+run time for the reason `PythonxAdapter.kt` gives (on iOS, androidNative and wasm there is no
+resource path a `.py` could be put on):
+
+| Kotlin object | Python module | what |
+|---|---|---|
+| `KotlinSurface.SOURCE` | `python_multiplatform` | `KOTLIN_DEFAULT`, `describe`, `signature_of` -- the contract a Pythonic layer reads |
+| `PythonxAdapter.SOURCE` | `python_multiplatform.binding` | the finder that serves Kotlin-named modules (`androidx.compose.*`), overload dispatch, receiver proxies |
+
+This module reads both literals and installs them the way `PythonxAdapter.install` does. It is a
+*reader*, never a copy: if either source changes, these tests exercise the changed source on the
+next run.
+
+**It installs no mapping.** The binder renames nothing; `pythonx` is this repository's own package on
+disk, imported the ordinary way. Making it Pythonic is this package's job (AGENTS.md section 12).
+
+`PythonMultiplatform` is read-only here. Nothing in this file writes to it.
+"""
+
+from __future__ import annotations
+
+import os
+import pathlib
+import re
+import sys
+import types
+from pathlib import Path
+
+_MARKER = 'val SOURCE: String = """'
+
+_DEFAULT_HOME = Path(__file__).resolve().parents[2] / "PythonMultiplatform"
+
+_FFI = Path("python-multiplatform/src/commonMain/kotlin/python/multiplatform/ffi")
+_ADAPTER_KT = _FFI / "pythonx" / "PythonxAdapter.kt"
+_SURFACE_KT = _FFI / "upcall" / "KotlinSurface.kt"
+_CALLABLES_KT = _FFI / "pythonx" / "PythonCallables.kt"
+
+ROOT_MODULE = "python_multiplatform"
+BINDING_MODULE = "python_multiplatform.binding"
+
+_REPO = Path(__file__).resolve().parents[1]
+
+
+class AdapterUnavailable(RuntimeError):
+ """`PythonMultiplatform` was not found, so there is nothing to test against."""
+
+
+def python_multiplatform_home() -> Path:
+ """Where the binder checkout is. `PYTHONMULTIPLATFORM_HOME` overrides the sibling default."""
+ override = os.environ.get("PYTHONMULTIPLATFORM_HOME")
+ return Path(override).expanduser().resolve() if override else _DEFAULT_HOME
+
+
+def adapter_source_path() -> Path:
+ return python_multiplatform_home() / _ADAPTER_KT
+
+
+def trim_indent(text: str) -> str:
+ """Kotlin's `String.trimIndent`, which is what the Kotlin side applies to the literal.
+
+ Python's `textwrap.dedent` is not the same function: it refuses to dedent when a blank line
+ carries no indentation, and it does not drop the leading and trailing blank line that a
+ raw-string literal always has. Getting this wrong yields a `SyntaxError` several hundred lines
+ into a string nobody can see, so it is spelled out rather than approximated.
+ """
+ lines = text.split("\n")
+ if lines and not lines[0].strip():
+ lines = lines[1:]
+ if lines and not lines[-1].strip():
+ lines = lines[:-1]
+ indents = [len(line) - len(line.lstrip()) for line in lines if line.strip()]
+ common = min(indents) if indents else 0
+ return "\n".join(line[common:] if line.strip() else "" for line in lines)
+
+
+_DOLLAR_ESCAPE = "${'$'}"
+"""Kotlin's own way to put a literal `$` in a raw string without it being read as interpolation.
+
+`SOURCE` uses this for `$composer`, `$changed` and `$default` -- Compose-compiler-synthesised
+parameter names that must reach Python as `$composer` etc. Kotlin evaluates the escape before
+`Python3.exec` ever sees the string; this reader has to do the same or the literal `${'$'}` text
+lands in the exec'd source and every name built from it is a `SyntaxError` instead of an identifier.
+"""
+
+
+_INTERPOLATION = re.compile(r"\$\{(\w+)\.(\w+)\}")
+
+
+def _kotlin_constant(owner: str, name: str) -> str:
+ """The value of a `const val` a source literal interpolates, read from its declaring file."""
+ files = {"PythonCallables": _CALLABLES_KT}
+ path = python_multiplatform_home() / files.get(owner, Path("-"))
+ if not path.is_file():
+ raise AdapterUnavailable(f"cannot resolve ${{{owner}.{name}}}: no source for {owner}")
+ found = re.search(rf'const val {name}: String = "([^"]*)"', path.read_text(encoding="utf-8"))
+ if found is None:
+ raise AdapterUnavailable(f"cannot resolve ${{{owner}.{name}}} in {path}")
+ return found.group(1)
+
+
+def _read_source(relative: Path) -> str:
+ """The Python inside one `val SOURCE: String = \"\"\"...\"\"\"`, exactly as Kotlin hands it to CPython."""
+ path = python_multiplatform_home() / relative
+ if not path.is_file():
+ raise AdapterUnavailable(
+ f"{path} not found. Set PYTHONMULTIPLATFORM_HOME to the PythonMultiplatform checkout."
+ )
+ text = path.read_text(encoding="utf-8")
+ start = text.find(_MARKER)
+ if start < 0:
+ raise AdapterUnavailable(f"{path} no longer declares `{_MARKER}`")
+ start += len(_MARKER)
+ end = text.find('"""', start)
+ if end < 0:
+ raise AdapterUnavailable(f"{path}: the SOURCE literal is not terminated")
+ source = trim_indent(text[start:end]).replace(_DOLLAR_ESCAPE, "$")
+ return _INTERPOLATION.sub(lambda m: _kotlin_constant(m.group(1), m.group(2)), source)
+
+
+def read_adapter_source() -> str:
+ """`PythonxAdapter.SOURCE`: the binding layer."""
+ return _read_source(_ADAPTER_KT)
+
+
+def read_surface_source() -> str:
+ """`KotlinSurface.SOURCE`: the root module and its public contract."""
+ return _read_source(_SURFACE_KT)
+
+
+def read_manifest() -> dict:
+ """This package's own `pythonx-map.toml`, parsed.
+
+ The binder carries no mapping at all any more -- `pythonx.compose` means
+ `androidx.compose.*` because *this* package says so, and nothing else does. Reading the real
+ file rather than restating it means these tests fail if the manifest stops covering what they
+ exercise, which is the only way the map and its users stay in step.
+ """
+ import tomllib
+
+ path = pathlib.Path(__file__).resolve().parents[1] / "pythonx" / "compose" / "pythonx-map.toml"
+ with path.open("rb") as handle:
+ return tomllib.load(handle)
+
+
+def install() -> types.ModuleType:
+ """Reproduce `KotlinSurface.DELIVERY` and `PythonxAdapter.DELIVERY`; return the binding module.
+
+ Deliberately unconditional, unlike the Kotlin, which guards on `sys.modules`. A test wants fresh
+ layers per case; a running interpreter wants one per process. The caller registers a table
+ (`FakeHost.register`) -- that is the generated half `PythonxAdapter.renderTable` would emit.
+
+ The repository root goes on `sys.path` so `import pythonx.compose...` finds this package's
+ files, as it would once installed.
+ """
+ surface, binding_source = read_surface_source(), read_adapter_source()
+ uninstall()
+ if str(_REPO) not in sys.path:
+ sys.path.insert(0, str(_REPO))
+ root = types.ModuleType(ROOT_MODULE)
+ root.__path__ = []
+ sys.modules[ROOT_MODULE] = root
+ exec(compile(surface, f"{ROOT_MODULE}/__init__.py", "exec"), root.__dict__)
+ binding = types.ModuleType(BINDING_MODULE)
+ sys.modules[BINDING_MODULE] = binding
+ root.binding = binding
+ exec(compile(binding_source, "python_multiplatform/binding.py", "exec"), binding.__dict__)
+ return binding
+
+
+def _owned(name: str) -> bool:
+ return (
+ name == ROOT_MODULE or name.startswith(ROOT_MODULE + ".")
+ or name == "pythonx" or name.startswith("pythonx.")
+ )
+
+
+def uninstall() -> None:
+ """Drop both binder layers, every module the binding layer adapted, and this package's modules.
+
+ The Kotlin-named modules (`androidx.*`) are found through the binding layer's own `_MODULES`,
+ so nothing here has to know which packages a table happened to bind. `pythonx.*` is dropped so
+ the next test imports this package's files afresh against the next layer.
+ """
+ binding = sys.modules.get(BINDING_MODULE)
+ if binding is not None:
+ finder_type = getattr(binding, "_Finder", None)
+ if finder_type is not None:
+ sys.meta_path[:] = [f for f in sys.meta_path if not isinstance(f, finder_type)]
+ adapted = {module.__name__ for module in getattr(binding, "_MODULES", ())}
+ seen = set(getattr(binding, "_PACKAGES_SEEN", ()))
+ for name in [n for n in sys.modules if n in adapted or n in seen]:
+ del sys.modules[name]
+ for name in [n for n in sys.modules if _owned(n)]:
+ del sys.modules[name]
diff --git a/tests/fake_host.py b/tests/fake_host.py
new file mode 100644
index 0000000..c9a9237
--- /dev/null
+++ b/tests/fake_host.py
@@ -0,0 +1,547 @@
+"""A stand-in for the Kotlin host: `_pm_resolve`, `_pm_invoke`, `_pm_release`, and a table.
+
+The three names in `__main__` are the *whole* Python-facing surface of the binder
+(`docs/pythonx-adapter-design.md` §2.4). Everything `pythonx` does above them -- the finder, the
+name rule, the overload dispatcher, the receiver proxies -- is Python, so all of it can be exercised
+without a JVM, an emulator or a `Composer`, provided something answers those three names.
+
+**The table is a transcription of `ComposeShapedFragment.kt`**, entry for entry, name for name,
+including `` in slot 0 and `paramHasDefault`. That fixture is itself pinned against the
+real walked `androidx.compose.foundation.layout.padding__Dp` by
+`PythonxAdapterTest.shapeMatchesTheWalkedEntries`, so these rows are the shape the artefact walker
+actually produces out of `foundation-layout-desktop-1.6.11.jar` -- not a convenient simplification.
+
+**The state rows are shaped after python-multiplatform `31c092f0` (#38), not transcribed from a
+walked jar.** `KotlinSurface.kt` (the describe docs) and `PythonxAdapter.kt` (`_register_table`,
+`_read_property`, `_write_property`, `_coerce`) define them, and the fields modelled are:
+`androidx.compose.runtime.mutableStateOf` -- `kind` FUNCTION, one slot `value` tagged OBJECT
+declared `kotlin.Any` (an unbounded type parameter, the spelling `_KOTLIN_ANY` reads), returning an
+OBJECT of `androidx.compose.runtime.MutableState`; `androidx.compose.runtime.MutableState.value` --
+`kind` GETTER, arity 0, `receiver_type_name` `MutableState` (the receiver is *not* a slot, but the
+adapter sends its handle in `args[0]`), returning OBJECT `kotlin.Any`; and
+`androidx.compose.runtime.MutableState.value=` -- `kind` SETTER, whose leaf ends in `=`, one slot
+`value` OBJECT `kotlin.Any`, returning `kotlin.Unit`. A `kotlin.Any` slot carries a Python object as
+itself and a Kotlin object as its handle, as `_coerce` does; the stub keeps the Python object.
+No walked row for these exists in this repository, so the shape is only as faithful as that reading.
+
+**The text-field rows are shaped after the stubs, not a walked jar** (python-multiplatform `26485a02`,
+which includes #73; the `kotlin-stubs` artefact's `androidx/compose/foundation/text/input/__init__.pyi`
+and the TextField overloads of `androidx/compose/material3/__init__.pyi`). Modelled:
+`TextFieldState__String_TextRange` (the constructor, named like a constructor-shaped function, both
+slots defaulted, returning OBJECT `TextFieldState`); `rememberTextFieldState` (a `@Composable`:
+`initialText`, `initialSelection`, then `$composer`, `$changed`, `$default` -- the slot names
+`PythonxAdapter` reads as the composable flag); `TextFieldState.text` (GETTER, receiver in `args[0]`,
+returning STRING declared `kotlin.CharSequence`, which the stub types `str`);
+`setTextAndPlaceCursorAtEnd` and `clearText` (FUNCTION, extension, `` slot 0 typed
+`TextFieldState`, as the stub's module functions take `receiver, /`); and two `TextField`
+overloads, `TextField__TextFieldState` (`state`, `modifier`, `enabled`, `readOnly`, `isError`, composable)
+and `TextField__String` (`value`, `modifier`, composable). Those two keep a subset of the real
+parameters: `label` and `onValueChange` are function-typed slots, and a function slot needs the
+binder's `NewFunction` rows, which this host does not carry. Neither draws; a call is logged in
+`composable_calls`. `TextRange` is an opaque OBJECT here; the binder's #78 caveat (a companion
+module shadowing `TextRange(2)`) is not modelled.
+
+What this does **not** prove: that the Kotlin half marshals correctly, that Compose's own `padding`
+runs, or that a handle is released on the Kotlin side. Those are
+`WalkedArtifactComposeModifierTest` and `PythonxAdapterTest`, and they live in the other repository
+because they need a classpath. What is proved here is the Python half, which is where every line of
+`pythonx` is.
+"""
+
+from __future__ import annotations
+
+import sys
+
+MODIFIER = "androidx.compose.ui.Modifier"
+DP = "androidx.compose.ui.unit.Dp"
+PADDING_VALUES = "androidx.compose.foundation.layout.PaddingValues"
+TEXT_UNIT = "androidx.compose.ui.unit.TextUnit"
+
+ARRANGEMENT = "androidx.compose.foundation.layout.Arrangement"
+ARRANGEMENT_HORIZONTAL = ARRANGEMENT + ".Horizontal"
+ARRANGEMENT_VERTICAL = ARRANGEMENT + ".Vertical"
+ARRANGEMENT_BOTH = ARRANGEMENT + ".HorizontalOrVertical"
+ALIGNMENT = "androidx.compose.ui.Alignment"
+ALIGNMENT_HORIZONTAL = ALIGNMENT + ".Horizontal"
+ALIGNMENT_VERTICAL = ALIGNMENT + ".Vertical"
+
+KOTLIN_ANY = "kotlin.Any"
+RUNTIME = "androidx.compose.runtime"
+MUTABLE_STATE = RUNTIME + ".MutableState"
+
+ICONS_PACKAGE = "androidx.compose.material.icons"
+ICONS = ICONS_PACKAGE + ".Icons"
+ICONS_FILLED = ICONS + ".Filled"
+IMAGE_VECTOR = "androidx.compose.ui.graphics.vector.ImageVector"
+
+TEXT_INPUT = "androidx.compose.foundation.text.input"
+TEXT_FIELD_STATE = TEXT_INPUT + ".TextFieldState"
+TEXT_RANGE = "androidx.compose.ui.text.TextRange"
+MATERIAL3 = "androidx.compose.material3"
+
+EMPTY_MODIFIER = "androidx.compose.ui.emptyModifier"
+"""The one entry the real walker does **not** produce; see `ComposeShapedFragment.EMPTY_MODIFIER`.
+
+`Modifier` as an expression is `Modifier.Companion`, an object, and the walker binds functions. So
+against real Compose there is no bound name for the empty modifier and the class-object spelling
+`Modifier.padding(16)` has nothing to start from. Keeping the fixture's name here keeps that fact
+visible rather than papering over it.
+"""
+
+
+class StubModifier:
+ """What a `Modifier` is for this fixture: the ordered list of what was applied to it."""
+
+ __slots__ = ("elements",)
+
+ def __init__(self, elements=()):
+ self.elements = tuple(elements)
+
+ def plus(self, element):
+ return StubModifier(self.elements + (element,))
+
+ def describe(self):
+ return " -> ".join(self.elements) if self.elements else ""
+
+
+class StubConstant:
+ """What an object constant is for this fixture: its name, so a test can see which one arrived."""
+
+ __slots__ = ("label",)
+
+ def __init__(self, label):
+ self.label = label
+
+
+class StubIconSet:
+ """`Icons.Filled`: the one object `Icons.Default` resolves to, so a test can tell it was reached."""
+
+ __slots__ = ()
+
+
+class StubTextFieldState:
+ """A `TextFieldState` for this fixture: the committed text, which is all Python ever reads."""
+
+ __slots__ = ("text",)
+
+ def __init__(self, text=""):
+ self.text = text
+
+
+class StubPaddingValues:
+ """An ordinary object parameter, so two arity-2 overloads differ by declared type alone."""
+
+ __slots__ = ("label",)
+
+ def __init__(self, label):
+ self.label = label
+
+
+class StubState:
+ """A `MutableState` for this fixture: one value, and a log of what was written to it."""
+
+ __slots__ = ("value", "writes")
+
+ def __init__(self, value):
+ self.value = value
+ self.writes = [value]
+
+ def write(self, value):
+ self.value = value
+ self.writes.append(value)
+
+
+def _dp(value):
+ # `ComposeShapedFragment.dp` is `(value as Double).toString()`, so 16 renders as "16.0".
+ return str(float(value))
+
+
+class FakeHost:
+ """Owns the entry table, the handle table, and the call log."""
+
+ def __init__(self):
+ self.calls = []
+ self.released = []
+ self._entries = {}
+ self._order = []
+ self._handles = {}
+ self._next_handle = 1
+ self.filled = StubIconSet()
+ self.composable_calls = []
+ self.last_text_field_flags = None
+ self.last_text_field_modifier = None
+ self._composer = None
+ self._build()
+
+ # ------------------------------------------------------------------ the boundary (3 names)
+
+ def resolve(self, name_bytes):
+ name = name_bytes.decode("utf-8") if isinstance(name_bytes, bytes) else name_bytes
+ if name not in self._entries:
+ return -1
+ return self._order.index(name)
+
+ def invoke(self, handle, args):
+ name = self._order[handle]
+ row, body = self._entries[name]
+ tags = row[5]
+ property_row = row[2] in ("GETTER", "SETTER")
+ # A property's receiver is not one of its slots (`CallableKind.GETTER`): its handle is
+ # `args[0]` and the declared slots follow it.
+ slots = args[1:] if property_row else args
+ unpacked = [
+ self._unpack(value, tags[index], row[6][index]) for index, value in enumerate(slots)
+ ]
+ if property_row:
+ unpacked.insert(0, self._object(args[0]))
+ result = body(unpacked)
+ if row[7] == "OBJECT":
+ if row[8] is None:
+ return result # `unboxScalar`: a Python scalar or None, never a handle
+ if row[8] != KOTLIN_ANY:
+ return self._handle(result)
+ if isinstance(result, (bool, int, float, str)):
+ # A scalar held in a `kotlin.Any` is a Kotlin box, so it crosses as a handle and the
+ # binding layer unboxes it through `unboxScalar` (python-multiplatform #69).
+ return self._handle(result)
+ return result
+
+ def _unpack(self, value, tag, type_name):
+ if tag != "OBJECT" or value is None:
+ return value # a null reference crosses as None
+ if type_name == KOTLIN_ANY and not self._is_handle(value):
+ return value # a Python object crossing an `Any?` slot as itself
+ return self._object(value)
+
+ def _is_handle(self, value):
+ return isinstance(value, int) and not isinstance(value, bool) and value in self._handles
+
+ def release(self, handle):
+ self.released.append(handle)
+ self._handles.pop(handle, None)
+ return 0
+
+ def bind(self):
+ """Publish the three names in `__main__`, where `pythonx._boundary()` looks for them."""
+ main = sys.modules["__main__"]
+ main._pm_resolve = self.resolve
+ main._pm_invoke = self.invoke
+ main._pm_release = self.release
+
+ def unbind(self):
+ main = sys.modules["__main__"]
+ for name in ("_pm_resolve", "_pm_invoke", "_pm_release"):
+ if hasattr(main, name):
+ delattr(main, name)
+
+ def rows(self):
+ """The 12-tuples `PythonxAdapter.renderTable` emits, in table order."""
+ return tuple(self._entries[name][0] for name in self._order)
+
+ def register(self, adapter):
+ adapter._register_table(self.rows())
+
+ # ------------------------------------------------------------------ handles
+
+ def _handle(self, obj):
+ handle = self._next_handle
+ self._next_handle += 1
+ self._handles[handle] = obj
+ return handle
+
+ def _object(self, handle):
+ if handle not in self._handles:
+ raise AssertionError(f"no live handle {handle!r}")
+ return self._handles[handle]
+
+ def composer(self):
+ """A handle standing in for the `Composer` a composition would push (`push_composer`)."""
+ if self._composer is None:
+ self._composer = self._handle(object())
+ return self._composer
+
+ def live_handles(self):
+ return set(self._handles)
+
+ # ------------------------------------------------------------------ the table
+
+ def _add(self, name, arity, param_names, param_tags, param_type_names, return_tag,
+ return_type_name, is_extension, receiver_type_name, param_has_default, body,
+ kind="FUNCTION"):
+ row = (
+ name, arity, kind, False, tuple(param_names), tuple(param_tags),
+ tuple(param_type_names), return_tag, return_type_name, is_extension,
+ receiver_type_name, tuple(param_has_default),
+ )
+ self._entries[name] = (row, body)
+ self._order.append(name)
+
+ def _extension(self, name, param_names, param_tags, param_type_names, param_has_default, body):
+ # Slot 0 spelled the way the walker spells it: counted in arity, named ``, typed
+ # with the receiver's Kotlin type name, never defaulted.
+ self._add(
+ name=name,
+ arity=len(param_tags) + 1,
+ param_names=("",) + tuple(param_names),
+ param_tags=("OBJECT",) + tuple(param_tags),
+ param_type_names=(MODIFIER,) + tuple(param_type_names),
+ return_tag="OBJECT",
+ return_type_name=MODIFIER,
+ is_extension=True,
+ receiver_type_name=MODIFIER,
+ param_has_default=(False,) + tuple(param_has_default),
+ body=lambda args: body(args[0], args[1:]),
+ )
+
+ def _logged(self, label, render):
+ def body(receiver, args):
+ self.calls.append(label)
+ return receiver.plus(render(args))
+
+ return body
+
+ def _build(self):
+ self._scalar_boxes()
+ self._build_text_field()
+ self._add(
+ EMPTY_MODIFIER, 0, (), (), (), "OBJECT", MODIFIER, False, None, (),
+ lambda args: StubModifier(),
+ )
+ self._add(
+ "androidx.compose.ui.describeModifier", 1, ("modifier",), ("OBJECT",), (MODIFIER,),
+ "STRING", "kotlin.String", False, None, (False,),
+ lambda args: args[0].describe(),
+ )
+ self._extension(
+ "androidx.compose.foundation.layout.padding__Dp",
+ ("all",), ("FLOAT",), (DP,), (False,),
+ self._logged("padding__Dp", lambda a: f"padding({_dp(a[0])})"),
+ )
+ self._extension(
+ "androidx.compose.foundation.layout.padding__Dp_Dp",
+ ("horizontal", "vertical"), ("FLOAT", "FLOAT"), (DP, DP), (True, True),
+ self._logged("padding__Dp_Dp", lambda a: f"padding(h={_dp(a[0])}, v={_dp(a[1])})"),
+ )
+ self._extension(
+ "androidx.compose.foundation.layout.padding__Dp_Dp_Dp_Dp",
+ ("start", "top", "end", "bottom"), ("FLOAT",) * 4, (DP,) * 4, (True,) * 4,
+ self._logged(
+ "padding__Dp_Dp_Dp_Dp",
+ lambda a: (
+ f"padding(s={_dp(a[0])}, t={_dp(a[1])}, "
+ f"e={_dp(a[2])}, b={_dp(a[3])})"
+ ),
+ ),
+ )
+ self._extension(
+ "androidx.compose.foundation.layout.padding__PaddingValues",
+ ("paddingValues",), ("OBJECT",), (PADDING_VALUES,), (False,),
+ self._logged("padding__PaddingValues", lambda a: f"padding({a[0].label})"),
+ )
+ self._add(
+ "androidx.compose.foundation.layout.paddingValuesOf", 1, ("all",), ("FLOAT",), (DP,),
+ "OBJECT", PADDING_VALUES, False, None, (False,),
+ lambda args: StubPaddingValues(f"pv({_dp(args[0])})"),
+ )
+ self._extension(
+ "androidx.compose.foundation.layout.size__Dp",
+ ("size",), ("FLOAT",), (DP,), (False,),
+ self._logged("size__Dp", lambda a: f"size({_dp(a[0])})"),
+ )
+ self._extension(
+ "androidx.compose.foundation.layout.fillMaxWidth",
+ (), (), (), (),
+ self._logged("fillMaxWidth", lambda a: "fillMaxWidth"),
+ )
+ self._extension(
+ # A genuine `kotlin.Float`, not a value class: the same tag as `Dp` over a different
+ # declared type, which is the only machine-checkable form of "this might pack".
+ "androidx.compose.ui.draw.zIndex",
+ ("zIndex",), ("FLOAT",), ("kotlin.Float",), (False,),
+ self._logged("zIndex", lambda a: f"zIndex({_dp(a[0])})"),
+ )
+ self._extension(
+ # A packed value class: raw 16 decodes as `TextUnit.Unspecified`, silently. Nothing
+ # binds such a parameter today; the entry exists so the refusal has something to refuse.
+ "androidx.compose.foundation.layout.paddingFromBaseline__TextUnit",
+ ("top",), ("FLOAT",), (TEXT_UNIT,), (False,),
+ self._logged("paddingFromBaseline__TextUnit",
+ lambda a: f"paddingFromBaseline({_dp(a[0])})"),
+ )
+ self._add(
+ # The name the snake -> camel rule cannot invert. Fictional, and placed in a mapped
+ # package (`pythonx.compose.ui`) so the re-export rule is what reaches it.
+ "androidx.compose.ui.toURLString", 1, ("raw",), ("STRING",), ("kotlin.String",),
+ "STRING", "kotlin.String", False, None, (False,),
+ lambda args: "url:" + args[0],
+ )
+ for layout_composable in ("Column", "Row", "Spacer"):
+ # Shape only: the notebook imports these from material3 and Kotlin declares them in
+ # foundation.layout. Nothing here composes; the tests check which object a name reaches.
+ self._add(
+ f"androidx.compose.foundation.layout.{layout_composable}", 1, ("modifier",),
+ ("OBJECT",), (MODIFIER,), "UNIT", "kotlin.Unit", False, None, (True,),
+ lambda args: None,
+ )
+ # Object constants, the way `ArtifactScanner.constantsOf` binds them: a `STATIC_GETTER` with no
+ # parameters, named `..`, returning the constant's declared type.
+ for constant, declared in (
+ ("End", ARRANGEMENT_HORIZONTAL), ("Start", ARRANGEMENT_HORIZONTAL),
+ ("Top", ARRANGEMENT_VERTICAL), ("SpaceBetween", ARRANGEMENT_BOTH),
+ ):
+ self._constant(f"{ARRANGEMENT}.{constant}", declared)
+ for constant, declared in (
+ ("End", ALIGNMENT_HORIZONTAL), ("CenterHorizontally", ALIGNMENT_HORIZONTAL),
+ ("Top", ALIGNMENT_VERTICAL), ("Center", ALIGNMENT),
+ ):
+ self._constant(f"{ALIGNMENT}.{constant}", declared)
+ self._add(
+ # A function inside an object: reached through the object, camelCase in Kotlin.
+ f"{ARRANGEMENT}.spacedBy", 1, ("space",), ("FLOAT",), (DP,),
+ "OBJECT", ARRANGEMENT_BOTH, False, None, (False,),
+ lambda args: StubConstant(f"spacedBy({_dp(args[0])})"),
+ )
+
+ # Icons, shaped after python-multiplatform #37/#38 as the ecosystem reports them: `Icons.Default`
+ # is a `STATIC_GETTER` of the object `Icons` whose declared type is `Icons.Filled` (the
+ # property's type, not `Default`'s own), and `Icons.Default.Add` is the top-level extension
+ # property `AddKt.getAdd(Icons$Filled)` -- a `GETTER` named by its package and property, read on
+ # `Icons.Filled`, whose receiver is `args[0]` and not a slot, returning an `ImageVector`.
+ self._add(
+ f"{ICONS}.Default", 0, (), (), (), "OBJECT", ICONS_FILLED, False, None, (),
+ lambda args: self.filled, kind="STATIC_GETTER",
+ )
+ for icon in ("Add", "Edit"):
+ self._add(
+ f"{ICONS_PACKAGE}.filled.{icon}", 0, (), (), (), "OBJECT", IMAGE_VECTOR, False,
+ ICONS_FILLED, (),
+ lambda args, icon=icon: self._read_icon(icon), kind="GETTER",
+ )
+ self._add(
+ # A generic function: `T` is unbounded, so its slot is declared `kotlin.Any`.
+ f"{RUNTIME}.mutableStateOf", 1, ("value",), ("OBJECT",), (KOTLIN_ANY,),
+ "OBJECT", MUTABLE_STATE, False, None, (False,),
+ lambda args: StubState(args[0]),
+ )
+ self._add(
+ f"{MUTABLE_STATE}.value", 0, (), (), (), "OBJECT", KOTLIN_ANY, False, MUTABLE_STATE, (),
+ lambda args: args[0].value, kind="GETTER",
+ )
+ self._add(
+ f"{MUTABLE_STATE}.value=", 1, ("value",), ("OBJECT",), (KOTLIN_ANY,),
+ "UNIT", "kotlin.Unit", False, MUTABLE_STATE, (False,),
+ lambda args: args[0].write(args[1]), kind="SETTER",
+ )
+
+ def _composable(self, name, params, body, returns=None):
+ """A `@Composable` row: `params` are (name, tag, type, has_default), then the synthetic slots.
+
+ `$composer`, `$changed` and `$default` close the row the way the Compose compiler spells
+ them; `PythonxAdapter` recognises a composable by `$composer` alone and fills the three.
+ """
+ names = tuple(p[0] for p in params) + ("$composer", "$changed", "$default")
+ tags = tuple(p[1] for p in params) + ("OBJECT", "INT", "INT")
+ types = tuple(p[2] for p in params) + ("androidx.compose.runtime.Composer", "kotlin.Int", "kotlin.Int")
+ defaults = tuple(p[3] for p in params) + (False, False, False)
+ label = name.rpartition(".")[2]
+
+ def run(args):
+ self.composable_calls.append(label)
+ return body(args)
+
+ return_tag, return_type = ("UNIT", "kotlin.Unit") if returns is None else ("OBJECT", returns)
+ self._add(name, len(names), names, tags, types, return_tag, return_type, False, None,
+ defaults, run)
+
+ def _build_text_field(self):
+ text_args = (("initialText", "STRING", "kotlin.String", True),
+ ("initialSelection", "OBJECT", TEXT_RANGE, True))
+ self._add(
+ f"{TEXT_FIELD_STATE}__String_TextRange", 2, ("initialText", "initialSelection"),
+ ("STRING", "OBJECT"), ("kotlin.String", TEXT_RANGE), "OBJECT", TEXT_FIELD_STATE,
+ False, None, (True, True),
+ lambda args: StubTextFieldState("" if args[0] is None else args[0]),
+ )
+ self._composable(
+ f"{TEXT_INPUT}.rememberTextFieldState", text_args,
+ lambda args: StubTextFieldState("" if args[0] is None else args[0]), TEXT_FIELD_STATE,
+ )
+ self._add(
+ f"{TEXT_FIELD_STATE}.text", 0, (), (), (), "STRING", "kotlin.CharSequence", False,
+ TEXT_FIELD_STATE, (), lambda args: args[0].text, kind="GETTER",
+ )
+
+ def write(label, effect):
+ def body(args):
+ self.calls.append(label)
+ effect(args)
+
+ return body
+
+ def place_at_end(args):
+ args[0].text = args[1]
+
+ def clear(args):
+ args[0].text = ""
+
+ for leaf, names, tags, types, effect in (
+ ("setTextAndPlaceCursorAtEnd", ("", "text"), ("OBJECT", "STRING"),
+ (TEXT_FIELD_STATE, "kotlin.String"), place_at_end),
+ ("clearText", ("",), ("OBJECT",), (TEXT_FIELD_STATE,), clear),
+ ):
+ self._add(
+ f"{TEXT_INPUT}.{leaf}", len(names), names, tags, types, "UNIT", "kotlin.Unit", True,
+ TEXT_FIELD_STATE, (False,) * len(names), write(leaf, effect),
+ )
+
+ def remember_flags(args):
+ self.last_text_field_flags = {"readOnly": args[3], "isError": args[4]}
+ self.last_text_field_modifier = None if args[1] is None else args[1].describe()
+
+ self._composable(
+ f"{MATERIAL3}.TextField__TextFieldState",
+ (("state", "OBJECT", TEXT_FIELD_STATE, False), ("modifier", "OBJECT", MODIFIER, True),
+ ("enabled", "BOOLEAN", "kotlin.Boolean", True),
+ ("readOnly", "BOOLEAN", "kotlin.Boolean", True),
+ ("isError", "BOOLEAN", "kotlin.Boolean", True)),
+ remember_flags,
+ )
+ self._composable(
+ f"{MATERIAL3}.TextField__String",
+ (("value", "STRING", "kotlin.String", False), ("modifier", "OBJECT", MODIFIER, True)),
+ lambda args: None,
+ )
+
+ def _read_icon(self, icon):
+ self.calls.append(f"Icons.Filled.{icon}")
+ return StubConstant(icon)
+
+ def _scalar_boxes(self):
+ """`PythonCallables`' box entries, the shape python-multiplatform 26485a02 (#69) registers.
+
+ `PythonxAdapter._box_scalar` turns a Python scalar bound for a `kotlin.Any` slot into the
+ handle of a Kotlin box by calling one of these; `unboxScalar` turns a handle read back out of
+ such a slot into the scalar again, releasing it, or answers None for any other object.
+ Names and fields are those of `PythonCallables.kt` (`boxEntry`, `UNBOX_SCALAR`).
+ """
+ prefix = "python.multiplatform.ffi.pythonx.PythonCallables."
+ for leaf, tag, type_name in (
+ ("boxInt", "INT", "kotlin.Int"), ("boxLong", "INT", "kotlin.Long"),
+ ("boxDouble", "FLOAT", "kotlin.Double"), ("boxBoolean", "BOOLEAN", "kotlin.Boolean"),
+ ("boxString", "STRING", "kotlin.String"),
+ ):
+ self._add(prefix + leaf, 1, ("value",), (tag,), (type_name,), "INT", None, False, None,
+ (False,), lambda args: self._handle(args[0]))
+ self._add(prefix + "unboxScalar", 1, ("handle",), ("INT",), ("kotlin.Long",), "OBJECT", None,
+ False, None, (False,), self._unbox)
+
+ def _unbox(self, args):
+ held = self._handles.get(args[0])
+ if not isinstance(held, (bool, int, float, str)):
+ return None
+ self.release(args[0])
+ return held
+
+ def _constant(self, name, declared):
+ self._add(name, 0, (), (), (), "OBJECT", declared, False, None, (),
+ lambda args, label=name.rpartition(".")[2]: StubConstant(label), kind="STATIC_GETTER")
diff --git a/tests/fixtures/kotlin_stubs/androidx/compose/foundation/layout/Arrangement/__init__.pyi b/tests/fixtures/kotlin_stubs/androidx/compose/foundation/layout/Arrangement/__init__.pyi
new file mode 100644
index 0000000..9617e9c
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs/androidx/compose/foundation/layout/Arrangement/__init__.pyi
@@ -0,0 +1,7 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+End: int
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.End(): androidx.compose.foundation.layout.Arrangement.Horizontal"""
+
+SpaceBetween: int
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.SpaceBetween(): androidx.compose.foundation.layout.Arrangement.HorizontalOrVertical"""
diff --git a/tests/fixtures/kotlin_stubs/androidx/compose/foundation/layout/__init__.pyi b/tests/fixtures/kotlin_stubs/androidx/compose/foundation/layout/__init__.pyi
new file mode 100644
index 0000000..ce77526
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs/androidx/compose/foundation/layout/__init__.pyi
@@ -0,0 +1,33 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+def padding__Dp(receiver: int, /, all: float) -> int:
+ """Kotlin: androidx.compose.foundation.layout.padding(all: androidx.compose.ui.unit.Dp): androidx.compose.ui.Modifier"""
+ ...
+
+def padding__Dp_Dp(receiver: int, /, horizontal: float = ..., vertical: float = ...) -> int:
+ """Kotlin: androidx.compose.foundation.layout.padding(horizontal: androidx.compose.ui.unit.Dp, vertical: androidx.compose.ui.unit.Dp): androidx.compose.ui.Modifier"""
+ ...
+
+def padding__Dp_Dp_Dp_Dp(receiver: int, /, start: float = ..., top: float = ..., end: float = ..., bottom: float = ...) -> int:
+ """Kotlin: androidx.compose.foundation.layout.padding(start, top, end, bottom): androidx.compose.ui.Modifier"""
+ ...
+
+def padding__PaddingValues(receiver: int, /, paddingValues: int) -> int:
+ """Kotlin: androidx.compose.foundation.layout.padding(paddingValues: androidx.compose.foundation.layout.PaddingValues): androidx.compose.ui.Modifier"""
+ ...
+
+def paddingValuesOf(all: float) -> int:
+ """Kotlin: androidx.compose.foundation.layout.paddingValuesOf(all: androidx.compose.ui.unit.Dp): androidx.compose.foundation.layout.PaddingValues"""
+ ...
+
+def size__Dp(receiver: int, /, size: float) -> int:
+ """Kotlin: androidx.compose.foundation.layout.size(size: androidx.compose.ui.unit.Dp): androidx.compose.ui.Modifier"""
+ ...
+
+def fillMaxWidth(receiver: int, /) -> int:
+ """Kotlin: androidx.compose.foundation.layout.fillMaxWidth(): androidx.compose.ui.Modifier"""
+ ...
+
+def scan(receiver: int, first: float, __a1: float, /, last: float = ...) -> int:
+ """A parameter named like a Python keyword: positional-only and anonymous, never renamed."""
+ ...
diff --git a/tests/fixtures/kotlin_stubs/androidx/compose/ui/__init__.pyi b/tests/fixtures/kotlin_stubs/androidx/compose/ui/__init__.pyi
new file mode 100644
index 0000000..26b27e5
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs/androidx/compose/ui/__init__.pyi
@@ -0,0 +1,9 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+def describeModifier(modifier: int) -> str:
+ """Kotlin: androidx.compose.ui.describeModifier(modifier: androidx.compose.ui.Modifier): kotlin.String"""
+ ...
+
+def toURLString(raw: str) -> str:
+ """Kotlin: androidx.compose.ui.toURLString(raw: kotlin.String): kotlin.String"""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v2/androidx/compose/foundation/layout/Arrangement/__init__.pyi b/tests/fixtures/kotlin_stubs_v2/androidx/compose/foundation/layout/Arrangement/__init__.pyi
new file mode 100644
index 0000000..e722173
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v2/androidx/compose/foundation/layout/Arrangement/__init__.pyi
@@ -0,0 +1,19 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+
+End: _t.Any
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.End(): androidx.compose.foundation.layout.Arrangement.Horizontal"""
+
+SpaceBetween: _t.Any
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.SpaceBetween(): androidx.compose.foundation.layout.Arrangement.HorizontalOrVertical"""
+
+Start: _t.Any
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.Start(): androidx.compose.foundation.layout.Arrangement.Horizontal"""
+
+Top: _t.Any
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.Top(): androidx.compose.foundation.layout.Arrangement.Vertical"""
+
+def spacedBy(space: float) -> _t.Any:
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.spacedBy(space: androidx.compose.ui.unit.Dp): androidx.compose.foundation.layout.Arrangement.HorizontalOrVertical"""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v2/androidx/compose/foundation/layout/__init__.pyi b/tests/fixtures/kotlin_stubs_v2/androidx/compose/foundation/layout/__init__.pyi
new file mode 100644
index 0000000..3edfd0e
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v2/androidx/compose/foundation/layout/__init__.pyi
@@ -0,0 +1,61 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+import androidx.compose.ui
+import androidx.compose.ui.draw
+
+class ColumnScope:
+ """Kotlin: androidx.compose.foundation.layout.ColumnScope"""
+
+def Column(modifier: androidx.compose.ui.Modifier = ..., verticalArrangement: _t.Any = ..., *, content: _t.Callable[[ColumnScope], None]) -> None:
+ """Kotlin: androidx.compose.foundation.layout.Column(modifier: androidx.compose.ui.Modifier, verticalArrangement: androidx.compose.foundation.layout.Arrangement.Vertical, content: kotlin.Function1): kotlin.Unit"""
+ ...
+
+def Row(modifier: androidx.compose.ui.Modifier = ...) -> None:
+ """Kotlin: androidx.compose.foundation.layout.Row(modifier: androidx.compose.ui.Modifier): kotlin.Unit"""
+ ...
+
+def Spacer(modifier: androidx.compose.ui.Modifier = ...) -> None:
+ """Kotlin: androidx.compose.foundation.layout.Spacer(modifier: androidx.compose.ui.Modifier): kotlin.Unit"""
+ ...
+
+def fillMaxWidth(receiver: androidx.compose.ui.Modifier, /) -> androidx.compose.ui.Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.fillMaxWidth(): androidx.compose.ui.Modifier"""
+ ...
+
+def padding__Dp(receiver: androidx.compose.ui.Modifier, /, all: float) -> androidx.compose.ui.Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.padding(all: androidx.compose.ui.unit.Dp): androidx.compose.ui.Modifier"""
+ ...
+
+def padding__Dp_Dp(receiver: androidx.compose.ui.Modifier, /, horizontal: float = ..., vertical: float = ...) -> androidx.compose.ui.Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.padding(horizontal: androidx.compose.ui.unit.Dp, vertical: androidx.compose.ui.unit.Dp): androidx.compose.ui.Modifier"""
+ ...
+
+def padding__Dp_Dp_Dp_Dp(receiver: androidx.compose.ui.Modifier, /, start: float = ..., top: float = ..., end: float = ..., bottom: float = ...) -> androidx.compose.ui.Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.padding(start: androidx.compose.ui.unit.Dp, top: androidx.compose.ui.unit.Dp, end: androidx.compose.ui.unit.Dp, bottom: androidx.compose.ui.unit.Dp): androidx.compose.ui.Modifier"""
+ ...
+
+def padding__PaddingValues(receiver: androidx.compose.ui.Modifier, /, paddingValues: _t.Any) -> androidx.compose.ui.Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.padding(paddingValues: androidx.compose.foundation.layout.PaddingValues): androidx.compose.ui.Modifier"""
+ ...
+
+def paddingValuesOf(all: float) -> _t.Any:
+ """Kotlin: androidx.compose.foundation.layout.paddingValuesOf(all: androidx.compose.ui.unit.Dp): androidx.compose.foundation.layout.PaddingValues"""
+ ...
+
+def size__Dp(receiver: androidx.compose.ui.Modifier, /, size: float) -> androidx.compose.ui.Modifier:
+ """Kotlin: androidx.compose.ui.Modifier.size(size: androidx.compose.ui.unit.Dp): androidx.compose.ui.Modifier"""
+ ...
+
+def zIndexOf(receiver: androidx.compose.ui.Modifier, /, zIndex: float) -> androidx.compose.ui.draw.DrawResult:
+ """A return type in a Kotlin package the manifest does not map."""
+ ...
+
+@_t.overload
+def padding(receiver: androidx.compose.ui.Modifier, /, all: float) -> androidx.compose.ui.Modifier: ...
+@_t.overload
+def padding(receiver: androidx.compose.ui.Modifier, /, horizontal: float = ..., vertical: float = ...) -> androidx.compose.ui.Modifier: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def padding(receiver: androidx.compose.ui.Modifier, /, start: float = ..., top: float = ..., end: float = ..., bottom: float = ...) -> androidx.compose.ui.Modifier: ... # type: ignore[overload-cannot-match]
+@_t.overload
+def padding(receiver: androidx.compose.ui.Modifier, /, paddingValues: _t.Any) -> androidx.compose.ui.Modifier: ... # type: ignore[overload-cannot-match]
diff --git a/tests/fixtures/kotlin_stubs_v2/androidx/compose/material3/__init__.pyi b/tests/fixtures/kotlin_stubs_v2/androidx/compose/material3/__init__.pyi
new file mode 100644
index 0000000..1784714
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v2/androidx/compose/material3/__init__.pyi
@@ -0,0 +1,10 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+import androidx.compose.ui
+import androidx.compose.ui.text
+import kotlin.collections
+
+def Text(text: str, modifier: androidx.compose.ui.Modifier = ..., fontSize: _t.Any = ..., inlineContent: kotlin.collections.Map = ..., onTextLayout: _t.Callable[[androidx.compose.ui.text.TextLayoutResult], None] | None = ..., style: androidx.compose.ui.text.ParagraphStyle = ...) -> None:
+ """Kotlin: androidx.compose.material3.Text(text: kotlin.String, modifier: androidx.compose.ui.Modifier, fontSize: androidx.compose.ui.unit.TextUnit, inlineContent: kotlin.collections.Map, onTextLayout: kotlin.Function1, style: androidx.compose.ui.text.ParagraphStyle): kotlin.Unit"""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v2/androidx/compose/ui/__init__.pyi b/tests/fixtures/kotlin_stubs_v2/androidx/compose/ui/__init__.pyi
new file mode 100644
index 0000000..5e2af2b
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v2/androidx/compose/ui/__init__.pyi
@@ -0,0 +1,45 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+import androidx.compose.foundation.layout
+
+class _Modifier_fillMaxWidth(_t.Protocol):
+ def __call__(self) -> Modifier: ...
+
+class _Modifier_padding(_t.Protocol):
+ @_t.overload
+ def __call__(self, all: float) -> Modifier: ...
+ @_t.overload
+ def __call__(self, paddingValues: _t.Any) -> Modifier: ... # type: ignore[overload-cannot-match]
+
+class _Modifier_padding__PaddingValues(_t.Protocol):
+ def __call__(self, paddingValues: _t.Any) -> Modifier: ...
+
+class _Modifier_zIndex(_t.Protocol):
+ def __call__(self, zIndex: float) -> Modifier: ...
+
+class _Modifier_column(_t.Protocol):
+ def __call__(self, scope: androidx.compose.foundation.layout.ColumnScope) -> Modifier: ...
+
+class Alignment:
+ """Kotlin: androidx.compose.ui.Alignment"""
+ Center: _t.ClassVar[_t.Any]
+ CenterHorizontally: _t.ClassVar[_t.Any]
+ End: _t.ClassVar[_t.Any]
+ Top: _t.ClassVar[_t.Any]
+
+class Modifier:
+ """Kotlin: androidx.compose.ui.Modifier"""
+ column: _t.ClassVar[_Modifier_column]
+ fillMaxWidth: _t.ClassVar[_Modifier_fillMaxWidth]
+ padding: _t.ClassVar[_Modifier_padding]
+ padding__PaddingValues: _t.ClassVar[_Modifier_padding__PaddingValues]
+ zIndex: _t.ClassVar[_Modifier_zIndex]
+
+def describeModifier(modifier: Modifier) -> str:
+ """Kotlin: androidx.compose.ui.describeModifier(modifier: androidx.compose.ui.Modifier): kotlin.String"""
+ ...
+
+def toURLString(raw: str) -> str:
+ """Kotlin: androidx.compose.ui.toURLString(raw: kotlin.String): kotlin.String"""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v2/androidx/compose/ui/text/TextStyle/__init__.pyi b/tests/fixtures/kotlin_stubs_v2/androidx/compose/ui/text/TextStyle/__init__.pyi
new file mode 100644
index 0000000..dd76382
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v2/androidx/compose/ui/text/TextStyle/__init__.pyi
@@ -0,0 +1,6 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+
+Default: _t.Any
+"""Kotlin: androidx.compose.ui.text.TextStyle.Default(): androidx.compose.ui.text.TextStyle"""
diff --git a/tests/fixtures/kotlin_stubs_v2/androidx/compose/ui/text/__init__.pyi b/tests/fixtures/kotlin_stubs_v2/androidx/compose/ui/text/__init__.pyi
new file mode 100644
index 0000000..8da301b
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v2/androidx/compose/ui/text/__init__.pyi
@@ -0,0 +1,10 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+
+class TextLayoutResult:
+ """Kotlin: androidx.compose.ui.text.TextLayoutResult"""
+
+def TextStyle(fontSize: _t.Any = ...) -> _t.Any:
+ """Kotlin: androidx.compose.ui.text.TextStyle(fontSize: androidx.compose.ui.unit.TextUnit): androidx.compose.ui.text.TextStyle"""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v3/androidx/compose/foundation/layout/Arrangement/__init__.pyi b/tests/fixtures/kotlin_stubs_v3/androidx/compose/foundation/layout/Arrangement/__init__.pyi
new file mode 100644
index 0000000..2423a01
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v3/androidx/compose/foundation/layout/Arrangement/__init__.pyi
@@ -0,0 +1,34 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+import androidx.compose.ui.Alignment
+
+class Horizontal:
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.Horizontal"""
+
+class HorizontalOrVertical(Horizontal):
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.HorizontalOrVertical"""
+
+class Vertical:
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.Vertical"""
+
+End: Horizontal
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.End(): androidx.compose.foundation.layout.Arrangement.Horizontal"""
+
+SpaceBetween: HorizontalOrVertical
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.SpaceBetween(): androidx.compose.foundation.layout.Arrangement.HorizontalOrVertical"""
+
+Top: Vertical
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.Top(): androidx.compose.foundation.layout.Arrangement.Vertical"""
+
+def aligned__Horizontal(alignment: androidx.compose.ui.Alignment.Horizontal) -> Horizontal:
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.aligned(alignment: androidx.compose.ui.Alignment.Horizontal): androidx.compose.foundation.layout.Arrangement.Horizontal"""
+ ...
+
+def aligned__Vertical(alignment: androidx.compose.ui.Alignment.Vertical) -> Vertical:
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.aligned(alignment: androidx.compose.ui.Alignment.Vertical): androidx.compose.foundation.layout.Arrangement.Vertical"""
+ ...
+
+def spacedBy__Dp(space: float) -> HorizontalOrVertical:
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.spacedBy(space: androidx.compose.ui.unit.Dp): androidx.compose.foundation.layout.Arrangement.HorizontalOrVertical"""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v3/androidx/compose/foundation/layout/__init__.pyi b/tests/fixtures/kotlin_stubs_v3/androidx/compose/foundation/layout/__init__.pyi
new file mode 100644
index 0000000..a1cea12
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v3/androidx/compose/foundation/layout/__init__.pyi
@@ -0,0 +1,8 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+import androidx.compose.ui
+
+def Column(verticalAlignment: androidx.compose.ui.Alignment.Vertical = ..., horizontalAlignment: androidx.compose.ui.Alignment.Horizontal = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.foundation.layout.Column(verticalAlignment: androidx.compose.ui.Alignment.Vertical, horizontalAlignment: androidx.compose.ui.Alignment.Horizontal, content: kotlin.Function0): kotlin.Unit"""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v3/androidx/compose/ui/Alignment/__init__.pyi b/tests/fixtures/kotlin_stubs_v3/androidx/compose/ui/Alignment/__init__.pyi
new file mode 100644
index 0000000..a8e08b3
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v3/androidx/compose/ui/Alignment/__init__.pyi
@@ -0,0 +1,18 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+
+class Horizontal:
+ """Kotlin: androidx.compose.ui.Alignment.Horizontal"""
+
+class Vertical:
+ """Kotlin: androidx.compose.ui.Alignment.Vertical"""
+
+Center: _t.Any
+"""Kotlin: androidx.compose.ui.Alignment.Center(): androidx.compose.ui.Alignment"""
+
+End: Horizontal
+"""Kotlin: androidx.compose.ui.Alignment.End(): androidx.compose.ui.Alignment.Horizontal"""
+
+Top: Vertical
+"""Kotlin: androidx.compose.ui.Alignment.Top(): androidx.compose.ui.Alignment.Vertical"""
diff --git a/tests/fixtures/kotlin_stubs_v3/androidx/compose/ui/__init__.pyi b/tests/fixtures/kotlin_stubs_v3/androidx/compose/ui/__init__.pyi
new file mode 100644
index 0000000..e7e64fd
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v3/androidx/compose/ui/__init__.pyi
@@ -0,0 +1,23 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+import androidx.compose.ui.unit
+
+class Scene:
+ """Kotlin: androidx.compose.ui.Scene"""
+ @property
+ def layoutDirection(self) -> androidx.compose.ui.unit.LayoutDirection:
+ """Kotlin property: androidx.compose.ui.Scene.layoutDirection (androidx.compose.ui.Scene.layoutDirection: androidx.compose.ui.unit.LayoutDirection)"""
+ ...
+ @layoutDirection.setter
+ def layoutDirection(self, value: androidx.compose.ui.unit.LayoutDirection) -> None:
+ """Kotlin property: androidx.compose.ui.Scene.layoutDirection="""
+ ...
+ @property
+ def isMinimized(self) -> bool:
+ """Kotlin property: androidx.compose.ui.Scene.isMinimized (androidx.compose.ui.Scene.isMinimized: kotlin.Boolean)"""
+ ...
+ @isMinimized.setter
+ def isMinimized(self, value: bool) -> None:
+ """Kotlin property: androidx.compose.ui.Scene.isMinimized="""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v4/androidx/compose/foundation/layout/Arrangement/__init__.pyi b/tests/fixtures/kotlin_stubs_v4/androidx/compose/foundation/layout/Arrangement/__init__.pyi
new file mode 100644
index 0000000..707bdc0
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v4/androidx/compose/foundation/layout/Arrangement/__init__.pyi
@@ -0,0 +1,34 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+import androidx.compose.ui.Alignment
+
+class Horizontal:
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.Horizontal"""
+
+class HorizontalOrVertical(Horizontal, Vertical):
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.HorizontalOrVertical"""
+
+class Vertical:
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.Vertical"""
+
+End: Horizontal
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.End(): androidx.compose.foundation.layout.Arrangement.Horizontal"""
+
+SpaceBetween: HorizontalOrVertical
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.SpaceBetween(): androidx.compose.foundation.layout.Arrangement.HorizontalOrVertical"""
+
+Top: Vertical
+"""Kotlin: androidx.compose.foundation.layout.Arrangement.Top(): androidx.compose.foundation.layout.Arrangement.Vertical"""
+
+def aligned__Horizontal(alignment: androidx.compose.ui.Alignment.Horizontal) -> Horizontal:
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.aligned(alignment: androidx.compose.ui.Alignment.Horizontal): androidx.compose.foundation.layout.Arrangement.Horizontal"""
+ ...
+
+def aligned__Vertical(alignment: androidx.compose.ui.Alignment.Vertical) -> Vertical:
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.aligned(alignment: androidx.compose.ui.Alignment.Vertical): androidx.compose.foundation.layout.Arrangement.Vertical"""
+ ...
+
+def spacedBy__Dp(space: float) -> HorizontalOrVertical:
+ """Kotlin: androidx.compose.foundation.layout.Arrangement.spacedBy(space: androidx.compose.ui.unit.Dp): androidx.compose.foundation.layout.Arrangement.HorizontalOrVertical"""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v4/androidx/compose/foundation/layout/__init__.pyi b/tests/fixtures/kotlin_stubs_v4/androidx/compose/foundation/layout/__init__.pyi
new file mode 100644
index 0000000..a1cea12
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v4/androidx/compose/foundation/layout/__init__.pyi
@@ -0,0 +1,8 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+import androidx.compose.ui
+
+def Column(verticalAlignment: androidx.compose.ui.Alignment.Vertical = ..., horizontalAlignment: androidx.compose.ui.Alignment.Horizontal = ..., *, content: _t.Callable[[], None]) -> None:
+ """Kotlin: androidx.compose.foundation.layout.Column(verticalAlignment: androidx.compose.ui.Alignment.Vertical, horizontalAlignment: androidx.compose.ui.Alignment.Horizontal, content: kotlin.Function0): kotlin.Unit"""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v4/androidx/compose/material/icons/Icons/__init__.pyi b/tests/fixtures/kotlin_stubs_v4/androidx/compose/material/icons/Icons/__init__.pyi
new file mode 100644
index 0000000..6566d35
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v4/androidx/compose/material/icons/Icons/__init__.pyi
@@ -0,0 +1,23 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+import androidx.compose.ui.graphics.vector
+
+class Filled:
+ """Kotlin: androidx.compose.material.icons.Icons.Filled"""
+ @property
+ def Add(self) -> androidx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.filled.Add (androidx.compose.material.icons.Icons.Filled.Add: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+
+class AutoMirrored:
+ """Kotlin: container of nested classes"""
+ class Filled:
+ """Kotlin: androidx.compose.material.icons.Icons.AutoMirrored.Filled"""
+ @property
+ def ArrowBack(self) -> androidx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin property: androidx.compose.material.icons.automirrored.filled.ArrowBack (androidx.compose.material.icons.Icons.AutoMirrored.Filled.ArrowBack: androidx.compose.ui.graphics.vector.ImageVector)"""
+ ...
+
+Default: Filled
+"""Kotlin: androidx.compose.material.icons.Icons.Default(): androidx.compose.material.icons.Icons.Filled"""
diff --git a/tests/fixtures/kotlin_stubs_v4/androidx/compose/material/icons/__init__.pyi b/tests/fixtures/kotlin_stubs_v4/androidx/compose/material/icons/__init__.pyi
new file mode 100644
index 0000000..f659548
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v4/androidx/compose/material/icons/__init__.pyi
@@ -0,0 +1,8 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+import androidx.compose.ui.graphics.vector
+
+def materialIcon(name: str) -> androidx.compose.ui.graphics.vector.ImageVector:
+ """Kotlin: androidx.compose.material.icons.materialIcon(name: kotlin.String): androidx.compose.ui.graphics.vector.ImageVector"""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v4/androidx/compose/ui/Alignment/__init__.pyi b/tests/fixtures/kotlin_stubs_v4/androidx/compose/ui/Alignment/__init__.pyi
new file mode 100644
index 0000000..a8e08b3
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v4/androidx/compose/ui/Alignment/__init__.pyi
@@ -0,0 +1,18 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+
+class Horizontal:
+ """Kotlin: androidx.compose.ui.Alignment.Horizontal"""
+
+class Vertical:
+ """Kotlin: androidx.compose.ui.Alignment.Vertical"""
+
+Center: _t.Any
+"""Kotlin: androidx.compose.ui.Alignment.Center(): androidx.compose.ui.Alignment"""
+
+End: Horizontal
+"""Kotlin: androidx.compose.ui.Alignment.End(): androidx.compose.ui.Alignment.Horizontal"""
+
+Top: Vertical
+"""Kotlin: androidx.compose.ui.Alignment.Top(): androidx.compose.ui.Alignment.Vertical"""
diff --git a/tests/fixtures/kotlin_stubs_v4/androidx/compose/ui/__init__.pyi b/tests/fixtures/kotlin_stubs_v4/androidx/compose/ui/__init__.pyi
new file mode 100644
index 0000000..e7e64fd
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v4/androidx/compose/ui/__init__.pyi
@@ -0,0 +1,23 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+import androidx.compose.ui.unit
+
+class Scene:
+ """Kotlin: androidx.compose.ui.Scene"""
+ @property
+ def layoutDirection(self) -> androidx.compose.ui.unit.LayoutDirection:
+ """Kotlin property: androidx.compose.ui.Scene.layoutDirection (androidx.compose.ui.Scene.layoutDirection: androidx.compose.ui.unit.LayoutDirection)"""
+ ...
+ @layoutDirection.setter
+ def layoutDirection(self, value: androidx.compose.ui.unit.LayoutDirection) -> None:
+ """Kotlin property: androidx.compose.ui.Scene.layoutDirection="""
+ ...
+ @property
+ def isMinimized(self) -> bool:
+ """Kotlin property: androidx.compose.ui.Scene.isMinimized (androidx.compose.ui.Scene.isMinimized: kotlin.Boolean)"""
+ ...
+ @isMinimized.setter
+ def isMinimized(self, value: bool) -> None:
+ """Kotlin property: androidx.compose.ui.Scene.isMinimized="""
+ ...
diff --git a/tests/fixtures/kotlin_stubs_v4/androidx/compose/ui/graphics/vector/__init__.pyi b/tests/fixtures/kotlin_stubs_v4/androidx/compose/ui/graphics/vector/__init__.pyi
new file mode 100644
index 0000000..3c6b2cc
--- /dev/null
+++ b/tests/fixtures/kotlin_stubs_v4/androidx/compose/ui/graphics/vector/__init__.pyi
@@ -0,0 +1,6 @@
+# GENERATED by python-multiplatform-gradle-plugin. Do not edit.
+
+import typing as _t
+
+class ImageVector:
+ """Kotlin: androidx.compose.ui.graphics.vector.ImageVector"""
diff --git a/tests/test_alignment_modules.py b/tests/test_alignment_modules.py
new file mode 100644
index 0000000..2c57a60
--- /dev/null
+++ b/tests/test_alignment_modules.py
@@ -0,0 +1,128 @@
+"""`alignment.py` / `arrangement.py` -- loadable, and documenting constants the layer now binds.
+
+Both files carried Chaquopy-era code that could not run: `from java import jclass` at module
+level, in a project whose bridge is not Chaquopy. Importing either one raised before a single
+class body executed, so the "blocked upstream" note they carried described something nobody
+could reach anyway.
+
+Two things are asserted, and they are separate on purpose:
+
+1. **They load.** Importing them by path no longer raises. That is what changed.
+2. **The layer supplies them.** No `jclass` survives in executable tokens and no placeholder class
+ remains: upstream's scanner binds companion constants (`80318c16`) and reads them as attributes
+ (`46be0212`), so these files only document the names and the spelling.
+
+Tokens are checked rather than raw text, so a mention inside the docstring that explains the
+history does not count as surviving code -- the same distinction `test_ui_init_module.py` makes.
+"""
+
+from __future__ import annotations
+
+import importlib.util
+import io
+import tokenize
+import unittest
+from pathlib import Path
+
+REPO = Path(__file__).resolve().parents[1]
+
+MODULES = {
+ "alignment": REPO / "pythonx" / "compose" / "ui" / "alignment.py",
+ "arrangement": REPO / "pythonx" / "compose" / "layout" / "arrangement.py",
+}
+
+
+def _load(name: str, path: Path):
+ spec = importlib.util.spec_from_file_location(f"_pxc_probe_{name}", path)
+ module = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(module)
+ return module
+
+
+def _executable_names(path: Path) -> set[str]:
+ with path.open("rb") as handle:
+ return {
+ token.string
+ for token in tokenize.tokenize(handle.readline)
+ if token.type == tokenize.NAME
+ }
+
+
+class BothModulesLoadWithoutChaquopy(unittest.TestCase):
+ def test_importing_by_path_no_longer_raises(self) -> None:
+ for name, path in MODULES.items():
+ with self.subTest(module=name):
+ self.assertTrue(path.exists(), f"{path} is missing")
+ _load(name, path)
+
+ def test_no_jclass_survives_in_executable_tokens(self) -> None:
+ for name, path in MODULES.items():
+ with self.subTest(module=name):
+ self.assertNotIn(
+ "jclass",
+ _executable_names(path),
+ f"{name} still executes Chaquopy-era code",
+ )
+
+
+class TheLayerSuppliesThemNow(unittest.TestCase):
+ """The canary this file used to carry has fired.
+
+ It asserted that neither module exposed a constant, and said that the day the scanner learned to
+ bind object constants it would fail and these files would get real contents. Upstream's
+ `80318c16` taught it, `6d896fba` proved a constant crosses, so the placeholder classes are gone
+ -- the layer produces the names and this package's rule is not to wrap what the layer produces.
+
+ What stays asserted is what a caller cannot read off the layer: which names exist, and that they
+ are read as attributes -- `46be0212` made the parenthesised form a `TypeError`.
+ """
+
+ ALIGNMENT = (
+ "Bottom", "BottomCenter", "BottomEnd", "BottomStart", "Center", "CenterEnd",
+ "CenterHorizontally", "CenterStart", "CenterVertically", "End", "Start", "Top",
+ "TopCenter", "TopEnd", "TopStart",
+ )
+ ARRANGEMENT = ("Bottom", "Center", "End", "SpaceAround", "SpaceBetween", "SpaceEvenly", "Start", "Top")
+
+ def test_no_placeholder_classes_remain(self) -> None:
+ for name, path in MODULES.items():
+ with self.subTest(module=name):
+ module = _load(name, path)
+ classes = [
+ attribute
+ for attribute in vars(module).values()
+ if isinstance(attribute, type) and attribute.__module__ == module.__name__
+ ]
+ self.assertEqual([], classes, f"{name} still declares a placeholder the layer supplies")
+
+ def test_each_module_names_the_constants_the_walker_binds(self) -> None:
+ for name, expected in (("alignment", self.ALIGNMENT), ("arrangement", self.ARRANGEMENT)):
+ doc = MODULES[name].read_text()
+ for constant in expected:
+ with self.subTest(module=name, constant=constant):
+ self.assertIn(constant, doc, f"{name} does not name {constant}")
+
+ def test_each_module_says_the_constants_are_read_not_called(self) -> None:
+ """Upstream `46be0212`: a static getter is a value on attribute access; calling it raises."""
+ call_form = {"alignment": "Alignment.Center()", "arrangement": "Arrangement.End()"}
+ read_form = {"alignment": "Alignment.Center ", "arrangement": "Arrangement.End,"}
+ for name, path in MODULES.items():
+ text = path.read_text()
+ with self.subTest(module=name):
+ self.assertIn(read_form[name], text, f"{name} does not show the attribute form")
+ self.assertIn("no parentheses", text, f"{name} does not say to drop them")
+ self.assertIn("TypeError", text, f"{name} does not say what the call form does now")
+ code = [line for line in text.splitlines() if line.startswith(" ")]
+ self.assertFalse(any(call_form[name] in line for line in code),
+ f"{name} still prescribes the call form in an example")
+
+ def test_examples_import_the_pythonx_names(self) -> None:
+ """The re-export serves these under `pythonx.compose.*`; that is the spelling to show."""
+ for name, path in MODULES.items():
+ with self.subTest(module=name):
+ text = path.read_text()
+ self.assertIn("from pythonx.compose.", text)
+ self.assertNotRegex(text, r"(?m)^\s+from androidx\.compose")
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_app_root.py b/tests/test_app_root.py
new file mode 100644
index 0000000..2830cc0
--- /dev/null
+++ b/tests/test_app_root.py
@@ -0,0 +1,287 @@
+"""`@app`, `state` and `app_root` in `pythonx.compose.runtime` (issue #11, docs/INTENT.md section 5.1).
+
+The host draws with `PythonContent("pythonx.compose.runtime", "app_root")`: it reads the module
+attribute `app_root`, a Compose State whose `.value` is a zero-argument callable or None. `@app`
+writes that value, so redeclaring the root replaces the screen; there is no update function.
+
+The state itself comes from the binder's `androidx.compose.runtime.mutableStateOf`, through one
+internal function, `_new_state`. Calling it from Python is python-multiplatform #38 and has not
+landed, so the logic here runs against `FakeState`, patched in for `_new_state` and kept in this
+file: a pure-Python state in shipped code would not make Compose recompose, so none ships.
+`TheBinderPath` runs the real `_new_state` through the binder's Python layer and `fake_host.py`,
+whose `mutableStateOf` and `MutableState.value` rows are shaped after python-multiplatform
+`31c092f0` (#38). It skips only while the installed table binds no `mutableStateOf`.
+"""
+
+from __future__ import annotations
+
+import importlib
+import sys
+import types
+import unittest
+from pathlib import Path
+from unittest import mock
+
+sys.path.insert(0, str(Path(__file__).resolve().parent))
+sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
+
+import adapter as adapter_loader # noqa: E402
+import fake_host # noqa: E402
+
+NEEDS_38 = "needs python-multiplatform #38"
+
+
+class FakeState:
+ """Test-only stand-in for a Compose `MutableState`: `.value`, and a log of writes."""
+
+ def __init__(self, initial):
+ self.writes = [initial]
+ self._value = initial
+
+ @property
+ def value(self):
+ return self._value
+
+ @value.setter
+ def value(self, new):
+ self._value = new
+ self.writes.append(new)
+
+
+def fresh_runtime():
+ """Import `pythonx.compose.runtime` afresh, so `app_root` has not been created yet."""
+ for name in [n for n in sys.modules if n == "pythonx.compose.runtime"]:
+ del sys.modules[name]
+ return importlib.import_module("pythonx.compose.runtime")
+
+
+class TheLogic(unittest.TestCase):
+ def setUp(self):
+ saved = dict(sys.modules)
+ self.addCleanup(lambda: (sys.modules.clear(), sys.modules.update(saved)))
+ self.runtime = fresh_runtime()
+ self.created = []
+
+ def factory(initial):
+ made = FakeState(initial)
+ self.created.append(made)
+ return made
+
+ patcher = mock.patch.object(self.runtime, "_new_state", factory)
+ patcher.start()
+ self.addCleanup(patcher.stop)
+
+ def test_app_returns_the_function_unchanged(self):
+ def Screen():
+ """A screen."""
+
+ self.assertIs(Screen, self.runtime.app(Screen))
+ self.assertEqual("Screen", Screen.__name__)
+
+ def test_app_root_is_created_lazily_and_once(self):
+ self.assertEqual([], self.created)
+ first = self.runtime.app_root
+ self.assertEqual(1, len(self.created))
+ self.assertIs(first, self.runtime.app_root)
+ self.assertEqual(1, len(self.created))
+ self.assertIn("app_root", vars(self.runtime), "after the first read it is a plain attribute")
+
+ def test_before_any_declaration_the_root_is_none(self):
+ self.assertIsNone(self.runtime.app_root.value)
+
+ def test_app_sets_the_root_value(self):
+ @self.runtime.app
+ def Screen():
+ return "one"
+
+ self.assertIs(Screen, self.runtime.app_root.value)
+
+ def test_redeclaring_replaces_the_value_in_the_same_state(self):
+ root = self.runtime.app_root
+
+ @self.runtime.app
+ def Screen():
+ return "one"
+
+ @self.runtime.app
+ def Screen(): # noqa: F811
+ return "two"
+
+ self.assertIs(root, self.runtime.app_root)
+ self.assertEqual("two", root.value())
+ self.assertEqual(1, len(self.created))
+ self.assertEqual(3, len(root.writes))
+
+ def test_state_round_trips_through_value(self):
+ counter = self.runtime.state(0)
+ self.assertEqual(0, counter.value)
+ counter.value = 5
+ self.assertEqual(5, counter.value)
+
+ def test_each_state_call_makes_its_own_state(self):
+ self.assertIsNot(self.runtime.state(0), self.runtime.state(0))
+
+ def test_no_update_or_refresh_name_is_public(self):
+ public = [n for n in dir(self.runtime) if not n.startswith("_")]
+ for name in public:
+ for banned in ("update", "refresh", "invalidate", "rerender"):
+ self.assertNotIn(banned, name.lower())
+ for banned in ("update", "refresh", "_update", "_refresh"):
+ self.assertNotIn(banned, vars(self.runtime))
+
+ def test_dir_lists_the_new_names(self):
+ for name in ("app", "state", "app_root", "Composable"):
+ self.assertIn(name, dir(self.runtime))
+
+ def test_unknown_names_still_go_to_the_reexport_path(self):
+ # AttributeError with a binder; RuntimeError ("not installed") without one -- both come from
+ # the reexport path, which is what answered.
+ with self.assertRaises((AttributeError, RuntimeError)):
+ self.runtime.no_such_name_anywhere # noqa: B018
+
+
+class TheStateFactory(unittest.TestCase):
+ """`_new_state` asks the binder for `mutableStateOf` and never invents a state of its own."""
+
+ def setUp(self):
+ saved = dict(sys.modules)
+ self.addCleanup(lambda: (sys.modules.clear(), sys.modules.update(saved)))
+ self.runtime = fresh_runtime()
+
+ def _binder_with(self, **names):
+ module = types.ModuleType("androidx.compose.runtime")
+ for key, value in names.items():
+ setattr(module, key, value)
+ parent = types.ModuleType("androidx.compose")
+ parent.runtime = module
+ top = types.ModuleType("androidx")
+ top.compose = parent
+ return mock.patch.dict(
+ sys.modules,
+ {"androidx": top, "androidx.compose": parent, "androidx.compose.runtime": module},
+ )
+
+ def test_it_calls_the_binders_mutable_state_of(self):
+ seen = []
+ with self._binder_with(mutableStateOf=lambda initial: seen.append(initial) or "STATE"):
+ self.assertEqual("STATE", self.runtime._new_state(7))
+ self.assertEqual([7], seen)
+
+ def test_a_binder_without_mutable_state_of_raises_pointing_at_38(self):
+ with self._binder_with():
+ with self.assertRaises(RuntimeError) as raised:
+ self.runtime._new_state(0)
+ self.assertIn("#38", str(raised.exception))
+
+ def test_no_binder_at_all_raises_pointing_at_38(self):
+ with mock.patch.dict(sys.modules, {"androidx": None}):
+ with self.assertRaises(RuntimeError) as raised:
+ self.runtime._new_state(0)
+ self.assertIn("#38", str(raised.exception))
+
+ def test_state_and_app_root_use_the_factory_not_a_python_stand_in(self):
+ with self._binder_with():
+ with self.assertRaises(RuntimeError):
+ self.runtime.state(0)
+ with self.assertRaises(RuntimeError):
+ self.runtime.app_root # noqa: B018
+ self.assertNotIn("app_root", vars(self.runtime), "a failed creation must not be cached")
+
+
+class TheBinderPath(unittest.TestCase):
+ """The real `_new_state`, unpatched, through the binder's Python layer and the fake host.
+
+ The host's `mutableStateOf` / `MutableState.value` rows are shaped after python-multiplatform
+ `31c092f0` (#38), so this proves the Python half: the proxy, the `value` property, the `Any?`
+ slot. It skips while the installed table binds no `androidx.compose.runtime.mutableStateOf`.
+ That Compose itself observes the write is the E2E module (python-multiplatform #26, issue #19).
+ """
+
+ def setUp(self):
+ try:
+ self.binding = adapter_loader.install()
+ except adapter_loader.AdapterUnavailable as unavailable:
+ self.skipTest(str(unavailable))
+ if not hasattr(self.binding, "_PROPERTIES"):
+ self.skipTest(NEEDS_38 + ": this binder serves no property rows (`MutableState.value`)")
+ self.host = fake_host.FakeHost()
+ self.host.bind()
+ self.host.register(self.binding)
+ self.addCleanup(self.host.unbind)
+ self.addCleanup(adapter_loader.uninstall)
+ try:
+ kotlin_runtime = importlib.import_module("androidx.compose.runtime")
+ kotlin_runtime.mutableStateOf
+ except (ImportError, AttributeError):
+ self.skipTest(NEEDS_38)
+ self.runtime = fresh_runtime()
+
+ def test_app_root_is_a_compose_state_the_declaration_writes(self):
+ @self.runtime.app
+ def Screen():
+ return None
+
+ self.assertIs(Screen, self.runtime.app_root.value)
+
+ @self.runtime.app
+ def Screen(): # noqa: F811
+ return None
+
+ self.assertIs(Screen, self.runtime.app_root.value)
+
+ def test_app_root_is_a_binder_state_proxy(self):
+ root = self.runtime.app_root
+ self.assertEqual("androidx.compose.runtime.MutableState", type(root)._kotlin_type_name)
+ self.assertIsNone(root.value)
+ self.assertIs(root, self.runtime.app_root)
+
+ def test_redeclaring_replaces_the_value_in_the_same_host_state(self):
+ root = self.runtime.app_root
+
+ @self.runtime.app
+ def Screen():
+ return "one"
+
+ @self.runtime.app
+ def Screen(): # noqa: F811
+ return "two"
+
+ self.assertEqual("two", root.value())
+ self.assertEqual(3, len(self.host_states()[0].writes))
+
+ def host_states(self):
+ return [o for o in self.host._handles.values() if isinstance(o, fake_host.StubState)]
+
+ def test_state_round_trips_through_the_binder(self):
+ label = self.runtime.state("a")
+ label.value = "b"
+ self.assertEqual("b", label.value)
+ self.assertEqual(["a", "b"], self.host_states()[0].writes)
+
+ def test_scalars_round_trip_through_a_kotlin_any(self):
+ """python-multiplatform #69 boxes a scalar for an `Any` slot and unboxes it on read.
+
+ This used to pin the refusal (`state(1)` was a TypeError); #69 is what reversed it.
+ """
+ if not hasattr(self.binding, "_box_scalar"):
+ self.skipTest("needs python-multiplatform #69 (scalar boxing for Any slots)")
+ counter = self.runtime.state(0)
+ self.assertEqual(0, counter.value)
+ counter.value = counter.value + 1
+ self.assertEqual(1, counter.value)
+ for value in (True, 2**40, 1.5, "text"):
+ with self.subTest(value=value):
+ holder = self.runtime.state(value)
+ self.assertEqual(value, holder.value)
+ self.assertIs(type(value), type(holder.value))
+
+ def test_an_int_beyond_64_bits_is_refused_with_the_reason(self):
+ if not hasattr(self.binding, "_box_scalar"):
+ self.skipTest("needs python-multiplatform #69 (scalar boxing for Any slots)")
+ with self.assertRaises(TypeError) as raised:
+ self.runtime.state(2**64)
+ self.assertIn("64 bits", str(raised.exception))
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_chain.py b/tests/test_chain.py
new file mode 100644
index 0000000..723546c
--- /dev/null
+++ b/tests/test_chain.py
@@ -0,0 +1,768 @@
+"""The chain, the dispatcher and the naming rule, as an application reaches them: through `pythonx`.
+
+The binder serves Kotlin names (`androidx.compose.foundation.layout.paddingValuesOf`) and renames
+nothing. These tests go through this package's own modules (`pythonx.compose.*`), so what they
+check is the re-export rule in `pythonx/compose/_reexport.py` on top of the binder's real Python,
+read out of a `PythonMultiplatform` checkout by `tests/adapter.py`.
+
+ python3 -m pytest tests -q
+
+Requires a `PythonMultiplatform` checkout beside this one, or `PYTHONMULTIPLATFORM_HOME`.
+"""
+
+from __future__ import annotations
+
+import inspect
+import sys
+import unittest
+from pathlib import Path
+
+sys.path.insert(0, str(Path(__file__).resolve().parent))
+
+import adapter as adapter_loader # noqa: E402
+import fake_host # noqa: E402
+
+
+class AdapterCase(unittest.TestCase):
+ """One binding layer and one host per test, because a table install is destructive."""
+
+ def setUp(self):
+ try:
+ self.binding = adapter_loader.install()
+ except adapter_loader.AdapterUnavailable as unavailable:
+ self.skipTest(str(unavailable))
+ self.host = fake_host.FakeHost()
+ self.host.bind()
+ self.host.register(self.binding)
+ self.addCleanup(self.host.unbind)
+ self.addCleanup(adapter_loader.uninstall)
+
+ def modifier_type(self):
+ """`Modifier` reached the way an application reaches it: by importing the module."""
+ import pythonx.compose.ui as ui
+
+ return ui.Modifier
+
+ def register_empty(self):
+ """The seam `pythonx/compose/ui/modifier.py` owns, spelled out here rather than imported.
+
+ `test_modifier_module.py` is what tests that file; this keeps the chain tests independent of
+ it, so a break in one does not read as a break in the other.
+ """
+ self.binding.register_empty(fake_host.MODIFIER, fake_host.EMPTY_MODIFIER)
+ return self.modifier_type()
+
+ def empty(self):
+ return self.register_empty().empty()
+
+ def describe(self, modifier):
+ import pythonx.compose.ui as ui
+
+ return ui.describe_modifier(modifier)
+
+ def needs_member_resolver(self):
+ """Receiver methods by snake_case name need the binder's member-resolver hook.
+
+ python-multiplatform #17 adds it; until a checkout has it, these tests skip rather than pass.
+ """
+ if not hasattr(self.binding, "add_member_resolver"):
+ self.skipTest("the binder has no add_member_resolver yet (python-multiplatform #17)")
+
+
+class TheBinderSourcesAreReadable(AdapterCase):
+
+ def test_both_sources_came_out_of_the_kotlin_literals_and_compile(self):
+ binding = adapter_loader.read_adapter_source()
+ surface = adapter_loader.read_surface_source()
+ self.assertIn("class _Finder", binding)
+ self.assertIn("KOTLIN_DEFAULT", surface)
+ compile(binding, "python_multiplatform/binding.py", "exec")
+ compile(surface, "python_multiplatform/__init__.py", "exec")
+
+ def test_the_binder_renames_nothing(self):
+ """The rule lives here; the binder has no snake_case of its own to lean on."""
+ source = adapter_loader.read_adapter_source()
+ self.assertNotIn("def to_python_name(", source)
+ self.assertNotIn("def register_package(", source)
+
+ def test_the_table_is_the_walked_shape(self):
+ """`padding__Dp` here carries every field the real walked entry carries.
+
+ The mirror of `PythonxAdapterTest.shapeMatchesTheWalkedEntries`, on this side of the
+ boundary: if the fixture stops matching the walker, this repository's tests stop being about
+ anything, and this is where that shows.
+ """
+ rows = {row[0]: row for row in self.host.rows()}
+ padding = rows["androidx.compose.foundation.layout.padding__Dp"]
+ self.assertEqual(("", "all"), padding[4])
+ self.assertEqual((fake_host.MODIFIER, fake_host.DP), padding[6])
+ self.assertEqual(fake_host.MODIFIER, padding[8])
+ self.assertTrue(padding[9])
+ self.assertEqual(fake_host.MODIFIER, padding[10])
+ self.assertEqual((False, False), padding[11])
+ symmetric = rows["androidx.compose.foundation.layout.padding__Dp_Dp"]
+ self.assertEqual(("", "horizontal", "vertical"), symmetric[4])
+ self.assertEqual((False, True, True), symmetric[11])
+ # The bare name of an overload set is not bound: the walker refuses to arbitrate, which is
+ # why there is a dispatcher in Python at all.
+ self.assertNotIn("androidx.compose.foundation.layout.padding", rows)
+
+
+class TheChain(AdapterCase):
+ """`Modifier.padding(16).size(24)` -- the thing the 2024 tree could not do."""
+
+ def test_modifier_is_the_binders_proxy_class(self):
+ import androidx.compose.ui as kotlin_ui
+
+ self.assertIs(kotlin_ui.Modifier, self.modifier_type())
+
+ def test_chain_from_the_class_object(self):
+ chained = self.register_empty().padding(16).size(24)
+ self.assertEqual("padding(16.0) -> size(24.0)", self.describe(chained))
+ self.assertEqual(["padding__Dp", "size__Dp"], self.host.calls)
+
+ def test_chain_from_an_instance(self):
+ self.needs_member_resolver()
+ chained = self.empty().padding(16).size(24).fill_max_width()
+ self.assertEqual(
+ "padding(16.0) -> size(24.0) -> fillMaxWidth", self.describe(chained)
+ )
+
+ def test_a_resolved_snake_case_method_leaves_the_binders_class_kotlin_named(self):
+ """The alias lives in the binder's resolver registry, not on its proxy class."""
+ self.needs_member_resolver()
+ modifier = self.empty().fill_max_width()
+ self.assertEqual("fillMaxWidth", self.describe(modifier))
+ self.assertNotIn("fill_max_width", vars(type(modifier)))
+ self.assertNotIn("fill_max_width", dir(type(modifier)))
+
+ def test_each_link_is_a_new_receiver_not_a_mutation(self):
+ base = self.empty().padding(8)
+ left = base.size(1)
+ right = base.size(2)
+ self.assertEqual("padding(8.0)", self.describe(base))
+ self.assertEqual("padding(8.0) -> size(1.0)", self.describe(left))
+ self.assertEqual("padding(8.0) -> size(2.0)", self.describe(right))
+
+ def test_an_unbound_name_is_an_attribute_error_that_says_where_it_looked(self):
+ with self.assertRaises(AttributeError) as raised:
+ self.empty().fill_max_size()
+ self.assertIn("fill_max_size", str(raised.exception))
+ self.assertIn(fake_host.MODIFIER, str(raised.exception))
+
+ def test_the_class_object_spelling_needs_an_empty_factory_and_says_so(self):
+ """Against real Compose this is the state the chain is actually in.
+
+ The walker binds functions; `Modifier` as an expression is `Modifier.Companion`, an object.
+ So no name for the empty modifier is bound, and the refusal has to name the seam rather than
+ guess. `register_empty` is that seam and it is not registered here.
+ """
+ with self.assertRaises(TypeError) as raised:
+ self.modifier_type().padding(16)
+ self.assertIn("register_empty", str(raised.exception))
+
+
+class OverloadDispatch(AdapterCase):
+ """`docs/kotlin-extensions-in-python.md` §3.1: the walker distinguishes, Python decides."""
+
+ def test_selected_by_keyword_name(self):
+ result = self.empty().padding(horizontal=8, vertical=4)
+ self.assertEqual(["padding__Dp_Dp"], self.host.calls)
+ self.assertEqual("padding(h=8.0, v=4.0)", self.describe(result))
+
+ def test_selected_by_argument_count(self):
+ self.empty().padding(1, 2, 3, 4)
+ self.assertEqual(["padding__Dp_Dp_Dp_Dp"], self.host.calls)
+
+ def test_selected_by_declared_type(self):
+ import pythonx.compose.foundation.layout as layout
+
+ values = layout.padding_values_of(8)
+ result = self.empty().padding(values)
+ self.assertEqual(["padding__PaddingValues"], self.host.calls)
+ self.assertEqual("padding(pv(8.0))", self.describe(result))
+
+ def test_a_single_argument_number_still_reaches_the_one_dp_overload(self):
+ self.empty().padding(16)
+ self.assertEqual(["padding__Dp"], self.host.calls)
+
+ def test_no_overload_matching_names_the_candidates(self):
+ with self.assertRaises(TypeError) as raised:
+ self.empty().padding(nonsense=1)
+ message = str(raised.exception)
+ self.assertIn("Candidates", message)
+ self.assertIn("padding__Dp_Dp", message)
+
+ def test_the_explicit_spelling_bypasses_the_dispatcher(self):
+ getattr(self.empty(), "padding__Dp")(16)
+ self.assertEqual(["padding__Dp"], self.host.calls)
+
+ def test_the_module_function_dispatches_with_snake_case_keywords(self):
+ import pythonx.compose.foundation.layout as layout
+
+ values = layout.padding_values_of(8)
+ result = layout.padding(self.empty(), padding_values=values)
+ self.assertEqual(["padding__PaddingValues"], self.host.calls)
+ self.assertEqual("padding(pv(8.0))", self.describe(result))
+
+
+class MethodKeywords(AdapterCase):
+ """SPEC S4.1: a method's keywords are snake_case like a module function's.
+
+ The member resolver answers `(kotlin_name, {python_keyword: kotlinParameter})`, built from
+ `python_multiplatform.describe_member(type, member)` (python-multiplatform #54).
+ """
+
+ def setUp(self):
+ super().setUp()
+ import python_multiplatform
+
+ self.needs_member_resolver()
+ if not hasattr(python_multiplatform, "describe_member"):
+ self.skipTest("the binder has no describe_member(type, member) yet (python-multiplatform #54)")
+
+ def values(self):
+ import pythonx.compose.foundation.layout as layout
+
+ return layout.padding_values_of(8)
+
+ def test_a_snake_case_keyword_reaches_the_kotlin_parameter_of_the_overload(self):
+ result = self.empty().padding(padding_values=self.values())
+ self.assertEqual(["padding__PaddingValues"], self.host.calls)
+ self.assertEqual("padding(pv(8.0))", self.describe(result))
+
+ def test_keywords_that_are_already_one_word_are_unchanged(self):
+ result = self.empty().padding(horizontal=8, vertical=4)
+ self.assertEqual(["padding__Dp_Dp"], self.host.calls)
+ self.assertEqual("padding(h=8.0, v=4.0)", self.describe(result))
+
+ def test_the_kotlin_spelling_still_works_at_run_time(self):
+ self.empty().padding(paddingValues=self.values())
+ self.assertEqual(["padding__PaddingValues"], self.host.calls)
+
+ def test_a_snake_case_method_takes_snake_case_keywords(self):
+ """The name is resolved (`z_index`) and the keyword is mapped on it too (`z_index=`)."""
+ result = self.empty().z_index(z_index=1.5)
+ self.assertEqual("zIndex(1.5)", self.describe(result))
+ self.assertEqual(["zIndex"], self.host.calls)
+
+ def test_an_unknown_keyword_still_reaches_the_binders_refusal_with_its_candidates(self):
+ with self.assertRaises(TypeError) as raised:
+ self.empty().padding(padding_valuez=1)
+ message = str(raised.exception)
+ self.assertIn("Candidates", message)
+ self.assertIn("padding__PaddingValues", message)
+
+ def test_the_map_is_metadata_and_is_asked_for_once_per_member(self):
+ import python_multiplatform
+
+ original, asked = python_multiplatform.describe_member, []
+
+ def counting(*args):
+ asked.append(args)
+ return original(*args)
+
+ python_multiplatform.describe_member = counting
+ self.addCleanup(setattr, python_multiplatform, "describe_member", original)
+ modifier = self.empty()
+ modifier.padding(padding_values=self.values())
+ modifier.padding(padding_values=self.values())
+ self.assertEqual([(fake_host.MODIFIER, "padding")], asked)
+
+ def test_the_map_lists_every_overloads_parameters_and_not_the_receiver(self):
+ from pythonx.compose._reexport import member_name
+
+ answer = member_name(fake_host.MODIFIER, "padding", ["padding"])
+ self.assertEqual("padding", answer[0])
+ self.assertEqual("paddingValues", answer[1]["padding_values"])
+ self.assertNotIn("receiver", answer[1])
+ self.assertNotIn("horizontal", answer[1]) # one word: Kotlin's spelling is the same
+
+
+class MethodKeywordsNeedTheBindersDescription(AdapterCase):
+ """Without `describe_member` a method's keywords are Kotlin's and its names still resolve."""
+
+ def setUp(self):
+ super().setUp()
+ import python_multiplatform
+
+ self.needs_member_resolver()
+ original = getattr(python_multiplatform, "describe_member", None)
+ if original is not None:
+ del python_multiplatform.describe_member
+ self.addCleanup(setattr, python_multiplatform, "describe_member", original)
+
+ def test_the_name_resolves_and_kotlin_keywords_work(self):
+ import pythonx.compose.foundation.layout as layout
+
+ modifier = self.empty().fill_max_width()
+ self.assertEqual("fillMaxWidth", self.describe(modifier))
+ self.empty().padding(paddingValues=layout.padding_values_of(8))
+ self.assertEqual("padding__PaddingValues", self.host.calls[-1])
+
+ def test_a_snake_case_keyword_is_the_binders_refusal(self):
+ import pythonx.compose.foundation.layout as layout
+
+ with self.assertRaises(TypeError):
+ self.empty().padding(padding_values=layout.padding_values_of(8))
+
+
+class Names(AdapterCase):
+ """PascalCase for types, snake_case for everything else, forward by rule and never inverted."""
+
+ def test_camel_case_becomes_snake_case(self):
+ from pythonx.compose._reexport import python_name
+
+ self.assertEqual("fill_max_width", python_name("fillMaxWidth"))
+ self.assertEqual("z_index", python_name("zIndex"))
+ self.assertEqual("to_url_string", python_name("toURLString"))
+ self.assertEqual("padding__Dp_Dp", python_name("padding__Dp_Dp"))
+
+ def test_a_type_name_is_left_alone(self):
+ from pythonx.compose._reexport import python_name
+
+ self.assertEqual("Modifier", python_name("Modifier"))
+
+ def test_a_name_the_reverse_rule_cannot_invert_still_resolves(self):
+ import pythonx.compose.ui as ui
+
+ self.assertEqual("url:x", ui.to_url_string("x"))
+
+ def test_the_kotlin_camel_case_spelling_is_not_a_second_name(self):
+ import pythonx.compose.foundation.layout as layout
+
+ with self.assertRaises(AttributeError):
+ layout.paddingValuesOf # noqa: B018
+
+ def test_on_click_not_onclick(self):
+ """`UI.ipynb` writes `onclick`; the decision on record is that `pythonx` is the reference."""
+ from pythonx.compose._reexport import python_name
+
+ self.assertEqual("on_click", python_name("onClick"))
+
+ def test_the_signature_carries_snake_case_parameter_names(self):
+ import pythonx.compose.foundation.layout as layout
+
+ parameters = list(inspect.signature(layout.padding__PaddingValues).parameters)
+ self.assertEqual(["receiver", "padding_values"], parameters)
+
+ def test_a_defaulted_parameter_keeps_the_kotlin_default_marker(self):
+ import python_multiplatform
+ import pythonx.compose.foundation.layout as layout
+
+ signature = inspect.signature(layout.padding__Dp_Dp)
+ self.assertIs(python_multiplatform.KOTLIN_DEFAULT, signature.parameters["horizontal"].default)
+
+ def test_an_unknown_keyword_reaches_the_binders_refusal(self):
+ import pythonx.compose.foundation.layout as layout
+
+ with self.assertRaises(TypeError) as raised:
+ layout.padding_values_of(everything=8)
+ self.assertIn("everything", str(raised.exception))
+
+
+class ValueClasses(AdapterCase):
+ """`Dp` takes a raw number, a packed wrapper must not; the manifest says which."""
+
+ def test_a_raw_number_reaches_a_dp_parameter(self):
+ self.assertEqual("padding(16.0)", self.describe(self.empty().padding(16)))
+
+ def test_the_manifest_allowlist_is_what_lets_a_number_through(self):
+ """The binder alone refuses a raw number for `Dp`; importing through `pythonx` allows it."""
+ import androidx.compose.foundation.layout as kotlin_layout
+
+ with self.assertRaises(TypeError):
+ kotlin_layout.paddingValuesOf(8)
+ import pythonx.compose.foundation.layout as layout
+
+ result = self.empty().padding(layout.padding_values_of(8))
+ self.assertEqual("padding(pv(8.0))", self.describe(result))
+
+ def test_a_dp_proxy_reaches_the_same_parameter(self):
+ result = self.empty().padding(self.binding.value_of(fake_host.DP, 16))
+ self.assertEqual("padding(16.0)", self.describe(result))
+
+ def test_a_plain_float_parameter_is_not_treated_as_a_value_class(self):
+ self.needs_member_resolver()
+ self.assertEqual("zIndex(1.5)", self.describe(self.empty().z_index(1.5)))
+
+ def test_a_packed_value_class_refuses_a_raw_number_and_says_why(self):
+ self.needs_member_resolver()
+ with self.assertRaises(TypeError) as raised:
+ self.empty().padding_from_baseline(16)
+ message = str(raised.exception)
+ self.assertIn("TextUnit", message)
+ self.assertIn("reinterpreted", message)
+
+ def test_the_allowlist_can_be_extended_at_run_time(self):
+ self.needs_member_resolver()
+ self.binding.allow_raw_primitive(fake_host.TEXT_UNIT)
+ self.assertEqual(
+ "paddingFromBaseline(16.0)", self.describe(self.empty().padding_from_baseline(16))
+ )
+
+
+class Laziness(AdapterCase):
+ """A mapped module is a file on disk; the names inside it resolve on first use."""
+
+ def test_a_mapped_package_is_importable(self):
+ import pythonx.compose.foundation.layout as layout
+
+ self.assertEqual("pythonx.compose.foundation.layout", layout.__name__)
+
+ def test_a_package_with_no_file_is_not(self):
+ with self.assertRaises(ModuleNotFoundError):
+ import pythonx.compose.nothing.here # noqa: F401
+
+ def test_a_name_is_adapted_once_and_then_lives_in_the_module_dict(self):
+ import pythonx.compose.foundation.layout as layout
+
+ self.assertNotIn("padding", vars(layout))
+ first = layout.padding
+ self.assertIn("padding", vars(layout))
+ self.assertIs(first, layout.padding)
+
+ def test_dir_reports_what_is_bound_under_pythonic_names(self):
+ import pythonx.compose.foundation.layout as layout
+
+ names = dir(layout)
+ self.assertIn("padding", names)
+ self.assertIn("size", names)
+ self.assertIn("fill_max_width", names)
+ self.assertNotIn("fillMaxWidth", names)
+
+ def test_without_the_binding_layer_a_name_says_what_is_missing(self):
+ import pythonx.compose.foundation.layout as layout
+
+ adapter_loader.uninstall()
+ import pythonx.compose.foundation.layout as fresh
+
+ self.assertIsNot(layout, fresh)
+ with self.assertRaises(RuntimeError) as raised:
+ fresh.padding # noqa: B018
+ self.assertIn("PythonxAdapter.install()", str(raised.exception))
+
+
+class ObjectNamespaces(AdapterCase):
+ """`Arrangement`, `Alignment`: a Kotlin object is a namespace, read by the same rule."""
+
+ def label_of(self, proxy):
+ return self.host._object(proxy._pm_handle).label
+
+ def test_a_constant_is_reached_through_the_pythonx_module(self):
+ import pythonx.compose.layout as layout
+
+ self.assertEqual("End", self.label_of(layout.Arrangement.End))
+
+ def test_the_same_object_from_its_kotlin_home_and_the_short_spelling(self):
+ import pythonx.compose.foundation.layout as long
+ import pythonx.compose.layout as short
+
+ self.assertEqual("Start", self.label_of(long.Arrangement.Start))
+ self.assertEqual("Start", self.label_of(short.Arrangement.Start))
+
+ def test_a_constant_is_read_again_each_time_not_frozen(self):
+ import pythonx.compose.ui as ui
+
+ first, second = ui.Alignment.Center, ui.Alignment.Center
+ self.assertIsNot(first, second)
+ self.assertEqual("Center", self.label_of(second))
+
+ def test_a_function_inside_an_object_is_snake_case(self):
+ import pythonx.compose.layout as layout
+
+ self.assertEqual("spacedBy(8.0)", self.label_of(layout.Arrangement.spaced_by(8)))
+ with self.assertRaises(AttributeError):
+ layout.Arrangement.spacedBy # noqa: B018
+
+ def test_dir_of_the_namespace_reports_pythonic_names(self):
+ import pythonx.compose.layout as layout
+
+ names = dir(layout.Arrangement)
+ self.assertIn("SpaceBetween", names)
+ self.assertIn("spaced_by", names)
+ self.assertNotIn("spacedBy", names)
+
+ def test_an_unknown_constant_says_where_it_looked(self):
+ import pythonx.compose.ui as ui
+
+ with self.assertRaises(AttributeError) as raised:
+ ui.Alignment.Nowhere # noqa: B018
+ self.assertIn("androidx.compose.ui.Alignment", str(raised.exception))
+
+
+class GroupedObjectConstants(AdapterCase):
+ """INTENT 5.3, SPEC S7.1: `Alignment.Horizontal.End` beside Kotlin's flat `Alignment.End`.
+
+ A group is the constants of an object whose declared type is one type nested in it, read with
+ `python_multiplatform.describe(module, name)` -- never by reading a constant.
+ """
+
+ def setUp(self):
+ super().setUp()
+ import python_multiplatform
+
+ if len(inspect.signature(python_multiplatform.describe).parameters) < 2:
+ self.skipTest("the binder has no describe(module, name) yet (python-multiplatform #36)")
+
+ def label_of(self, proxy):
+ return self.host._object(proxy._pm_handle).label
+
+ def test_the_grouped_spelling_reads_the_constant(self):
+ import pythonx.compose.layout as layout
+ import pythonx.compose.ui as ui
+
+ self.assertEqual("End", self.label_of(ui.Alignment.Horizontal.End))
+ self.assertEqual("Top", self.label_of(ui.Alignment.Vertical.Top))
+ self.assertEqual("Start", self.label_of(layout.Arrangement.Horizontal.Start))
+ self.assertEqual("SpaceBetween", self.label_of(layout.Arrangement.HorizontalOrVertical.SpaceBetween))
+
+ def test_both_spellings_are_the_same_live_read(self):
+ import pythonx.compose.ui as ui
+
+ flat, grouped, again = ui.Alignment.End, ui.Alignment.Horizontal.End, ui.Alignment.Horizontal.End
+ self.assertEqual(self.label_of(flat), self.label_of(grouped))
+ self.assertIsNot(grouped, again) # read again on every access, like the flat spelling
+ self.assertIs(type(flat), type(grouped))
+
+ def test_a_group_holds_exactly_the_constants_of_its_declared_type(self):
+ import pythonx.compose.layout as layout
+ import pythonx.compose.ui as ui
+
+ self.assertEqual(["CenterHorizontally", "End"], dir(ui.Alignment.Horizontal))
+ self.assertEqual(["Top"], dir(ui.Alignment.Vertical))
+ self.assertEqual(["End", "Start"], dir(layout.Arrangement.Horizontal))
+ self.assertEqual(["Top"], dir(layout.Arrangement.Vertical))
+ self.assertEqual(["SpaceBetween"], dir(layout.Arrangement.HorizontalOrVertical))
+
+ def test_a_constant_declared_as_a_supertype_is_in_no_narrower_group(self):
+ import pythonx.compose.layout as layout
+ import pythonx.compose.ui as ui
+
+ self.assertIn("End", dir(ui.Alignment.Horizontal))
+ self.assertIn("SpaceBetween", dir(layout.Arrangement.HorizontalOrVertical))
+ with self.assertRaises(AttributeError):
+ ui.Alignment.Horizontal.Center # noqa: B018 -- declared `Alignment`
+ with self.assertRaises(AttributeError):
+ layout.Arrangement.Horizontal.SpaceBetween # noqa: B018 -- declared `HorizontalOrVertical`
+
+ def test_a_name_the_group_does_not_hold_names_the_groups_kotlin_type(self):
+ import pythonx.compose.ui as ui
+
+ with self.assertRaises(AttributeError) as raised:
+ ui.Alignment.Horizontal.Top # noqa: B018 -- `Top` is an `Alignment.Vertical`
+ self.assertIn("androidx.compose.ui.Alignment.Horizontal", str(raised.exception))
+ self.assertIn("'Top'", str(raised.exception))
+
+ def test_a_name_that_is_no_nested_type_is_still_unknown(self):
+ import pythonx.compose.ui as ui
+
+ self.assertIn("Horizontal", dir(ui.Alignment))
+ with self.assertRaises(AttributeError):
+ ui.Alignment.Diagonal # noqa: B018
+
+ def test_dir_of_the_object_lists_its_groups(self):
+ import pythonx.compose.layout as layout
+ import pythonx.compose.ui as ui
+
+ self.assertTrue({"Horizontal", "Vertical", "End", "Center"} <= set(dir(ui.Alignment)))
+ self.assertTrue({"Horizontal", "Vertical", "HorizontalOrVertical"} <= set(dir(layout.Arrangement)))
+
+ def test_classifying_reads_no_constant(self):
+ import pythonx.compose.ui as ui
+
+ before = self.host._next_handle
+ dir(ui.Alignment)
+ ui.Alignment.Horizontal # noqa: B018
+ self.assertEqual(before, self.host._next_handle, "a constant's getter ran to classify it")
+
+ def test_the_classification_is_computed_once_per_object(self):
+ import python_multiplatform
+ import pythonx.compose.ui as ui
+
+ original, asked = python_multiplatform.describe, []
+
+ def counting(*args):
+ asked.append(args)
+ return original(*args)
+
+ python_multiplatform.describe = counting
+ self.addCleanup(setattr, python_multiplatform, "describe", original)
+ ui.Alignment.Horizontal # noqa: B018
+ first = len(asked)
+ ui.Alignment.Vertical # noqa: B018
+ dir(ui.Alignment)
+ self.assertGreater(first, 0)
+ self.assertEqual(first, len(asked))
+
+ def test_a_kotlin_member_wins_over_a_group(self):
+ # A fictional constant of `Arrangement` named like one of its nested types.
+ self.host._constant(f"{fake_host.ARRANGEMENT}.Vertical", fake_host.ARRANGEMENT_VERTICAL)
+ self.host.register(self.binding)
+ import pythonx.compose.layout as layout
+
+ self.assertEqual("Vertical", self.label_of(layout.Arrangement.Vertical))
+ self.assertEqual(["End", "Start"], dir(layout.Arrangement.Horizontal))
+
+ def test_a_group_is_read_only(self):
+ import pythonx.compose.ui as ui
+
+ group = ui.Alignment.Horizontal
+ with self.assertRaises(AttributeError):
+ group.End = None
+ self.assertEqual("End", self.label_of(group.End))
+
+ def test_without_describe_by_name_there_are_no_groups_and_the_flat_spelling_stays(self):
+ import python_multiplatform
+ import pythonx.compose.ui as ui
+
+ original = python_multiplatform.describe
+ python_multiplatform.describe = lambda fn: original(fn) # the one-argument binder
+ self.addCleanup(setattr, python_multiplatform, "describe", original)
+ self.assertEqual("End", self.label_of(ui.Alignment.End))
+ with self.assertRaises(AttributeError):
+ ui.Alignment.Horizontal # noqa: B018
+ self.assertNotIn("Horizontal", dir(ui.Alignment))
+
+
+class ManifestAliases(AdapterCase):
+ """INTENT 5.2: `Column`, `Row`, `Spacer` from `material3`, as the notebook imports them."""
+
+ def test_the_notebook_import_resolves_to_the_layout_object(self):
+ from pythonx.compose.layout import Column as from_layout
+ from pythonx.compose.material3 import Column, Row, Spacer
+
+ self.assertIs(from_layout, Column)
+ self.assertIsNotNone(Row)
+ self.assertIsNotNone(Spacer)
+
+ def test_dir_of_material3_lists_the_aliases(self):
+ import pythonx.compose.material3 as material3
+
+ for name in ("Column", "Row", "Spacer"):
+ self.assertIn(name, dir(material3))
+
+ def test_a_name_not_listed_is_not_borrowed(self):
+ import pythonx.compose.material3 as material3
+
+ with self.assertRaises(AttributeError):
+ material3.padding_values_of # noqa: B018
+
+
+class DefaultIconsAlias(AdapterCase):
+ """INTENT 5.7: `DefaultIcons` is `Icons.Default`, lent by `material3` under another name and path."""
+
+ def label_of(self, proxy):
+ return self.host._object(proxy._pm_handle).label
+
+ def test_the_icons_module_serves_icons_by_the_rule(self):
+ from pythonx.compose.material.icons import Icons
+
+ default = Icons.Default # held: dropping a proxy releases its handle
+ self.assertIs(self.host.filled, self.host._object(default._pm_handle))
+
+ def test_the_icon_is_the_extension_property_getter_on_icons_filled(self):
+ from pythonx.compose.material.icons import Icons
+
+ self.assertEqual("Add", self.label_of(Icons.Default.Add))
+ self.assertEqual(["Icons.Filled.Add"], self.host.calls)
+
+ def test_the_notebook_import_resolves(self):
+ from pythonx.compose.material3 import DefaultIcons
+
+ self.assertIsNotNone(DefaultIcons)
+
+ def test_default_icons_is_icons_default(self):
+ from pythonx.compose.material.icons import Icons
+ from pythonx.compose.material3 import DefaultIcons
+
+ # The same Kotlin object: a read yields a proxy, and both reads reach the one `Icons.Filled`.
+ default = Icons.Default
+ self.assertIs(self.host._object(default._pm_handle), self.host._object(DefaultIcons._pm_handle))
+ self.assertIs(self.host.filled, self.host._object(DefaultIcons._pm_handle))
+
+ def test_the_alias_reaches_the_getter(self):
+ from pythonx.compose.material3 import DefaultIcons
+
+ self.assertEqual("Add", self.label_of(DefaultIcons.Add))
+ self.assertEqual("Edit", self.label_of(DefaultIcons.Edit))
+ self.assertEqual(["Icons.Filled.Add", "Icons.Filled.Edit"], self.host.calls)
+
+ def test_the_alias_is_read_again_each_time_as_the_binder_serves_icons_default(self):
+ import pythonx.compose.material3 as material3
+
+ first, second = material3.DefaultIcons, material3.DefaultIcons
+ self.assertIsNot(first, second)
+ self.assertNotIn("DefaultIcons", vars(material3))
+
+ def test_dir_of_material3_lists_default_icons(self):
+ import pythonx.compose.material3 as material3
+
+ self.assertIn("DefaultIcons", dir(material3))
+
+ def test_an_unknown_icon_is_an_attribute_error(self):
+ from pythonx.compose.material3 import DefaultIcons
+
+ with self.assertRaises(AttributeError):
+ DefaultIcons.NoSuchIcon # noqa: B018
+
+ def test_the_icon_is_a_value_not_a_call(self):
+ # The notebook writes `DefaultIcons.Add()`; an icon is a property read, so a call is refused.
+ from pythonx.compose.material3 import DefaultIcons
+
+ with self.assertRaises(TypeError):
+ DefaultIcons.Add()
+
+ def test_the_name_is_not_borrowed_by_another_module(self):
+ import pythonx.compose.layout as layout
+
+ with self.assertRaises(AttributeError):
+ layout.DefaultIcons # noqa: B018
+
+ def test_the_list_form_still_lends_under_the_same_name(self):
+ from pythonx.compose.layout import Spacer as home
+ from pythonx.compose.material3 import Spacer
+
+ self.assertIs(home, Spacer)
+
+
+class SubmodulesWithoutABinder(unittest.TestCase):
+ """`from pythonx.compose.ui import modifier` reaches the file even when no binder is installed.
+
+ `from package import name` asks the package for the attribute first and only imports a
+ submodule if that raises AttributeError. The re-export `__getattr__` raised RuntimeError ("the
+ binding layer is not installed") for every name, so the submodule was never tried.
+ """
+
+ def setUp(self):
+ adapter_loader.uninstall()
+ self.addCleanup(adapter_loader.uninstall)
+ root = str(Path(__file__).resolve().parents[1])
+ if root not in sys.path:
+ sys.path.insert(0, root)
+
+ def test_from_import_of_a_submodule_needs_no_binder(self):
+ from pythonx.compose.ui import modifier
+
+ self.assertTrue(callable(modifier.install))
+
+ def test_a_kotlin_name_still_says_the_binder_is_missing(self):
+ import pythonx.compose.ui as ui
+
+ with self.assertRaises(RuntimeError):
+ ui.Modifier # noqa: B018
+
+
+class Handles(AdapterCase):
+ """The binder's proxy owns a handle; dropping it gives the handle back."""
+
+ def test_dropping_a_proxy_releases_its_handle(self):
+ modifier = self.empty().padding(16)
+ handle = modifier._pm_handle
+ self.assertIn(handle, self.host.live_handles())
+ del modifier
+ self.assertIn(handle, self.host.released)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_guide.py b/tests/test_guide.py
new file mode 100644
index 0000000..645997b
--- /dev/null
+++ b/tests/test_guide.py
@@ -0,0 +1,25 @@
+"""The guide checker (`.github/scripts/check_guide.py`) is part of the suite: it parses every page
+under `docs/guide/`, resolves local links, and checks that English and Korean strings pair up."""
+
+from __future__ import annotations
+
+import subprocess
+import sys
+import unittest
+from pathlib import Path
+
+REPO = Path(__file__).resolve().parents[1]
+CHECKER = REPO / ".github" / "scripts" / "check_guide.py"
+
+
+class TestGuide(unittest.TestCase):
+ def test_guide_checker_reports_no_findings(self) -> None:
+ result = subprocess.run(
+ [sys.executable, str(CHECKER)], cwd=REPO, capture_output=True, text=True,
+ )
+ self.assertEqual(0, result.returncode, result.stdout + result.stderr)
+ self.assertIn("0 findings", result.stdout)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_legacy_modules.py b/tests/test_legacy_modules.py
new file mode 100644
index 0000000..a50de68
--- /dev/null
+++ b/tests/test_legacy_modules.py
@@ -0,0 +1,111 @@
+"""Tests verifying that legacy Chaquopy/JPype code and dead relative imports are removed from remaining pythonx modules.
+
+Covers:
+- `pythonx/compose/layout/__init__.py`
+- `pythonx/compose/ui/unit/__init__.py`
+- `pythonx/compose/material3/__init__.py`
+"""
+
+from __future__ import annotations
+
+import ast
+import importlib.util
+import io
+import tokenize
+import unittest
+from pathlib import Path
+
+REPO = Path(__file__).resolve().parents[1]
+
+LAYOUT_INIT = REPO / "pythonx" / "compose" / "layout" / "__init__.py"
+UI_UNIT_INIT = REPO / "pythonx" / "compose" / "ui" / "unit" / "__init__.py"
+MATERIAL3_INIT = REPO / "pythonx" / "compose" / "material3" / "__init__.py"
+
+
+def _get_executable_tokens(path: Path) -> set[str]:
+ """Tokenize a file, stripping comments and string literals, returning all remaining token strings."""
+ if not path.exists():
+ return set()
+ raw = path.read_text(encoding="utf-8")
+ kept = []
+ for tok in tokenize.generate_tokens(io.StringIO(raw).readline):
+ if tok.type in (tokenize.STRING, tokenize.COMMENT):
+ continue
+ kept.append(tok.string)
+ return set(kept)
+
+
+class TestLayoutInitModuleNoDeadTokens(unittest.TestCase):
+ def test_layout_init_has_no_dead_relative_imports_or_chaquopy_tokens(self) -> None:
+ tokens = _get_executable_tokens(LAYOUT_INIT)
+ for banned in ("Arrangement", "arrangement", "traceback"):
+ self.assertNotIn(
+ banned,
+ tokens,
+ f"pythonx/compose/layout/__init__.py still contains dead token: {banned}",
+ )
+
+
+class TestUiUnitInitNoDeadTokens(unittest.TestCase):
+ def test_ui_unit_init_has_no_dead_relative_import_tokens(self) -> None:
+ tokens = _get_executable_tokens(UI_UNIT_INIT)
+ self.assertNotIn(
+ "dp",
+ tokens,
+ "pythonx/compose/ui/unit/__init__.py still contains dead relative import of dp.py",
+ )
+
+
+class TestMaterial3InitNoPlaceholderStarImports(unittest.TestCase):
+ def test_material3_init_has_no_dead_star_imports_of_placeholder_files(self) -> None:
+ tokens = _get_executable_tokens(MATERIAL3_INIT)
+ for banned in (
+ "bottom_app_bar", "bottom_sheet", "checkbox", "date_picker", "dialogs",
+ "dividers", "extended_fab", "fab", "menus", "navigation_bar", "navigation_drawer",
+ "navigation_rail", "progress_indicators", "radio_button", "search_bar",
+ "segmented_button", "sliders", "snackbars", "swipe_to_dismiss", "switch",
+ "tabs", "time_picker", "tool_tip", "top_app_bar", "surfaces", "scaffold",
+ "dynamic_color", "typography", "shape",
+ ):
+ self.assertNotIn(
+ banned,
+ tokens,
+ f"pythonx/compose/material3/__init__.py still imports 0-byte placeholder module: {banned}",
+ )
+
+
+class TestRetiredModulesExposeTheirExplanationAsADocstring(unittest.TestCase):
+ """
+ These files exist to be read. Their whole content is an explanation of what used to be here,
+ where those names come from now, and how they have to be spelled -- so the explanation has to
+ reach `help()` and `__doc__`, not merely sit in the file.
+
+ It did not. Twelve of them opened with `from __future__ import annotations` above the string,
+ which makes the string an expression statement rather than a docstring: `ast.get_docstring`
+ returned `None` for every one, and `help(module)` showed nothing. The import bought nothing
+ either -- none of these modules has an annotation to postpone. This pins the outcome rather
+ than the cause, so any future way of losing the docstring fails here too.
+ """
+
+ RETIRED = (
+ "pythonx/compose/ui/alignment.py",
+ "pythonx/compose/ui/unit/__init__.py",
+ "pythonx/compose/layout/arrangement.py",
+ "pythonx/compose/layout/__init__.py",
+ )
+
+ def test_each_retired_module_has_a_real_docstring(self) -> None:
+ for relative in self.RETIRED:
+ path = REPO / relative
+ with self.subTest(module=relative):
+ tree = ast.parse(path.read_text(encoding="utf-8"))
+ doc = ast.get_docstring(tree)
+ self.assertIsNotNone(
+ doc,
+ f"{relative}'s explanation is not a docstring -- check for a statement above it",
+ )
+ self.assertGreater(len(doc.strip()), 40, f"{relative}'s docstring says almost nothing")
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_material3_module.py b/tests/test_material3_module.py
new file mode 100644
index 0000000..7224424
--- /dev/null
+++ b/tests/test_material3_module.py
@@ -0,0 +1,244 @@
+"""`pythonx/compose/material3/` -- which per-declaration wrappers the adaptation layer already covers.
+
+`Text` is the one this asserts, and only this one: `docs/...` (`ComposableRenderTest.kt`,
+`PythonMultiplatform` commit `c60bcfeb`) proved `from pythonx.compose.material3 import Text;
+Text('hi')` draws real pixels through the walked `material3` jar with **no Python wrapper at all** --
+the same shape `test_modifier_module.py` proved for `Modifier.padding`. `pythonx/compose/material3/
+text.py` predates that: it imports `androidx.compose.material3.TextKt` directly (a mechanism this
+tree no longer has) and, on the way in, does the exact `name.startswith("Text-")` mangled-suffix
+search `test_modifier_module.TheShellIsGone` already bans for `Modifier` -- the same impossible
+search, since Kotlin's value-class mangling suffix hashes the signature and not the name. It cannot
+be repaired; it can only be removed, the way `modifier.py`'s copy of it was.
+
+Nothing here proves Compose still renders `Text` -- that is `ComposableRenderTest.kt`'s job, in the
+other repository, and it needs a JVM this repository does not have. What this checks is local: that
+the dead wrapper is gone and nothing in this repository still points at it.
+
+`Icon`, `ColorScheme`, `lightColorScheme` and `darkColorScheme` are the same shape (`TextKt` /
+`IconKt` / `ColorSchemeKt` imports, the same mangled-suffix search) but nothing has independently
+confirmed them walked and rendering the way `Text` is confirmed -- so they are left alone here rather
+than asserted dead on architecture alone. `docs/` and the migration report list them as the same
+class of finding, unconfirmed.
+
+`Button`, `Card`, `ListItem`, `Badge`/`BadgedBox`, `MaterialTheme` and (half of) `IconButton` are the
+same shape again, on `PythonMultiplatform` commit `a6742a1c` (`ComposableRenderTest.kt`): each renders
+from Python with no wrapper, content lambda and `on_click` included where the declaration has one.
+
+`icon_button.py` is now gone entirely. `PythonMultiplatform` commit `3fde8bd6`
+(`CallbackDrivenRenderTest.kt`) is the render proof the previous version of this module's docstring
+said was missing: it drives `Checkbox`'s `onCheckedChange` with a real pointer press and release
+through `ImageComposeScene.sendPointerEvent` -- no window, no display -- and asserts the Python
+callback ran with the value Compose handed it (`_cb_events == [True]`) and that a fresh render shows
+the state it wrote. `theSameCallbackShapeIsDrivenOnASecondDeclaration` repeats it on `Switch`,
+deliberately: a different file (`SwitchKt` vs `CheckboxKt`), a different declaration, the identical
+`(Boolean) -> Unit` shape, written specifically to rule out "a lucky slot index that only happens to
+work for `Checkbox`". `IconToggleButton`/`FilledIconToggleButton`/`FilledTonalIconToggleButton`/
+`OutlinedIconToggleButton` are a *third* declaration (`IconButtonKt`, a third file again) with that
+same shape and the same parameter names (`checked: Boolean`, `onCheckedChange: (Boolean) -> Unit`) --
+the evidence the render test was built to generalise across declaration boundaries applies to them
+for the same reason it already covers two unrelated files. So the four toggle classes are deleted the
+same way `IconButton`'s plain siblings were.
+
+`text_field.py`'s `TextField`/`OutlinedTextField` were the one case the callback-shape
+generalisation above could not reach: `on_value_change` is `(String) -> Unit`, not
+`(Boolean) -> Unit`, and `CallbackDrivenRenderTest.kt` used to drive only the Boolean shape. That gap
+is closed now. `PythonMultiplatform` commit `cac8243f`
+(`typingIntoATextFieldInvokesThePythonCallbackWithTheStringAndTheNextRenderShowsIt` and
+`twoKeystrokesAccumulateAcrossTwoFreshScenes`, both in `CallbackDrivenRenderTest.kt`) delivers real
+key events through `ImageComposeScene.sendKeyEvent` to a `pythonx`-bound `TextField`, asserts the
+Python callback received the typed string, and asserts a fresh render shows it -- then repeats that
+across two scenes to show the string *accumulates* (`'h'` then `'hi'`), not just that one keystroke
+lands. That is the same evidentiary bar the `(Boolean) -> Unit` shape met for `Checkbox`/`Switch`,
+now met for `(String) -> Unit`, so `text_field.py` is gone the same way `icon_button.py` was.
+
+Nothing here proves Compose still renders `IconToggleButton` or `TextField` when it composes for
+real -- that render-with-real-Compose claim is what `CallbackDrivenRenderTest.kt` supplies, in the
+other repository. What this file checks is local: that the dead wrapper is gone and nothing in this
+repository still points at it, the same thing it already checked for `Text` and for `Button`'s
+siblings.
+"""
+
+from __future__ import annotations
+
+import importlib.util
+import sys
+import types
+import unittest
+from pathlib import Path
+
+REPO = Path(__file__).resolve().parents[1]
+MATERIAL3_DIR = REPO / "pythonx" / "compose" / "material3"
+MATERIAL3_INIT = MATERIAL3_DIR / "__init__.py"
+
+
+def _load_by_path(path: Path, name: str) -> types.ModuleType:
+ """Load a `pythonx/...` file directly, the same way `test_modifier_module.py` and
+ `test_runtime_module.py` do (`pythonx` has no real filesystem path once the host's adapter has
+ installed a synthetic one, so tests read the file off disk instead).
+ """
+ spec = importlib.util.spec_from_file_location(name, path)
+ module = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(module)
+ return module
+
+
+class TheTextWrapperIsGone(unittest.TestCase):
+ """`Text` needs no Python: `pythonx.compose.material3.Text` is a walked declaration."""
+
+ def test_text_module_does_not_exist(self):
+ self.assertFalse(
+ (MATERIAL3_DIR / "text.py").exists(),
+ "text.py is a per-declaration wrapper the adaptation layer already covers "
+ "(PythonMultiplatform commit c60bcfeb renders Text('hi') with none)",
+ )
+
+ def test_material3_package_does_not_import_a_text_module(self):
+ # Substring guard: `.text` is the exact submodule this test is about. (`text_field.py` used
+ # to need the same care -- it was a real, still-pending wrapper -- but `TheTextFieldWrapperIsGone`
+ # now asserts it is deleted outright, so there is no longer a `.text`-prefixed sibling to
+ # avoid colliding with.)
+ source = MATERIAL3_INIT.read_text(encoding="utf-8")
+ self.assertNotIn("from .text import", source)
+
+
+class TheRenderProvenWrappersAreGone(unittest.TestCase):
+ """Each of these files was the same `text.py`/`modifier.py` template: `__COMPILED_CODE__`,
+ `find_composable`, and a `name.startswith("-")` mangled-suffix search over `*Kt.__dict__`.
+ `PythonMultiplatform` commit `a6742a1c` (`ComposableRenderTest.kt`) rendered one declaration per
+ file from Python with no wrapper at all, which is the same evidence `Text` had -- so the whole
+ file goes, the same way `text.py` did.
+ """
+
+ # module filename -> (render test that proved it, declaration(s) it proves)
+ PROVEN_FILES = {
+ "buttons.py": (
+ "buttonComposesItsClickHandlerAndItsRowScopedContent", "Button"
+ ),
+ "cards.py": (
+ "cardResolvesToTheNonClickableOverloadAndDrawsItsContent", "Card"
+ ),
+ "lists.py": (
+ "listItemComposesItsHeadlineContentUnderItsSnakeCasedName", "ListItem"
+ ),
+ "badge.py": (
+ "badgeDrawsItsLeafFormWithNoArgumentsAndMoreWithContent / "
+ "badgedBoxComposesBothItsBadgeAndItsContentScopes", "Badge, BadgedBox"
+ ),
+ "material_theming.py": (
+ "materialThemeComposesAZeroArgumentContentLambda", "MaterialTheme"
+ ),
+ }
+
+ def test_proven_wrapper_files_do_not_exist(self):
+ for filename, (test_name, decl) in self.PROVEN_FILES.items():
+ self.assertFalse(
+ (MATERIAL3_DIR / filename).exists(),
+ f"{filename} wraps {decl}, which {test_name} already proves the adaptation layer "
+ "renders with no Python wrapper (PythonMultiplatform commit a6742a1c)",
+ )
+
+ def test_material3_package_does_not_import_the_deleted_modules(self):
+ source = MATERIAL3_INIT.read_text(encoding="utf-8")
+ for filename in self.PROVEN_FILES:
+ module = filename[:-3] # strip ".py"
+ self.assertNotIn(
+ f"from .{module} import", source,
+ f"__init__.py still imports the deleted {filename}",
+ )
+
+
+class TheIconButtonModuleIsEntirelyGone(unittest.TestCase):
+ """`IconButton` and its plain siblings had the same render proof as `Button`
+ (`iconButtonComposesItsClickHandlerAndItsContent`, commit `a6742a1c`) and were already deleted
+ here. The toggle variants (`IconToggleButton`, `FilledIconToggleButton`,
+ `FilledTonalIconToggleButton`, `OutlinedIconToggleButton`) are gone too now: `PythonMultiplatform`
+ commit `3fde8bd6` (`CallbackDrivenRenderTest.kt`) proves the `(Boolean) -> Unit` callback shape
+ they share with `Checkbox`/`Switch` is driven end to end by a real pointer event on two unrelated
+ declarations, and the toggle buttons are a third declaration with the identical shape. With both
+ halves proven, the whole file is redundant -- the same conclusion `text.py`'s deletion reached for
+ a single declaration, reached here for all four.
+ """
+
+ def test_icon_button_module_does_not_exist(self):
+ self.assertFalse(
+ (MATERIAL3_DIR / "icon_button.py").exists(),
+ "icon_button.py wrapped IconButton (already render-proven, a6742a1c) and the "
+ "IconToggleButton family, whose (Boolean) -> Unit callback shape is now render-proven "
+ "on two other declarations (3fde8bd6, CallbackDrivenRenderTest.kt)",
+ )
+
+ def test_material3_package_does_not_import_icon_button(self):
+ source = MATERIAL3_INIT.read_text(encoding="utf-8")
+ self.assertNotIn("from .icon_button import", source)
+
+
+class TheTextFieldWrapperIsGone(unittest.TestCase):
+ """`text_field.py` wrapped `TextField`/`OutlinedTextField`, whose `on_value_change` is
+ `(String) -> Unit`. `PythonMultiplatform` commit `cac8243f`
+ (`CallbackDrivenRenderTest.kt`'s `typingIntoATextFieldInvokesThePythonCallbackWithTheStringAndTheNextRenderShowsIt`
+ and `twoKeystrokesAccumulateAcrossTwoFreshScenes`) drives that exact shape end to end -- real key
+ events, a Python callback receiving the typed string, a fresh render showing it, and the string
+ accumulating across scenes -- the same bar `3fde8bd6` met for `(Boolean) -> Unit` on
+ `Checkbox`/`Switch` before `icon_button.py` was deleted on it. With that proof in hand the
+ hand-written wrapper is redundant the same way, so it is deleted the same way.
+ """
+
+ def test_text_field_module_does_not_exist(self):
+ self.assertFalse(
+ (MATERIAL3_DIR / "text_field.py").exists(),
+ "text_field.py wrapped TextField/OutlinedTextField, whose (String) -> Unit callback is "
+ "now render-proven end to end (PythonMultiplatform commit cac8243f, "
+ "CallbackDrivenRenderTest.kt)",
+ )
+
+ def test_material3_package_does_not_import_text_field(self):
+ source = MATERIAL3_INIT.read_text(encoding="utf-8")
+ self.assertNotIn("from .text_field import", source)
+
+
+class ThePackageDoesNotImportTheRecords(unittest.TestCase):
+ """`icon.py` / `color_scheme.py` are not imported by the package, so they shadow nothing.
+
+ Star-importing them made `import pythonx.compose.material3` reach for `androidx.compose.material3`
+ at load time and put a dead `Icon` class in front of the one the re-export rule serves.
+ """
+
+ def test_the_package_init_does_not_import_them(self):
+ source = MATERIAL3_INIT.read_text(encoding="utf-8")
+ self.assertNotIn("from .icon import", source)
+ self.assertNotIn("from .color_scheme import", source)
+
+ def test_the_package_imports_with_no_binder_installed(self):
+ import importlib
+ import sys
+
+ for name in [n for n in sys.modules if n == "pythonx.compose.material3" or n.startswith("androidx")]:
+ del sys.modules[name]
+ sys.path.insert(0, str(REPO))
+ try:
+ module = importlib.import_module("pythonx.compose.material3")
+ finally:
+ sys.path.remove(str(REPO))
+ self.assertNotIn("Icon", vars(module))
+
+
+class TheDeadFilesAreGone(unittest.TestCase):
+ """`material3/` holds the package `__init__.py` and nothing else.
+
+ `icon.py` and `color_scheme.py` were dead reflection code (a mangled-name search INTENT section 3
+ excludes) that nothing imported any more, and 29 sibling files were zero bytes since before the
+ adaptation layer existed. What `icon.py` recorded -- `Icon` needs an `ImageVector` nothing bound
+ produces, and the colour-scheme factories need 36 `Color` parameters -- is in SPEC S5.3. Deleted
+ with the ecosystem lead's approval (pythonx-compose #31).
+ """
+
+ def test_only_the_package_init_remains(self):
+ files = sorted(p.name for p in MATERIAL3_DIR.glob("*.py"))
+ self.assertEqual(["__init__.py"], files)
+
+ def test_the_wrapper_package_is_gone(self):
+ self.assertFalse((REPO / "pythonx" / "compose" / "wrapper").exists())
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_modifier_module.py b/tests/test_modifier_module.py
new file mode 100644
index 0000000..f8936d4
--- /dev/null
+++ b/tests/test_modifier_module.py
@@ -0,0 +1,120 @@
+"""`pythonx/compose/ui/modifier.py` -- the seam, and the shell it replaced.
+
+Two things are asserted here and they matter in opposite directions.
+
+**That the file does something.** `install()` is what makes `Modifier.padding(16).size(24)` work
+from the class object; without it the layer refuses, by design, rather than guessing where an empty
+`Modifier` comes from.
+
+**That the file does almost nothing.** The 2024 version was a per-declaration wrapper and the whole
+adaptation design exists to make those unnecessary, so this checks that no `def padding` has crept
+back and that the mangled-name prefix search is gone. That search
+(`name.startswith("Button-")`) is what the 2024 tree was stuck on, and it cannot be made to work:
+Kotlin's value-class mangling suffix hashes the signature only, so `padding`, `size`, `width` and
+`height` all end `-3ABfNKs`.
+"""
+
+from __future__ import annotations
+
+import sys
+import unittest
+from pathlib import Path
+
+sys.path.insert(0, str(Path(__file__).resolve().parent))
+
+import adapter as adapter_loader # noqa: E402
+import fake_host # noqa: E402
+
+REPO = Path(__file__).resolve().parents[1]
+MODIFIER_PY = REPO / "pythonx" / "compose" / "ui" / "modifier.py"
+
+
+class TheModifierSeam(unittest.TestCase):
+
+ def setUp(self):
+ try:
+ self.binding = adapter_loader.install()
+ except adapter_loader.AdapterUnavailable as unavailable:
+ self.skipTest(str(unavailable))
+ self.host = fake_host.FakeHost()
+ self.host.bind()
+ self.host.register(self.binding)
+ import pythonx.compose.ui.modifier as modifier
+
+ self.modifier = modifier
+ self.addCleanup(self.host.unbind)
+ self.addCleanup(adapter_loader.uninstall)
+
+ def describe(self, modifier):
+ import pythonx.compose.ui as ui
+
+ return ui.describe_modifier(modifier)
+
+ def test_install_returns_the_same_proxy_the_module_import_gives(self):
+ import pythonx.compose.ui as ui
+
+ installed = self.modifier.install(fake_host.EMPTY_MODIFIER)
+ self.assertIs(ui.Modifier, installed)
+
+ def test_the_chain_runs_from_the_class_object_once_installed(self):
+ Modifier = self.modifier.install(fake_host.EMPTY_MODIFIER)
+ self.assertEqual(
+ "padding(16.0) -> size(24.0)", self.describe(Modifier.padding(16).size(24))
+ )
+ self.assertEqual(["padding__Dp", "size__Dp"], self.host.calls)
+
+ def test_the_module_level_modifier_attribute_resolves_lazily(self):
+ self.modifier.install(fake_host.EMPTY_MODIFIER)
+ self.assertIs(self.modifier.Modifier, self.modifier.modifier_type())
+
+ def test_without_a_layer_it_says_the_host_never_installed_one(self):
+ adapter_loader.uninstall()
+ with self.assertRaises(RuntimeError) as raised:
+ self.modifier.adapter()
+ self.assertIn("PythonxAdapter.install()", str(raised.exception))
+
+ def test_the_placeholder_factory_is_labelled_as_unbound(self):
+ """It is not a working default and the file must not pretend it is."""
+ self.assertEqual("androidx.compose.ui.emptyModifier",
+ self.modifier.PLACEHOLDER_EMPTY_FACTORY)
+ # The constant's own docstring, read from source. Python attaches no `__doc__` to a
+ # module-level name, so asking the module for it returns the *module* docstring and the
+ # assertion passes or fails on unrelated prose.
+ source = MODIFIER_PY.read_text(encoding="utf-8")
+ after = source.split("PLACEHOLDER_EMPTY_FACTORY =", 1)[1]
+ self.assertIn("not** bound", after.split("\n\n", 1)[0])
+
+
+class TheShellIsGone(unittest.TestCase):
+ """No per-declaration wrapper, and no mangled-name prefix search."""
+
+ def setUp(self):
+ # Code only. The module docstring names the very things this class bans -- it has to, since
+ # it explains why they are banned -- so reading the raw file makes the guard fail on the
+ # warning against the mistake rather than on the mistake. Strings and comments are stripped
+ # by tokenising, which also means a banned name inside a future comment cannot mask itself.
+ import io, tokenize
+
+ raw = MODIFIER_PY.read_text(encoding="utf-8")
+ kept = []
+ for tok in tokenize.generate_tokens(io.StringIO(raw).readline):
+ if tok.type in (tokenize.STRING, tokenize.COMMENT):
+ continue
+ kept.append(tok.string)
+ self.source = " ".join(kept)
+
+ def test_no_composable_wrapper_survives(self):
+ for banned in ("__COMPILED_CODE__", "c=self.composer", "changed=1", "def compose("):
+ self.assertNotIn(banned, self.source, f"{banned} is 2024 wrapper code")
+
+ def test_no_declaration_is_named_in_python(self):
+ for banned in ("def padding", "def fill_max_size", "def size", "ButtonKt"):
+ self.assertNotIn(banned, self.source, f"{banned} would be per-declaration Python")
+
+ def test_no_name_is_looked_up_by_its_mangled_jvm_spelling(self):
+ self.assertNotIn('startswith("Button-")', self.source)
+ self.assertNotIn(".__dict__.items()", self.source)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_pythonx_map.py b/tests/test_pythonx_map.py
new file mode 100644
index 0000000..b3faf8e
--- /dev/null
+++ b/tests/test_pythonx_map.py
@@ -0,0 +1,152 @@
+"""The manifest this package owes, pinned against the two things that consume it.
+
+`pythonx-map.toml` is the only reason `python-multiplatform` no longer has to know Compose exists.
+Two different readers use it -- the runtime adapter, through whatever an embedder installs, and the
+`.pyi` generator -- so the failure it exists to prevent is the two disagreeing about a module name.
+That is not hypothetical: the binder used to derive names by prefix substitution, which cannot drop
+`foundation.` from the middle of `androidx.compose.foundation.layout`, so the stubs said
+`pythonx.compose.layout` and the interpreter refused it.
+
+`UI.ipynb` is the specification these tests read the expected names out of, rather than restating
+them, so a notebook edit that adds an import fails here until the map covers it.
+"""
+
+from __future__ import annotations
+
+import json
+import re
+import tomllib
+import unittest
+from pathlib import Path
+
+REPO = Path(__file__).resolve().parents[1]
+MAP = REPO / "pythonx" / "compose" / "pythonx-map.toml"
+NOTEBOOK = REPO / "UI.ipynb"
+
+
+def _manifest() -> dict:
+ with MAP.open("rb") as handle:
+ return tomllib.load(handle)
+
+
+def _notebook_imports() -> set[str]:
+ if not NOTEBOOK.is_file():
+ return set()
+ notebook = json.loads(NOTEBOOK.read_text(encoding="utf-8"))
+ found: set[str] = set()
+ for cell in notebook.get("cells", []):
+ if cell.get("cell_type") != "code":
+ continue
+ source = "".join(cell.get("source", []))
+ found.update(re.findall(r"from (pythonx[\w.]*) import", source))
+ found.update(re.findall(r"^import (pythonx[\w.]*)", source, re.MULTILINE))
+ return found
+
+
+class TestManifestShipsWithThePackage(unittest.TestCase):
+ def test_the_manifest_exists_and_parses(self) -> None:
+ self.assertTrue(MAP.is_file(), f"{MAP.name} is what this package owes the binder")
+ manifest = _manifest()
+ self.assertIn("modules", manifest)
+ self.assertIn("value-classes", manifest)
+
+ def test_the_wheel_is_configured_to_carry_it(self) -> None:
+ with (REPO / "pyproject.toml").open("rb") as handle:
+ project = tomllib.load(handle)
+ package_data = project["tool"]["setuptools"]["package-data"]
+ patterns = [p for entry in package_data.values() for p in entry]
+ self.assertIn("pythonx-map.toml", patterns, "a manifest nobody installs helps nobody")
+
+
+class TestEveryNotebookImportIsMapped(unittest.TestCase):
+ def test_the_specification_resolves(self) -> None:
+ if not NOTEBOOK.is_file():
+ self.skipTest("UI.ipynb is not here (it lives only in the maintainer's main checkout)")
+ modules = _manifest()["modules"]
+ missing = sorted(name for name in _notebook_imports() if name not in modules)
+ self.assertEqual([], missing, "UI.ipynb imports a module the manifest does not map")
+
+ def test_the_short_layout_spelling_drops_foundation(self) -> None:
+ # The case that proves a prefix substitution cannot do this job.
+ modules = _manifest()["modules"]
+ self.assertEqual(
+ "androidx.compose.foundation.layout",
+ modules["pythonx.compose.layout"],
+ "the rename in the middle of the name is the whole reason this file exists",
+ )
+
+
+def _lent_names(lent) -> dict:
+ """Both forms of one source's entry as {name lent: attribute path in the source}."""
+ if isinstance(lent, list):
+ return {name: name for name in lent}
+ return dict(lent)
+
+
+class TestAliasSection(unittest.TestCase):
+ def test_every_alias_points_between_mapped_modules(self) -> None:
+ manifest = _manifest()
+ modules = manifest["modules"]
+ for owner, sources in manifest.get("aliases", {}).items():
+ with self.subTest(owner=owner):
+ self.assertIn(owner, modules)
+ for source in sources:
+ self.assertIn(source, modules)
+
+ def test_an_entry_is_a_list_of_names_or_a_table_of_name_to_path(self) -> None:
+ for owner, sources in _manifest().get("aliases", {}).items():
+ for source, lent in sources.items():
+ with self.subTest(owner=owner, source=source):
+ if isinstance(lent, list):
+ self.assertTrue(lent and all(isinstance(name, str) for name in lent))
+ else:
+ self.assertIsInstance(lent, dict)
+ for name, path in lent.items():
+ self.assertTrue(name.isidentifier(), name)
+ self.assertTrue(
+ all(part.isidentifier() for part in path.split(".")),
+ f"{name} = {path!r} is not an attribute path",
+ )
+
+ def test_no_owner_lends_one_name_twice(self) -> None:
+ for owner, sources in _manifest().get("aliases", {}).items():
+ names = [name for lent in sources.values() for name in _lent_names(lent)]
+ with self.subTest(owner=owner):
+ self.assertEqual(sorted(set(names)), sorted(names))
+
+ def test_material3_answers_for_the_layout_composables_the_notebook_imports(self) -> None:
+ aliases = _manifest()["aliases"]["pythonx.compose.material3"]["pythonx.compose.layout"]
+ self.assertEqual(["Column", "Row", "Spacer"], aliases)
+
+ def test_material3_answers_for_default_icons_as_icons_default(self) -> None:
+ # INTENT 5.7: a different name, through an attribute path, and the icons package is mapped.
+ manifest = _manifest()
+ lent = manifest["aliases"]["pythonx.compose.material3"]["pythonx.compose.material.icons"]
+ self.assertEqual({"DefaultIcons": "Icons.Default"}, lent)
+ self.assertEqual(
+ "androidx.compose.material.icons", manifest["modules"]["pythonx.compose.material.icons"]
+ )
+
+ def test_every_mapped_module_is_a_package_on_disk(self) -> None:
+ # AGENTS.md 12: `pythonx/` is a real package; a manifest row without its file is a module
+ # the stubs describe and the interpreter cannot import.
+ for module in _manifest()["modules"]:
+ with self.subTest(module=module):
+ init = REPO.joinpath(*module.split(".")) / "__init__.py"
+ self.assertTrue(init.is_file(), f"{module} has a manifest row but no {init}")
+
+
+class TestValueClassSection(unittest.TestCase):
+ def test_dp_is_allowed_and_packed_classes_are_not(self) -> None:
+ allowed = _manifest()["value-classes"]["raw-primitive-allowed"]
+ self.assertIn("androidx.compose.ui.unit.Dp", allowed)
+ for packed in ("androidx.compose.ui.graphics.Color", "androidx.compose.ui.unit.TextUnit"):
+ self.assertNotIn(
+ packed,
+ allowed,
+ f"{packed} packs several fields into one value; a raw number decodes as something else",
+ )
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_release_version.py b/tests/test_release_version.py
new file mode 100644
index 0000000..3753c9b
--- /dev/null
+++ b/tests/test_release_version.py
@@ -0,0 +1,47 @@
+"""The release gate (`.github/scripts/check_release_version.py`): a tag publishes only when it is
+`v` + the version in `pyproject.toml`. Run both ways -- a match passes, anything else fails."""
+
+from __future__ import annotations
+
+import subprocess
+import sys
+import tomllib
+import unittest
+from pathlib import Path
+
+REPO = Path(__file__).resolve().parents[1]
+SCRIPT = REPO / ".github" / "scripts" / "check_release_version.py"
+VERSION = tomllib.loads((REPO / "pyproject.toml").read_text(encoding="utf-8"))["project"]["version"]
+
+
+def _run(tag: str) -> subprocess.CompletedProcess[str]:
+ return subprocess.run([sys.executable, str(SCRIPT), tag], cwd=REPO, capture_output=True, text=True)
+
+
+class TestReleaseVersion(unittest.TestCase):
+ def test_matching_tag_passes(self) -> None:
+ result = _run(f"v{VERSION}")
+ self.assertEqual(0, result.returncode, result.stdout + result.stderr)
+
+ def test_ref_form_of_the_tag_passes(self) -> None:
+ self.assertEqual(0, _run(f"refs/tags/v{VERSION}").returncode)
+
+ def test_mismatched_tag_fails_and_names_both(self) -> None:
+ result = _run("v9.9.9")
+ self.assertEqual(1, result.returncode)
+ self.assertIn("v9.9.9", result.stderr)
+ self.assertIn(f"v{VERSION}", result.stderr)
+
+ def test_tag_without_the_v_prefix_fails(self) -> None:
+ self.assertEqual(1, _run(VERSION).returncode)
+
+ def test_a_prefix_of_the_version_fails(self) -> None:
+ self.assertEqual(1, _run(f"v{VERSION}.post1").returncode)
+
+ def test_no_argument_fails(self) -> None:
+ result = subprocess.run([sys.executable, str(SCRIPT)], cwd=REPO, capture_output=True, text=True)
+ self.assertNotEqual(0, result.returncode)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_runtime_module.py b/tests/test_runtime_module.py
new file mode 100644
index 0000000..52ecce7
--- /dev/null
+++ b/tests/test_runtime_module.py
@@ -0,0 +1,155 @@
+"""`pythonx/compose/runtime/__init__.py` -- the 2024 `Composable` class, gone, and what is left.
+
+## What used to be here, and why it never ran
+
+A decorator class (`Composable`) holding one `__composer`, plus `ComposeApp`, `KotlinComposable`,
+`KotlinWidget` and a `CoroutineScope` family, all built on `jclass` --
+`_runtime = jclass("io.github.thisisthepy.pycomposeui.RuntimeKt")` -- chaquopy's name-based
+Java/Kotlin class lookup. `jclass` is never imported in this module, in any commit where the module
+had content, so every one of those five module-level statements raised `NameError` before a single
+class body executed:
+
+ >>> from pythonx.compose.runtime import Composable
+ NameError: name 'jclass' is not defined
+
+That is not incidental breakage, it is a different technology than this repository now targets.
+`jclass` is chaquopy's global; `PythonMultiplatform`'s binder is a different bridge
+(`docs/pythonx-adapter-design.md` §5.1 reads the same class as "the 2024 `Composable` class", and
+`agent-rules.md` §12 retires name-based JVM lookup by name). `Composable.__call__`'s other job --
+inspecting `self.compose.__code__.co_varnames` to find where `content` sits -- is retired for the
+same reason `modifier.py`'s mangled-suffix search was: `docs/pythonx-adapter-design.md` §5.6/§7
+record that composer threading, `$changed` and `$default` are now arithmetic
+`python_multiplatform.binding._bind_composable` does from a slot's *declared type*, uniformly, for a content lambda
+exactly as for any other parameter -- there is nothing left for a Python-side base class to detect.
+
+## What is left
+
+One identity decorator, `Composable`, kept because `UI.ipynb` writes `@Composable` on every
+screen-defining function and that surface is one an application author should keep being able to
+write. Nothing needs to happen to the decorated function for it to work: the composer any nested
+`pythonx.compose.*` call needs comes from `PythonComposition`'s push/pop around the whole exec pass
+and from the *callee's* slot type, never from the caller.
+
+## How it is reached
+
+By its own dotted name, with the binder installed: `TheModuleIsTheFileOnDisk` below. This used to
+assert the opposite, because the binder owned `sys.modules['pythonx']` with `__path__ = []`.
+"""
+
+from __future__ import annotations
+
+import io
+import sys
+import tokenize
+import unittest
+from pathlib import Path
+
+sys.path.insert(0, str(Path(__file__).resolve().parent))
+sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
+
+import adapter as adapter_loader # noqa: E402
+import fake_host # noqa: E402
+
+REPO = Path(__file__).resolve().parents[1]
+RUNTIME_PY = REPO / "pythonx" / "compose" / "runtime" / "__init__.py"
+
+
+class TheModuleIsTheFileOnDisk(unittest.TestCase):
+ """`import pythonx.compose.runtime` loads this repository's file, with the binder installed.
+
+ The binder used to own `sys.modules['pythonx']` with `__path__ = []`, and this class asserted
+ the resulting unreachability. PythonMultiplatform `d00f413f` moved its layer to
+ `python_multiplatform.binding`; `pythonx` is this package (AGENTS.md section 12).
+ """
+
+ def setUp(self):
+ try:
+ self.binding = adapter_loader.install()
+ except adapter_loader.AdapterUnavailable as unavailable:
+ self.skipTest(str(unavailable))
+ self.host = fake_host.FakeHost()
+ self.host.bind()
+ self.host.register(self.binding)
+ self.addCleanup(self.host.unbind)
+ self.addCleanup(adapter_loader.uninstall)
+
+ def test_import_pythonx_compose_runtime_loads_the_file_on_disk(self):
+ import pythonx.compose.runtime as runtime
+
+ self.assertEqual(RUNTIME_PY, Path(runtime.__file__).resolve())
+ self.assertTrue(callable(runtime.Composable))
+
+ def test_pythonx_compose_is_a_package_on_disk(self):
+ import pythonx.compose as compose
+
+ self.assertEqual([str(REPO / "pythonx" / "compose")], [str(Path(p).resolve()) for p in compose.__path__])
+
+
+class TheRuntimeSeam(unittest.TestCase):
+ """What `Composable` does once loaded by path: nothing to the function it decorates."""
+
+ def setUp(self):
+ import pythonx.compose.runtime as runtime
+
+ self.runtime = runtime
+
+ def test_composable_is_importable_and_callable(self):
+ self.assertTrue(callable(self.runtime.Composable))
+
+ def test_composable_returns_the_exact_function_it_decorated(self):
+ def Screen():
+ return "drawn"
+
+ decorated = self.runtime.Composable(Screen)
+ self.assertIs(decorated, Screen, "Composable must not wrap or replace the function")
+
+ def test_a_composable_function_still_runs_and_returns_its_own_value(self):
+ @self.runtime.Composable
+ def Screen():
+ return 42
+
+ self.assertEqual(42, Screen())
+
+ def test_composable_preserves_name_and_doc_because_it_does_not_wrap(self):
+ @self.runtime.Composable
+ def Screen():
+ """A screen."""
+
+ self.assertEqual("Screen", Screen.__name__)
+ self.assertEqual("A screen.", Screen.__doc__)
+
+
+class TheChaquopyMechanismIsGone(unittest.TestCase):
+ """No `jclass`, no base class to inherit, no `co_varnames` content-slot detection."""
+
+ def setUp(self):
+ # Code only, the same tokenising `test_modifier_module.TheShellIsGone` uses -- the module
+ # docstring has to name the very things this bans in order to explain why, so a raw
+ # substring check would fail on its own warning.
+ raw = RUNTIME_PY.read_text(encoding="utf-8")
+ kept = []
+ for tok in tokenize.generate_tokens(io.StringIO(raw).readline):
+ if tok.type in (tokenize.STRING, tokenize.COMMENT):
+ continue
+ kept.append(tok.string)
+ self.source = " ".join(kept)
+
+ def test_no_chaquopy_lookup_survives(self):
+ for banned in ("jclass", "ComposeApp", "KotlinComposable", "KotlinWidget",
+ "CoroutineScope", "ComposableLambdaImpl", "composableWrapper"):
+ self.assertNotIn(banned, self.source, f"{banned} is 2024 chaquopy-era code")
+
+ def test_no_content_slot_is_detected_by_inspecting_code_objects(self):
+ for banned in ("co_varnames", "__composer", "_register_composer"):
+ self.assertNotIn(banned, self.source, f"{banned} is the retired composer-threading path")
+
+ def test_composable_takes_no_arguments_beyond_the_target(self):
+ import inspect
+
+ import pythonx.compose.runtime as runtime
+ sig = inspect.signature(runtime.Composable)
+ self.assertEqual(1, len(sig.parameters), "an identity decorator needs exactly one parameter")
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_stubs.py b/tests/test_stubs.py
new file mode 100644
index 0000000..654d928
--- /dev/null
+++ b/tests/test_stubs.py
@@ -0,0 +1,647 @@
+"""Pythonic stubs from the binder's Kotlin-named ones, by the rule the runtime resolves names with.
+
+The inputs here are two fixtures shaped like python-multiplatform's `PythonStubsTask` output, holding
+the same declarations `fake_host.py` binds: `kotlin_stubs` in the first format (bare functions,
+explicit overloads only) and `kotlin_stubs_v2` in the current one (`import typing as _t`, one stub
+class per bound Kotlin type with its extension members as `ClassVar`s of callable protocols, the
+binder's own `@overload` sets, Kotlin objects either as `/__init__.pyi` or as a class in the
+parent stub). So `TheStubMatchesTheRuntime` can do what a stub is for and check it: the signature an
+editor reads from the stub is the signature `inspect.signature` reports at run time.
+
+`kotlin_stubs_v3` is the format of python-multiplatform #53, #44 and #38: an object stub that declares its
+nested Kotlin types as classes (`End: Horizontal`), object functions as explicit overloads, and properties
+with `@name.setter`.
+
+`TheCommittedStubs` holds the stubs this repository ships to the real input, python-multiplatform's
+`kotlin-stubs` artefact, when it has been downloaded to `.tmp/kotlin-stubs.zip`.
+"""
+
+from __future__ import annotations
+
+import ast
+import inspect
+import sys
+import tempfile
+import unittest
+import zipfile
+from pathlib import Path
+
+HERE = Path(__file__).resolve().parent
+REPO = HERE.parent
+sys.path.insert(0, str(HERE))
+sys.path.insert(0, str(REPO / "pythonx" / "_build"))
+sys.path.insert(0, str(REPO))
+
+import adapter as adapter_loader # noqa: E402
+import fake_host # noqa: E402
+import gen_stubs # noqa: E402
+
+KOTLIN_STUBS = HERE / "fixtures" / "kotlin_stubs"
+KOTLIN_STUBS_V2 = HERE / "fixtures" / "kotlin_stubs_v2"
+KOTLIN_STUBS_V3 = HERE / "fixtures" / "kotlin_stubs_v3"
+KOTLIN_STUBS_V4 = HERE / "fixtures" / "kotlin_stubs_v4"
+ARTEFACT = REPO / ".tmp" / "kotlin-stubs.zip"
+PACKAGE = REPO / "pythonx"
+COMPOSE = PACKAGE / "compose"
+
+LAYOUT = COMPOSE / "layout" / "__init__.pyi"
+LONG_LAYOUT = COMPOSE / "foundation" / "layout" / "__init__.pyi"
+UI = COMPOSE / "ui" / "__init__.pyi"
+TEXT = COMPOSE / "ui" / "text" / "__init__.pyi"
+MATERIAL3 = COMPOSE / "material3" / "__init__.pyi"
+ICONS = COMPOSE / "material" / "icons" / "__init__.pyi"
+
+
+def _generated(root: Path = KOTLIN_STUBS) -> dict[Path, str]:
+ return gen_stubs.generate(root, PACKAGE)
+
+
+def _functions(text: str) -> dict[str, list[ast.FunctionDef]]:
+ found: dict[str, list[ast.FunctionDef]] = {}
+ for node in ast.parse(text).body:
+ if isinstance(node, ast.FunctionDef):
+ found.setdefault(node.name, []).append(node)
+ return found
+
+
+def _classes(text: str) -> dict[str, ast.ClassDef]:
+ return {node.name: node for node in ast.parse(text).body if isinstance(node, ast.ClassDef)}
+
+
+def _members(cls: ast.ClassDef) -> dict[str, ast.stmt]:
+ found: dict[str, ast.stmt] = {}
+ for node in cls.body:
+ if isinstance(node, ast.AnnAssign) and isinstance(node.target, ast.Name):
+ found[node.target.id] = node
+ elif isinstance(node, ast.FunctionDef):
+ found.setdefault(node.name, node)
+ return found
+
+
+def _parameter_names(function: ast.FunctionDef) -> list[str]:
+ a = function.args
+ return [p.arg for p in (*a.posonlyargs, *a.args, *a.kwonlyargs)]
+
+
+def _imports(text: str) -> list[str]:
+ return [ast.unparse(node) for node in ast.parse(text).body if isinstance(node, (ast.Import, ast.ImportFrom))]
+
+
+def _code_names(text: str) -> set[str]:
+ """Every dotted name the stub's code (not its docstrings or comments) refers to."""
+ names = set()
+ for node in ast.walk(ast.parse(text)):
+ if isinstance(node, (ast.Attribute, ast.Name)):
+ names.add(ast.unparse(node))
+ return names
+
+
+class TheConversion(unittest.TestCase):
+ """The first upstream format, still converted the way it always was."""
+
+ def setUp(self):
+ self.stubs = _generated()
+
+ def test_every_manifest_module_gets_a_stub_beside_its_init(self):
+ for module_name in gen_stubs.manifest()["modules"]:
+ path = PACKAGE.joinpath(*module_name.split(".")[1:]) / "__init__.pyi"
+ with self.subTest(module=module_name):
+ self.assertIn(path, self.stubs)
+
+ def test_names_and_parameters_follow_the_runtime_rule(self):
+ functions = _functions(self.stubs[LAYOUT])
+ self.assertIn("padding_values_of", functions)
+ self.assertIn("fill_max_width", functions)
+ self.assertNotIn("paddingValuesOf", functions)
+ self.assertEqual(["receiver", "padding_values"], _parameter_names(functions["padding__PaddingValues"][0]))
+
+ def test_an_overload_set_gets_its_base_name_as_overloads(self):
+ padding = _functions(self.stubs[LAYOUT])["padding"]
+ self.assertEqual(4, len(padding))
+ for variant in padding:
+ self.assertEqual(["_t.overload"], [ast.unparse(d) for d in variant.decorator_list])
+
+ def test_overloads_come_fewest_parameters_first(self):
+ """mypy takes the first matching overload, so the order is part of the contract."""
+ padding = _functions(self.stubs[LAYOUT])["padding"]
+ counts = [len(_parameter_names(variant)) for variant in padding]
+ self.assertEqual(sorted(counts), counts)
+ self.assertEqual(2, counts[0])
+
+ def test_anonymous_and_receiver_slots_keep_their_names(self):
+ scan = _functions(self.stubs[LAYOUT])["scan"][0]
+ self.assertEqual(["receiver", "first", "__a1", "last"], _parameter_names(scan))
+
+ def test_a_nested_object_stub_becomes_a_class_in_its_parent(self):
+ arrangement = _classes(self.stubs[LAYOUT])["Arrangement"]
+ self.assertEqual("_t.ClassVar[int]", ast.unparse(_members(arrangement)["SpaceBetween"].annotation))
+
+ def test_names_the_package_defines_itself_are_carried_over(self):
+ runtime = self.stubs[COMPOSE / "runtime" / "__init__.pyi"]
+ self.assertIn("def Composable(target)", runtime)
+
+ def test_a_public_annotated_name_the_package_declares_is_carried_over(self):
+ # `runtime.app_root` is created on first read by a module `__getattr__`, so `__init__.py`
+ # only annotates it; the stub must still say it exists.
+ runtime = self.stubs[COMPOSE / "runtime" / "__init__.pyi"]
+ self.assertIn("app_root: State", runtime)
+ self.assertIn("def app(root)", runtime)
+ self.assertIn("def state(initial)", runtime)
+
+ def test_every_stub_is_valid_python(self):
+ for path, text in self.stubs.items():
+ with self.subTest(stub=str(path.relative_to(REPO))):
+ compile(text, str(path), "exec")
+
+
+class TheCurrentFormat(unittest.TestCase):
+ """The current upstream format: stub classes, protocols, the binder's own overload sets."""
+
+ def setUp(self):
+ self.stubs = _generated(KOTLIN_STUBS_V2)
+
+ def test_module_functions_and_their_parameters_follow_the_runtime_rule(self):
+ functions = _functions(self.stubs[LAYOUT])
+ self.assertIn("padding_values_of", functions)
+ self.assertIn("fill_max_width", functions)
+ self.assertNotIn("fillMaxWidth", functions)
+ self.assertEqual(["receiver", "padding_values"], _parameter_names(functions["padding__PaddingValues"][0]))
+
+ def test_keyword_only_parameters_stay_keyword_only(self):
+ column = _functions(self.stubs[LAYOUT])["Column"][0]
+ self.assertEqual(["modifier", "vertical_arrangement"], [a.arg for a in column.args.args])
+ self.assertEqual(["content"], [a.arg for a in column.args.kwonlyargs])
+
+ def test_the_binders_overload_set_is_kept_in_its_order(self):
+ padding = _functions(self.stubs[LAYOUT])["padding"]
+ self.assertEqual(
+ [["receiver", "all"], ["receiver", "horizontal", "vertical"],
+ ["receiver", "start", "top", "end", "bottom"], ["receiver", "padding_values"]],
+ [_parameter_names(variant) for variant in padding],
+ )
+ for variant in padding:
+ self.assertEqual(["_t.overload"], [ast.unparse(d) for d in variant.decorator_list])
+
+ def test_the_binders_type_ignore_comments_survive(self):
+ """Without them mypy reports the binder's unreachable overloads in every program that imports the stub."""
+ lines = [line for line in self.stubs[LAYOUT].splitlines() if line.startswith("def padding(")]
+ self.assertEqual(4, len(lines))
+ self.assertNotIn("# type: ignore", lines[0])
+ for line in lines[1:]:
+ self.assertTrue(line.endswith("# type: ignore[overload-cannot-match]"), line)
+
+ def test_a_stub_class_keeps_its_name_and_its_members_follow_the_member_resolver(self):
+ modifier = _members(_classes(self.stubs[UI])["Modifier"])
+ self.assertIn("fill_max_width", modifier)
+ self.assertIn("padding__PaddingValues", modifier)
+ self.assertIn("z_index", modifier)
+ self.assertNotIn("fillMaxWidth", modifier)
+ self.assertEqual("_t.ClassVar[_Modifier_zIndex]", ast.unparse(modifier["z_index"].annotation))
+
+ def test_a_methods_keywords_are_snake_case_like_a_module_functions(self):
+ """The runtime translates a method's keywords (SPEC S4.1); the receiver slot keeps its name."""
+ protocols = _classes(self.stubs[UI])
+ call = _members(protocols["_Modifier_padding__PaddingValues"])["__call__"]
+ self.assertEqual(["self", "padding_values"], _parameter_names(call))
+ call = _members(protocols["_Modifier_zIndex"])["__call__"]
+ self.assertEqual(["self", "z_index"], _parameter_names(call))
+
+ def test_every_protocol_parameter_is_snake_case_and_keyword_only_stays_so(self):
+ names = []
+ for protocol in _classes(self.stubs[UI]).values():
+ for node in protocol.body:
+ if isinstance(node, ast.FunctionDef) and node.name == "__call__":
+ names += [n for n in _parameter_names(node) if n != "self" and not n.startswith("__a")]
+ self.assertIn("padding_values", names)
+ self.assertEqual([], [n for n in names if n != gen_stubs.snake_case(n)])
+ approach = _members(_classes(self.stubs[UI])["_Modifier_approachLayout"]) \
+ if "_Modifier_approachLayout" in _classes(self.stubs[UI]) else None
+ if approach is not None:
+ self.assertTrue(approach["__call__"].args.kwonlyargs)
+
+ def test_the_header_records_the_input_and_says_nothing_of_kotlin_keywords(self):
+ header = self.stubs[UI].splitlines()[:2]
+ self.assertTrue(header[0].startswith("# GENERATED by pythonx/_build/gen_stubs.py"), header[0])
+ self.assertNotIn("keyword", self.stubs[UI].splitlines()[1])
+ self.assertNotIn("Methods are reached by", self.stubs[UI])
+
+ def test_references_to_mapped_kotlin_packages_name_the_pythonx_module(self):
+ text = self.stubs[LAYOUT]
+ self.assertIn("import pythonx.compose.ui", _imports(text))
+ column = _functions(text)["Column"][0]
+ self.assertEqual("pythonx.compose.ui.Modifier", ast.unparse(column.args.args[0].annotation))
+ self.assertFalse({name for name in _code_names(text) if name.startswith("androidx")})
+
+ def test_the_first_manifest_module_for_a_package_is_the_one_referenced(self):
+ call = _members(_classes(self.stubs[UI])["_Modifier_column"])["__call__"]
+ self.assertEqual("pythonx.compose.layout.ColumnScope", ast.unparse(call.args.args[1].annotation))
+ self.assertIn("import pythonx.compose.layout", _imports(self.stubs[UI]))
+
+ def test_unmapped_or_undeclared_references_become_any(self):
+ z_index_of = _functions(self.stubs[LAYOUT])["z_index_of"][0]
+ self.assertEqual("_t.Any", ast.unparse(z_index_of.returns))
+ self.assertNotIn("import androidx.compose.ui.draw", _imports(self.stubs[LAYOUT]))
+ text = _functions(self.stubs[MATERIAL3])["Text"][0]
+ annotations = {a.arg: ast.unparse(a.annotation) for a in text.args.args}
+ self.assertEqual("_t.Any", annotations["inline_content"]) # kotlin.collections: unmapped
+ self.assertEqual("_t.Any", annotations["style"]) # ui.text declares no ParagraphStyle
+ self.assertEqual(
+ "_t.Callable[[pythonx.compose.ui.text.TextLayoutResult], None] | None", annotations["on_text_layout"]
+ )
+ self.assertEqual(
+ ["import typing as _t", "import pythonx.compose.ui", "import pythonx.compose.ui.text"],
+ [
+ line for line in _imports(self.stubs[MATERIAL3])
+ if not line.startswith("from ") and " as _alias_" not in line # the DefaultIcons path alias
+ ],
+ )
+
+ def test_an_object_sub_package_becomes_a_class_in_its_parent(self):
+ arrangement = _members(_classes(self.stubs[LAYOUT])["Arrangement"])
+ self.assertEqual("_t.ClassVar[_t.Any]", ast.unparse(arrangement["SpaceBetween"].annotation))
+ spaced_by = arrangement["spaced_by"]
+ self.assertEqual(["staticmethod"], [ast.unparse(d) for d in spaced_by.decorator_list])
+ self.assertEqual(["space"], _parameter_names(spaced_by))
+
+ def test_an_object_already_in_its_parent_stub_is_kept(self):
+ """python-multiplatform #44 moves objects into the parent stub; that layout converts the same."""
+ alignment = _members(_classes(self.stubs[UI])["Alignment"])
+ self.assertEqual({"Center", "CenterHorizontally", "End", "Top"}, set(alignment))
+
+ def test_an_object_shadowed_by_a_function_of_its_name_is_left_out(self):
+ """At run time `TextStyle` reaches the function, so `TextStyle.Default` is not there to stub."""
+ notes: list[str] = []
+ stubs = gen_stubs.generate(KOTLIN_STUBS_V2, PACKAGE, notes)
+ self.assertNotIn("TextStyle", _classes(stubs[TEXT]))
+ self.assertEqual(["font_size"], _parameter_names(_functions(stubs[TEXT])["TextStyle"][0]))
+ self.assertNotIn("Default", _code_names(stubs[TEXT]))
+ self.assertEqual(
+ ["androidx.compose.ui.text.TextStyle"], [note.split(":")[0] for note in notes if "shadowed" in note]
+ )
+
+ def test_no_stub_lands_where_it_would_make_a_namespace_package(self):
+ """A directory holding only `__init__.pyi` imports as a namespace package and would shadow
+ the `KotlinObject` the re-export rule serves for that name."""
+ for path in self.stubs:
+ with self.subTest(stub=str(path.relative_to(REPO))):
+ self.assertTrue((path.parent / "__init__.py").is_file())
+
+ def test_a_second_module_for_the_same_package_re_exports_the_first(self):
+ self.assertEqual(["from pythonx.compose.layout import *"], _imports(self.stubs[LONG_LAYOUT]))
+
+ def test_aliases_are_re_exported(self):
+ imports = _imports(self.stubs[MATERIAL3])
+ for name in ("Column", "Row", "Spacer"):
+ self.assertIn(f"from pythonx.compose.layout import {name} as {name}", imports)
+
+ def test_a_renamed_path_alias_is_the_same_path_in_the_owners_stub(self):
+ # `DefaultIcons` is `Icons.Default` of the icons module: not an import of that name (it
+ # differs), but the same expression, so a checker reads what the icons stub says it is.
+ text = self.stubs[MATERIAL3]
+ self.assertIn("import pythonx.compose.material.icons as _alias_0", text)
+ assigned = {
+ n.targets[0].id: ast.unparse(n.value)
+ for n in gen_stubs.parse(text).body
+ if isinstance(n, ast.Assign) and isinstance(n.targets[0], ast.Name)
+ }
+ self.assertEqual("_alias_0.Icons.Default", assigned.get("DefaultIcons"))
+ self.assertNotIn("DefaultIcons as", text)
+
+ def test_a_constant_named_like_a_python_keyword_is_left_out(self):
+ source = (
+ "import typing as _t\n\nNone: _t.Any\n\"\"\"Kotlin: a.B.None(): a.B\"\"\"\n\n"
+ "Hairline: float\n\"\"\"Kotlin: a.B.Hairline(): a.B\"\"\"\n"
+ )
+ tree = gen_stubs.parse(source)
+ self.assertEqual(["Hairline"], [n.target.id for n in tree.body if isinstance(n, ast.AnnAssign)])
+
+ def test_a_zip_converts_like_the_directory_and_tolerates_case_colliding_paths(self):
+ (REPO / ".tmp").mkdir(exist_ok=True)
+ with tempfile.TemporaryDirectory(dir=REPO / ".tmp") as scratch:
+ archive = Path(scratch) / "kotlin-stubs.zip"
+ with zipfile.ZipFile(archive, "w") as out:
+ for path in sorted(KOTLIN_STUBS_V2.rglob("*.pyi")):
+ out.write(path, path.relative_to(KOTLIN_STUBS_V2).as_posix())
+ # The real artefact holds both: a package and an object differing only in case.
+ out.writestr("androidx/compose/ui/text/shadow/__init__.pyi", "import typing as _t\n")
+ out.writestr("androidx/compose/ui/text/Shadow/__init__.pyi", "import typing as _t\n\nNone: _t.Any\n")
+ from_zip = _generated(archive)
+ from_directory = _generated(KOTLIN_STUBS_V2)
+ self.assertEqual(sorted(from_directory), sorted(from_zip))
+ for path, text in from_directory.items():
+ if path == TEXT:
+ continue
+ with self.subTest(stub=str(path.relative_to(REPO))):
+ # Line 1 names the input, which differs; everything after it is the conversion.
+ self.assertEqual(text.splitlines()[1:], from_zip[path].splitlines()[1:])
+ self.assertIn("Shadow", _classes(from_zip[TEXT]))
+
+ def test_every_stub_is_valid_python(self):
+ for path, text in self.stubs.items():
+ with self.subTest(stub=str(path.relative_to(REPO))):
+ compile(text, str(path), "exec")
+
+
+def _nested(cls: ast.ClassDef) -> dict[str, ast.ClassDef]:
+ return {node.name: node for node in cls.body if isinstance(node, ast.ClassDef)}
+
+
+def _constants(cls: ast.ClassDef) -> set[str]:
+ return {n.target.id for n in cls.body if isinstance(n, ast.AnnAssign) and isinstance(n.target, ast.Name)}
+
+
+class TheConstantGroups(unittest.TestCase):
+ """SPEC S7.1: an object's constants grouped by the nested type their docstring declares."""
+
+ OBJECT_IN_PARENT = (
+ "import typing as _t\n\n"
+ "class Obj:\n"
+ " \"\"\"Kotlin: a.b.Obj\"\"\"\n"
+ " Left: _t.ClassVar[_t.Any]\n"
+ " \"\"\"Kotlin: a.b.Obj.Left(): a.b.Obj.Side\"\"\"\n"
+ " Right: _t.ClassVar[_t.Any]\n"
+ " \"\"\"Kotlin: a.b.Obj.Right(): a.b.Obj.Side\"\"\"\n"
+ " Whole: _t.ClassVar[_t.Any]\n"
+ " \"\"\"Kotlin: a.b.Obj.Whole(): a.b.Obj\"\"\"\n"
+ " Deep: _t.ClassVar[_t.Any]\n"
+ " \"\"\"Kotlin: a.b.Obj.Deep(): a.b.Obj.Side.Inner\"\"\"\n"
+ " Other: _t.ClassVar[_t.Any]\n"
+ " \"\"\"Kotlin: a.b.Obj.Other(): a.c.Side\"\"\"\n"
+ )
+
+ def setUp(self):
+ self.stubs = _generated(KOTLIN_STUBS_V2)
+
+ def convert(self, source: str) -> dict[str, ast.ClassDef]:
+ return _classes(gen_stubs.Converter(gen_stubs.KotlinStubs(KOTLIN_STUBS_V2)).convert(source, "a.b"))
+
+ def test_constants_are_grouped_by_their_declared_nested_type(self):
+ arrangement = _classes(self.stubs[LAYOUT])["Arrangement"]
+ groups = _nested(arrangement)
+ self.assertEqual(["Horizontal", "HorizontalOrVertical", "Vertical"], sorted(groups))
+ self.assertEqual({"End", "Start"}, _constants(groups["Horizontal"]))
+ self.assertEqual({"Top"}, _constants(groups["Vertical"]))
+ self.assertEqual({"SpaceBetween"}, _constants(groups["HorizontalOrVertical"]))
+ self.assertEqual(
+ "_t.ClassVar[_t.Any]", ast.unparse(_members(groups["Horizontal"])["End"].annotation)
+ )
+
+ def test_the_flat_constants_stay(self):
+ arrangement = _members(_classes(self.stubs[LAYOUT])["Arrangement"])
+ self.assertTrue({"End", "Start", "Top", "SpaceBetween", "spaced_by"} <= set(arrangement))
+
+ def test_an_object_class_in_the_parent_stub_is_grouped_too(self):
+ obj = self.convert(self.OBJECT_IN_PARENT)["Obj"]
+ self.assertEqual(["Side"], sorted(_nested(obj)))
+ self.assertEqual({"Left", "Right"}, _constants(_nested(obj)["Side"]))
+ self.assertEqual({"Left", "Right", "Whole", "Deep", "Other"}, _constants(obj))
+
+ def test_a_member_named_like_the_type_wins(self):
+ source = self.OBJECT_IN_PARENT + (
+ " Side: _t.ClassVar[_t.Any]\n"
+ " \"\"\"Kotlin: a.b.Obj.Side(): a.b.Obj.Side\"\"\"\n"
+ )
+ obj = self.convert(source)["Obj"]
+ self.assertEqual({}, _nested(obj))
+ self.assertIn("Side", _constants(obj))
+
+ def test_a_class_with_no_such_constants_gets_no_groups(self):
+ for name, cls in _classes(self.stubs[UI]).items():
+ with self.subTest(cls=name):
+ self.assertEqual({}, _nested(cls))
+
+
+class TheObjectAndPropertyFormat(unittest.TestCase):
+ """The upstream format of python-multiplatform #53 (objects), #38 (properties) and #44."""
+
+ def setUp(self):
+ self.stubs = _generated(KOTLIN_STUBS_V3)
+ self.alignment = _classes(self.stubs[UI])["Alignment"]
+ self.arrangement = _classes(self.stubs[LAYOUT])["Arrangement"]
+
+ def test_a_property_and_its_setter_are_renamed_together(self):
+ scene = _classes(self.stubs[UI])["Scene"]
+ functions = [n for n in scene.body if isinstance(n, ast.FunctionDef)]
+ self.assertEqual(["layout_direction", "layout_direction", "is_minimized", "is_minimized"],
+ [f.name for f in functions])
+ self.assertEqual(
+ [["property"], ["layout_direction.setter"], ["property"], ["is_minimized.setter"]],
+ [[ast.unparse(d) for d in f.decorator_list] for f in functions],
+ )
+
+ def test_an_objects_nested_types_become_the_constant_groups(self):
+ """The nested class is the Kotlin type and the notebook's group at once."""
+ nested = _nested(self.alignment)
+ self.assertEqual(["Horizontal", "Vertical"], sorted(nested))
+ self.assertEqual({"End"}, _constants(nested["Horizontal"]))
+ self.assertEqual({"Top"}, _constants(nested["Vertical"]))
+ self.assertIn("Kotlin: androidx.compose.ui.Alignment.Horizontal", ast.get_docstring(nested["Horizontal"]))
+
+ def test_a_constant_is_typed_with_its_nested_type_qualified(self):
+ for cls, name, annotation in (
+ (self.alignment, "End", "_t.ClassVar[Alignment.Horizontal]"),
+ (self.alignment, "Center", "_t.ClassVar[_t.Any]"),
+ (_nested(self.alignment)["Horizontal"], "End", "_t.ClassVar[Alignment.Horizontal]"),
+ (self.arrangement, "End", "_t.ClassVar[Arrangement.Horizontal]"),
+ # Derived from another nested type upstream, though Kotlin's is also a Vertical: Any.
+ (self.arrangement, "SpaceBetween", "_t.ClassVar[_t.Any]"),
+ (_nested(self.arrangement)["HorizontalOrVertical"], "SpaceBetween", "_t.ClassVar[_t.Any]"),
+ ):
+ with self.subTest(constant=name, annotation=annotation):
+ self.assertEqual(annotation, ast.unparse(_members(cls)[name].annotation))
+
+ def test_a_nested_types_base_is_qualified_too(self):
+ bases = _nested(self.arrangement)["HorizontalOrVertical"].bases
+ self.assertEqual(["Arrangement.Horizontal"], [ast.unparse(b) for b in bases])
+
+ def test_a_reference_to_an_objects_nested_type_names_the_pythonx_module(self):
+ column = _functions(self.stubs[LAYOUT])["Column"][0]
+ self.assertEqual(
+ ["pythonx.compose.ui.Alignment.Vertical", "pythonx.compose.ui.Alignment.Horizontal"],
+ [ast.unparse(a.annotation) for a in column.args.args],
+ )
+ aligned = _members(self.arrangement)["aligned__Horizontal"]
+ self.assertEqual("pythonx.compose.ui.Alignment.Horizontal", ast.unparse(aligned.args.args[0].annotation))
+ self.assertEqual("Arrangement.Horizontal", ast.unparse(aligned.returns))
+
+ def test_an_object_function_is_a_snake_case_static_method(self):
+ members = self.arrangement.body
+ spaced = [n for n in members if isinstance(n, ast.FunctionDef) and n.name.startswith("spaced_by")]
+ self.assertEqual(["spaced_by", "spaced_by__Dp"], sorted(f.name for f in spaced))
+ for function in spaced:
+ self.assertIn("staticmethod", [ast.unparse(d) for d in function.decorator_list])
+ self.assertEqual("_t.Any", ast.unparse(function.returns))
+
+ def test_an_object_functions_overload_set_gets_its_base_name(self):
+ aligned = [n for n in self.arrangement.body if isinstance(n, ast.FunctionDef) and n.name == "aligned"]
+ self.assertEqual(2, len(aligned))
+ for function in aligned:
+ self.assertEqual(["staticmethod", "_t.overload"], [ast.unparse(d) for d in function.decorator_list])
+
+
+class TheMultiBaseAndIconFormat(unittest.TestCase):
+ """python-multiplatform #71 (a nested type lists every base) and #68 (icons are typed properties)."""
+
+ def setUp(self):
+ self.stubs = _generated(KOTLIN_STUBS_V4)
+ self.arrangement = _classes(self.stubs[LAYOUT])["Arrangement"]
+
+ def test_a_nested_type_with_two_bases_is_trusted_and_names_both(self):
+ both = _nested(self.arrangement)["HorizontalOrVertical"]
+ self.assertEqual(["Arrangement.Horizontal", "Arrangement.Vertical"], [ast.unparse(b) for b in both.bases])
+ for cls, name in ((self.arrangement, "SpaceBetween"), (both, "SpaceBetween")):
+ self.assertEqual(
+ "_t.ClassVar[Arrangement.HorizontalOrVertical]", ast.unparse(_members(cls)[name].annotation)
+ )
+ spaced = [n for n in self.arrangement.body if isinstance(n, ast.FunctionDef) and n.name == "spaced_by"]
+ self.assertEqual("Arrangement.HorizontalOrVertical", ast.unparse(spaced[0].returns))
+
+ def test_a_nested_type_with_one_base_is_still_any(self):
+ """The old input cannot say it is also a `Vertical`: nothing is claimed (the v3 fixture)."""
+ arrangement = _classes(_generated(KOTLIN_STUBS_V3)[LAYOUT])["Arrangement"]
+ self.assertEqual("_t.ClassVar[_t.Any]", ast.unparse(_members(arrangement)["SpaceBetween"].annotation))
+
+ def test_a_single_sided_constant_keeps_its_one_type(self):
+ self.assertEqual("_t.ClassVar[Arrangement.Horizontal]", ast.unparse(_members(self.arrangement)["End"].annotation))
+
+ def test_an_icon_is_a_property_typed_as_an_image_vector(self):
+ icons = _classes(self.stubs[ICONS])["Icons"]
+ add = _members(_nested(icons)["Filled"])["Add"]
+ self.assertEqual(["property"], [ast.unparse(d) for d in add.decorator_list])
+ self.assertEqual("pythonx.compose.ui.graphics.vector.ImageVector", ast.unparse(add.returns))
+ self.assertIn("import pythonx.compose.ui.graphics.vector", _imports(self.stubs[ICONS]))
+
+ def test_a_nested_container_keeps_its_icons_with_the_kotlin_spelling(self):
+ mirrored = _nested(_nested(_classes(self.stubs[ICONS])["Icons"])["AutoMirrored"])["Filled"]
+ self.assertEqual({"ArrowBack"}, set(_members(mirrored)))
+ self.assertEqual("_t.ClassVar[Icons.Filled]", ast.unparse(_members(_classes(self.stubs[ICONS])["Icons"])["Default"].annotation))
+
+
+class TheConstructorShapedFunction(unittest.TestCase):
+ """A class and an explicit overload set of its name (`DpRect__Dp_Dp_Dp_Dp`) in one stub."""
+
+ SOURCE = (
+ "import typing as _t\n\n"
+ "class Rect:\n"
+ " def __init__(self, left: float, top: float) -> None: ...\n\n"
+ "def Rect__Dp_Dp(left: float, top: float) -> Rect: ...\n"
+ "def Spot__Dp(left: float) -> float: ...\n"
+ )
+
+ def test_the_class_keeps_its_name_and_the_function_gets_no_base_name(self):
+ text = gen_stubs.Converter(gen_stubs.KotlinStubs(KOTLIN_STUBS_V4)).convert(self.SOURCE, "a.b")
+ self.assertEqual(["Rect"], list(_classes(text)))
+ self.assertEqual(["Rect__Dp_Dp", "Spot__Dp", "Spot"], list(_functions(text)))
+ ast.parse(text)
+
+
+class TheCommittedStubs(unittest.TestCase):
+ """What ships is what the generator makes of python-multiplatform's `kotlin-stubs` artefact."""
+
+ def test_py_typed_and_a_stub_for_every_mapped_module_are_committed(self):
+ self.assertTrue((COMPOSE / "py.typed").is_file())
+ for module_name in gen_stubs.manifest()["modules"]:
+ with self.subTest(module=module_name):
+ self.assertTrue((PACKAGE.joinpath(*module_name.split(".")[1:]) / "__init__.pyi").is_file())
+
+ def test_the_committed_stubs_are_exactly_what_the_artefact_generates(self):
+ if not ARTEFACT.is_file():
+ self.skipTest(
+ f"{ARTEFACT.relative_to(REPO)} is absent: download python-multiplatform's `kotlin-stubs` "
+ "artefact there to check the committed stubs against it"
+ )
+ generated = gen_stubs.generate(ARTEFACT, PACKAGE)
+ committed = {
+ path for path in COMPOSE.rglob("*.pyi")
+ if "lite" not in path.relative_to(COMPOSE).parts
+ }
+ self.assertEqual(sorted(committed), sorted(generated))
+ for path, text in generated.items():
+ with self.subTest(stub=str(path.relative_to(REPO))):
+ self.assertEqual(text, path.read_text(encoding="utf-8"))
+
+ def test_the_committed_icons_stub_declares_icons_and_material3_declares_default_icons(self):
+ icons = ICONS.read_text(encoding="utf-8")
+ self.assertIn("Icons", _classes(icons))
+ self.assertIn("DefaultIcons = _alias_0.Icons.Default", MATERIAL3.read_text(encoding="utf-8"))
+
+ def test_the_committed_alignment_and_arrangement_carry_their_groups(self):
+ alignment = _nested(_classes(UI.read_text(encoding="utf-8"))["Alignment"])
+ self.assertEqual({"CenterHorizontally", "End", "Start"}, _constants(alignment["Horizontal"]))
+ self.assertEqual({"Bottom", "CenterVertically", "Top"}, _constants(alignment["Vertical"]))
+ arrangement = _nested(_classes(LAYOUT.read_text(encoding="utf-8"))["Arrangement"])
+ self.assertEqual(
+ {"Center", "SpaceAround", "SpaceBetween", "SpaceEvenly"}, _constants(arrangement["HorizontalOrVertical"])
+ )
+
+
+class TheStubMatchesTheRuntime(unittest.TestCase):
+ """What an editor reads from the stub is what `inspect.signature` reports at run time."""
+
+ def setUp(self):
+ try:
+ self.binding = adapter_loader.install()
+ except adapter_loader.AdapterUnavailable as unavailable:
+ self.skipTest(str(unavailable))
+ self.host = fake_host.FakeHost()
+ self.host.bind()
+ self.host.register(self.binding)
+ self.addCleanup(self.host.unbind)
+ self.addCleanup(adapter_loader.uninstall)
+
+ def test_each_single_declaration_has_the_same_parameter_names(self):
+ import pythonx.compose.layout as layout
+
+ functions = _functions(_generated()[LAYOUT])
+ for name in ("padding__Dp", "padding__Dp_Dp", "padding__PaddingValues", "padding_values_of",
+ "size__Dp", "fill_max_width"):
+ with self.subTest(name=name):
+ runtime = list(inspect.signature(getattr(layout, name)).parameters)
+ self.assertEqual(runtime, _parameter_names(functions[name][0]))
+
+ def test_the_current_format_has_the_same_parameter_names(self):
+ import pythonx.compose.layout as layout
+ import pythonx.compose.ui as ui
+
+ stubs = _generated(KOTLIN_STUBS_V2)
+ functions = {**_functions(stubs[LAYOUT]), **_functions(stubs[UI])}
+ for module, name in ((layout, "padding__Dp"), (layout, "padding__Dp_Dp"),
+ (layout, "padding__Dp_Dp_Dp_Dp"), (layout, "padding__PaddingValues"),
+ (layout, "padding_values_of"), (layout, "size__Dp"),
+ (layout, "fill_max_width"), (ui, "describe_modifier"), (ui, "to_url_string")):
+ with self.subTest(name=name):
+ runtime = list(inspect.signature(getattr(module, name)).parameters)
+ self.assertEqual(runtime, _parameter_names(functions[name][0]))
+
+ def test_an_object_function_has_the_same_parameter_names(self):
+ import pythonx.compose.layout as layout
+
+ arrangement = _members(_classes(_generated(KOTLIN_STUBS_V2)[LAYOUT])["Arrangement"])
+ runtime = list(inspect.signature(layout.Arrangement.spaced_by).parameters)
+ self.assertEqual(runtime, _parameter_names(arrangement["spaced_by"]))
+
+ def test_an_object_constant_in_the_stub_is_read_at_run_time(self):
+ import pythonx.compose.layout as layout
+ import pythonx.compose.ui as ui
+
+ stubs = _generated(KOTLIN_STUBS_V2)
+ for module, stub, name in ((layout, LAYOUT, "Arrangement"), (ui, UI, "Alignment")):
+ for constant in _members(_classes(stubs[stub])[name]):
+ with self.subTest(constant=f"{name}.{constant}"):
+ self.assertIsNotNone(getattr(getattr(module, name), constant))
+
+ def test_a_group_in_the_stub_holds_what_the_runtime_group_holds(self):
+ import python_multiplatform
+ import pythonx.compose.layout as layout
+
+ if len(inspect.signature(python_multiplatform.describe).parameters) < 2:
+ self.skipTest("the binder has no describe(module, name) yet (python-multiplatform #36)")
+ groups = _nested(_classes(_generated(KOTLIN_STUBS_V2)[LAYOUT])["Arrangement"])
+ self.assertTrue(groups)
+ for name, group in groups.items():
+ with self.subTest(group=name):
+ self.assertEqual(sorted(_constants(group)), dir(getattr(layout.Arrangement, name)))
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_text_field.py b/tests/test_text_field.py
new file mode 100644
index 0000000..22c2e87
--- /dev/null
+++ b/tests/test_text_field.py
@@ -0,0 +1,116 @@
+"""`TextField(state=...)`: the state-based overload, and the module that makes its state (issue #10).
+
+Compose owns the text buffer and the IME composing region, so nothing crosses into Python per
+keystroke; Python creates a `TextFieldState` and reads or writes it on demand. There is no
+per-widget wrapper: `TextField` is androidx's, re-exported by rule, and
+`pythonx.compose.foundation.text.input` is the manifest row that reaches `TextFieldState` and
+`rememberTextFieldState`.
+
+These tests go through `pythonx.compose.*` against the fake host's rows (`tests/fake_host.py`
+says what they are shaped after). What they prove is the Python half: the module resolves, a
+constructor and a composable are called with the right slots, a property is read as `str`, an
+extension is a snake_case method, and the `state=` keyword selects the state overload. They do not
+prove that Compose accepts a composing sequence with no Python callback -- that is
+python-multiplatform's render test (E2E #26), judged over up to four frames.
+"""
+
+from __future__ import annotations
+
+import sys
+import unittest
+from pathlib import Path
+
+sys.path.insert(0, str(Path(__file__).resolve().parent))
+
+from test_chain import AdapterCase # noqa: E402
+
+
+class TextFieldCase(AdapterCase):
+
+ def setUp(self):
+ super().setUp()
+ self.needs_member_resolver()
+ if not hasattr(self.binding, "push_composer"):
+ self.skipTest("the binder has no @Composable binding (push_composer); python-multiplatform #73 shapes need it")
+ # Composable rows read the composer `push_composer` was given; a handle stands in for it.
+ self.binding.push_composer(self.host.composer())
+ self.addCleanup(self.binding.pop_composer)
+ from pythonx.compose.foundation.text import input as text_input
+ from pythonx.compose import material3
+
+ self.text_input, self.material3 = text_input, material3
+
+
+class TheTextFieldState(TextFieldCase):
+
+ def test_a_state_made_outside_composition_reads_its_text_as_a_str(self):
+ field = self.text_input.TextFieldState("hi")
+ self.assertEqual("hi", field.text)
+ self.assertIsInstance(field.text, str)
+
+ def test_the_initial_text_is_optional(self):
+ self.assertEqual("", self.text_input.TextFieldState().text)
+
+ def test_set_text_and_place_cursor_at_end_writes_it(self):
+ field = self.text_input.TextFieldState("hi")
+ field.set_text_and_place_cursor_at_end("hello")
+ self.assertEqual("hello", field.text)
+ self.assertIn("setTextAndPlaceCursorAtEnd", self.host.calls)
+
+ def test_clear_text_empties_it(self):
+ field = self.text_input.TextFieldState("hi")
+ field.clear_text()
+ self.assertEqual("", field.text)
+
+ def test_remember_text_field_state_is_the_composable_that_makes_one(self):
+ field = self.text_input.remember_text_field_state("draft")
+ self.assertEqual("draft", field.text)
+ self.assertEqual(["rememberTextFieldState"], self.host.composable_calls)
+
+ def test_remember_text_field_state_needs_a_composition(self):
+ self.binding.pop_composer()
+ self.addCleanup(lambda: self.binding.push_composer(self.host.composer()))
+ with self.assertRaises(RuntimeError):
+ self.text_input.remember_text_field_state("")
+
+ def test_the_kotlin_spelling_works_too(self):
+ field = self.text_input.TextFieldState(initialText="kt")
+ self.assertEqual("kt", field.text)
+
+
+class TheStateOverload(TextFieldCase):
+
+ def test_state_selects_the_state_overload(self):
+ field = self.text_input.TextFieldState("hi")
+ self.material3.TextField(state=field)
+ self.assertEqual(["TextField__TextFieldState"], self.host.composable_calls)
+
+ def test_keywords_are_snake_case_and_reach_the_row(self):
+ field = self.text_input.TextFieldState("hi")
+ self.material3.TextField(state=field, read_only=True, is_error=True)
+ self.assertEqual({"readOnly": True, "isError": True}, self.host.last_text_field_flags)
+
+ def test_the_notebook_spelling_is_a_modifier(self):
+ Modifier = self.register_empty()
+ field = self.text_input.TextFieldState("hi")
+ self.material3.TextField(state=field, modifier=Modifier.padding(8))
+ self.assertEqual("padding(8.0)", self.host.last_text_field_modifier)
+
+ def test_text_state_is_not_a_parameter(self):
+ field = self.text_input.TextFieldState("hi")
+ with self.assertRaises(TypeError):
+ self.material3.TextField(text_state=field)
+ self.assertEqual([], self.host.composable_calls)
+
+ def test_padding_is_not_a_parameter(self):
+ field = self.text_input.TextFieldState("hi")
+ with self.assertRaises(TypeError):
+ self.material3.TextField(state=field, padding=8)
+
+ def test_a_value_still_reaches_the_string_overload(self):
+ self.material3.TextField(value="x")
+ self.assertEqual(["TextField__String"], self.host.composable_calls)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_typing.py b/tests/test_typing.py
new file mode 100644
index 0000000..4849517
--- /dev/null
+++ b/tests/test_typing.py
@@ -0,0 +1,265 @@
+"""A type checker reads the committed stubs the way the interpreter resolves names.
+
+Each case is a small program type-checked by mypy against this checkout's `pythonx.compose` stubs
+(`MYPYPATH` is the repository root). Correct code must pass; a misspelled keyword or function must
+fail, naming what is wrong, because a stub that accepts everything proves nothing.
+
+Needs `mypy` importable in the running interpreter; without it the tests skip, and a skip is not a
+pass.
+"""
+
+from __future__ import annotations
+
+import importlib.util
+import os
+import subprocess
+import sys
+import tempfile
+import textwrap
+import unittest
+from pathlib import Path
+
+REPO = Path(__file__).resolve().parents[1]
+SCRATCH = REPO / ".tmp"
+
+
+def _mypy(program: str) -> tuple[int, str]:
+ """mypy's exit code and output for one program, with this checkout's stubs on the path."""
+ SCRATCH.mkdir(exist_ok=True)
+ SCRATCH.mkdir(exist_ok=True) # git-ignored, so absent on a fresh checkout such as CI's
+ with tempfile.TemporaryDirectory(dir=SCRATCH) as scratch:
+ source = Path(scratch) / "program.py"
+ source.write_text(textwrap.dedent(program), encoding="utf-8")
+ env = {**os.environ, "MYPYPATH": str(REPO)}
+ done = subprocess.run(
+ [sys.executable, "-m", "mypy", "--no-error-summary", "--show-error-codes",
+ "--cache-dir", str(Path(scratch) / "cache"), "--python-version", "3.11", str(source)],
+ cwd=REPO, env=env, capture_output=True, text=True,
+ )
+ return done.returncode, done.stdout + done.stderr
+
+
+class TheStubsTypeCheck(unittest.TestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ if importlib.util.find_spec("mypy") is None:
+ raise unittest.SkipTest("mypy is not installed; the stubs cannot be type-checked here")
+
+ def assertPasses(self, program: str) -> None:
+ code, output = _mypy(program)
+ self.assertEqual(0, code, output)
+ self.assertEqual("", output.strip())
+
+ def assertFails(self, program: str, *expected: str) -> None:
+ code, output = _mypy(program)
+ self.assertEqual(1, code, output)
+ for fragment in expected:
+ self.assertIn(fragment, output)
+
+ def test_the_notebook_imports_and_a_modifier_chain_pass(self):
+ self.assertPasses("""
+ from pythonx.compose.layout import Column, Arrangement
+ from pythonx.compose.ui import Modifier, Alignment
+ from pythonx.compose.material3 import Text, Column as M3Column, Row, Spacer
+ from pythonx.compose.runtime import Composable
+
+ def chain(m: Modifier) -> Modifier:
+ return m.padding(16).fill_max_width()
+
+ @Composable
+ def Screen() -> None:
+ Column(
+ vertical_arrangement=Arrangement.SpaceBetween,
+ horizontal_alignment=Alignment.CenterHorizontally,
+ content=lambda scope: Text("hi", font_size=20),
+ )
+ M3Column(content=lambda scope: None)
+ """)
+
+ def test_every_committed_stub_type_checks(self):
+ """mypy reports errors inside a stub it reads from the search path, so this checks them all."""
+ import tomllib
+
+ with (REPO / "pythonx" / "compose" / "pythonx-map.toml").open("rb") as handle:
+ modules = sorted(tomllib.load(handle)["modules"])
+ self.assertPasses("".join(f"import {module}\n" for module in modules))
+
+ def test_a_methods_keywords_are_snake_case_in_the_stubs(self):
+ """SPEC S4.1: the stubs are Pythonic-only; the runtime also accepts Kotlin's spelling."""
+ self.assertPasses("""
+ from pythonx.compose.ui import Modifier
+
+ Modifier.padding(padding_values=None)
+ """)
+ self.assertFails("""
+ from pythonx.compose.ui import Modifier
+
+ Modifier.padding(paddingValues=None)
+ """, '"paddingValues"', 'did you mean "padding_values"')
+
+ def test_a_modifier_chain_on_the_class_passes(self):
+ self.assertPasses("""
+ from pythonx.compose.ui import Modifier
+
+ m: Modifier = Modifier.padding(16).fill_max_width()
+ """)
+
+ def test_a_misspelled_keyword_fails(self):
+ self.assertFails("""
+ from pythonx.compose.material3 import Text
+
+ Text("hi", fontSize=20)
+ """, '"fontSize"', 'did you mean "font_size"')
+
+ def test_a_misspelled_function_fails(self):
+ self.assertFails("""
+ from pythonx.compose.ui import Modifier
+
+ Modifier.padding(16).fillMaxWidth()
+ """, '"fillMaxWidth"', "[attr-defined]")
+
+ def test_a_grouped_constant_type_checks(self):
+ """SPEC S7.1: `Alignment.Horizontal.End` beside `Alignment.End`; `Top` is no `Horizontal`."""
+ self.assertPasses("""
+ from pythonx.compose.ui import Alignment
+ from pythonx.compose.layout import Arrangement
+
+ a = Alignment.Horizontal.End
+ b = Alignment.End
+ c = Arrangement.HorizontalOrVertical.SpaceBetween
+ """)
+ self.assertFails("""
+ from pythonx.compose.ui import Alignment
+
+ Alignment.Horizontal.Top
+ """, '"Top"', "[attr-defined]")
+
+ def test_an_object_function_and_nested_types_type_check(self):
+ """SPEC S7.1: `Arrangement.spaced_by` is a static method; a nested type is the group too."""
+ self.assertPasses("""
+ from pythonx.compose.layout import Arrangement, Column
+ from pythonx.compose.ui import Alignment
+
+ a = Arrangement.spaced_by(8)
+ Column(vertical_arrangement=a, horizontal_alignment=Alignment.Horizontal.End, content=lambda scope: None)
+ Column(horizontal_alignment=Alignment.CenterHorizontally, content=lambda scope: None)
+ """)
+ self.assertFails("""
+ from pythonx.compose.layout import Arrangement
+
+ Arrangement.spacedBy(8)
+ """, '"spacedBy"', "[attr-defined]")
+ self.assertFails("""
+ from pythonx.compose.layout import Column
+ from pythonx.compose.ui import Alignment
+
+ Column(horizontal_alignment=Alignment.Vertical.Top, content=lambda scope: None)
+ """, "[arg-type]")
+
+ def test_a_property_and_its_setter_type_check(self):
+ self.assertPasses("""
+ from pythonx.compose.ui import ImageComposeScene
+
+ def flip(scene: ImageComposeScene) -> None:
+ scene.layout_direction = scene.layout_direction
+ """)
+
+ def test_default_icons_imports_from_material3(self):
+ """INTENT 5.7: the alias is `Icons.Default`, which the stub types as `Icons.Filled`;
+ `Icons.Filled.Add` is an `ImageVector` (python-multiplatform #68)."""
+ self.assertPasses("""
+ from pythonx.compose.material3 import DefaultIcons, Icon
+ from pythonx.compose.material.icons import Icons
+
+ same: Icons.Filled = DefaultIcons
+ Icon(DefaultIcons.Add, content_description=None)
+ Icon(Icons.Default.Add, content_description=None)
+ """)
+
+ def test_a_default_icon_is_an_image_vector(self):
+ """`DefaultIcons.Add` is typed, not `Any`: an `ImageVector` is no `int`."""
+ self.assertPasses("""
+ from pythonx.compose.material3 import DefaultIcons
+ from pythonx.compose.ui.graphics.vector import ImageVector
+
+ v: ImageVector = DefaultIcons.Add
+ """)
+ self.assertFails("""
+ from pythonx.compose.material3 import DefaultIcons
+
+ n: int = DefaultIcons.Add
+ """, "[assignment]")
+
+ def test_a_vertical_arrangement_constant_types_a_column_and_a_row(self):
+ """python-multiplatform #71: `SpaceBetween` is a `HorizontalOrVertical`, both a
+ `Horizontal` and a `Vertical`; `Start` is a `Horizontal` only."""
+ self.assertPasses("""
+ from pythonx.compose.layout import Arrangement, Column, Row
+
+ Column(vertical_arrangement=Arrangement.SpaceBetween, content=lambda scope: None)
+ Row(horizontal_arrangement=Arrangement.SpaceBetween, content=lambda scope: None)
+ Row(horizontal_arrangement=Arrangement.Start, content=lambda scope: None)
+ h: Arrangement.HorizontalOrVertical = Arrangement.SpaceBetween
+ """)
+ self.assertFails("""
+ from pythonx.compose.layout import Arrangement, Column
+
+ Column(vertical_arrangement=Arrangement.Start, content=lambda scope: None)
+ """, "[arg-type]")
+ self.assertFails("""
+ from pythonx.compose.layout import Arrangement
+
+ n: int = Arrangement.SpaceBetween
+ """, "HorizontalOrVertical", "[assignment]")
+
+ def test_an_unknown_default_icon_fails(self):
+ self.assertFails("""
+ from pythonx.compose.material3 import DefaultIcons
+
+ DefaultIcons.NoSuchIcon
+ """, "NoSuchIcon", "[attr-defined]")
+ self.assertFails("""
+ from pythonx.compose.material3 import DefaultIcons
+
+ DefaultIcons.NotAnIcon
+ """, "NotAnIcon", "[attr-defined]")
+
+ def test_a_text_field_state_types_the_state_overload(self):
+ """Issue #10: `TextField(state=...)`, the state made by `pythonx.compose.foundation.text.input`."""
+ self.assertPasses("""
+ from pythonx.compose.foundation.text.input import TextFieldState, remember_text_field_state
+ from pythonx.compose.material3 import TextField
+ from pythonx.compose.ui import Modifier
+
+ f = TextFieldState("hi")
+ s: str = f.text
+ f.set_text_and_place_cursor_at_end("x")
+ f.clear_text()
+ g: TextFieldState = remember_text_field_state("")
+ TextField(state=f)
+ TextField(state=f, modifier=Modifier.padding(8))
+ """)
+
+ def test_a_text_field_without_a_kotlin_counterpart_fails(self):
+ """The notebook's `text_state=` and `padding=` are written `state=` and `modifier=`."""
+ self.assertFails("""
+ from pythonx.compose.foundation.text.input import TextFieldState
+ from pythonx.compose.material3 import TextField
+
+ TextField(text_state=TextFieldState("hi"))
+ """, "text_state", "[call-overload]")
+ self.assertFails("""
+ from pythonx.compose.foundation.text.input import TextFieldState
+
+ n: int = TextFieldState("hi").text
+ """, "[assignment]")
+
+ def test_a_kotlin_spelled_module_function_fails(self):
+ self.assertFails("""
+ from pythonx.compose.layout import fillMaxWidth
+ """, "fillMaxWidth", "[attr-defined]")
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_ui_init_module.py b/tests/test_ui_init_module.py
new file mode 100644
index 0000000..3ab1536
--- /dev/null
+++ b/tests/test_ui_init_module.py
@@ -0,0 +1,77 @@
+"""`pythonx/compose/ui/__init__.py` -- the file `import pythonx.compose.ui` loads, and what it no longer contains.
+
+Two things are asserted here:
+1. That `import pythonx.compose.ui`, with the binder installed, loads the file on disk, while the
+ binder serves the Kotlin name `androidx.compose.ui` as a separate module.
+2. That no dead Chaquopy-era code (`jclass`, `from .modifier import Modifier`, etc.) survives in
+ executable tokens in `pythonx/compose/ui/__init__.py`.
+"""
+
+from __future__ import annotations
+
+import importlib.util
+import io
+import sys
+import tokenize
+import unittest
+from pathlib import Path
+
+sys.path.insert(0, str(Path(__file__).resolve().parent))
+
+import adapter as adapter_loader # noqa: E402
+import fake_host # noqa: E402
+
+REPO = Path(__file__).resolve().parents[1]
+UI_INIT_PY = REPO / "pythonx" / "compose" / "ui" / "__init__.py"
+
+
+class TheUiInitModuleIsTheFileOnDisk(unittest.TestCase):
+ """`import pythonx.compose.ui` loads `pythonx/compose/ui/__init__.py`, with the binder installed."""
+
+ def setUp(self):
+ try:
+ self.binding = adapter_loader.install()
+ except adapter_loader.AdapterUnavailable as unavailable:
+ self.skipTest(str(unavailable))
+ self.host = fake_host.FakeHost()
+ self.host.bind()
+ self.host.register(self.binding)
+ self.addCleanup(self.host.unbind)
+ self.addCleanup(adapter_loader.uninstall)
+
+ def test_import_pythonx_compose_ui_loads_the_file_on_disk(self):
+ import pythonx.compose.ui as ui
+
+ self.assertEqual(UI_INIT_PY, Path(ui.__file__).resolve())
+
+ def test_the_binder_serves_the_kotlin_name_not_pythonx(self):
+ import androidx.compose.ui as kotlin_ui
+ import pythonx.compose.ui as ui
+
+ self.assertFalse(hasattr(kotlin_ui, "__file__"), "androidx.compose.ui is the binder's module")
+ self.assertIsNot(ui, kotlin_ui)
+
+
+class TheChaquopyUiInitMechanismIsGone(unittest.TestCase):
+ """No `jclass`, no relative imports `from .modifier import Modifier` in `ui/__init__.py`."""
+
+ def setUp(self):
+ raw = UI_INIT_PY.read_text(encoding="utf-8")
+ kept = []
+ for tok in tokenize.generate_tokens(io.StringIO(raw).readline):
+ if tok.type in (tokenize.STRING, tokenize.COMMENT):
+ continue
+ kept.append(tok.string)
+ self.tokens = set(kept)
+
+ def test_no_chaquopy_or_relative_import_tokens_survive(self):
+ for banned in ("jclass", "modifier", "alignment", "AbsoluteAlignment"):
+ self.assertNotIn(
+ banned,
+ self.tokens,
+ f"{banned} is dead Chaquopy-era code or invalid relative import in ui/__init__.py",
+ )
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_wheel.py b/tests/test_wheel.py
new file mode 100644
index 0000000..db8cfa4
--- /dev/null
+++ b/tests/test_wheel.py
@@ -0,0 +1,86 @@
+"""What the wheel actually carries -- built, opened and listed, not inferred from `package-data`.
+
+AGENTS.md section 15: a pattern in `pyproject.toml` is not proof that a file ships. This builds the
+wheel from a copy of the sources (so no `build/` or `*.egg-info` lands in the checkout) and reads its
+file list.
+
+Needs `setuptools` and `wheel` importable in the running interpreter; without them the test skips,
+and a skip is not a pass.
+"""
+
+from __future__ import annotations
+
+import importlib.util
+import shutil
+import subprocess
+import sys
+import tempfile
+import tomllib
+import unittest
+import zipfile
+from pathlib import Path
+
+REPO = Path(__file__).resolve().parents[1]
+SCRATCH = REPO / ".tmp"
+
+
+def _build_wheel(out: Path) -> Path:
+ source = out / "src"
+ shutil.copytree(
+ REPO, source,
+ ignore=shutil.ignore_patterns(".git", ".tmp", ".worktrees", "build", "*.egg-info",
+ "__pycache__", "UI.ipynb", "test", "docs", "tools"),
+ )
+ wheels = out / "wheels"
+ subprocess.run(
+ [sys.executable, "-m", "pip", "wheel", str(source), "--no-deps", "--no-build-isolation",
+ "-q", "-w", str(wheels)],
+ check=True, capture_output=True, text=True,
+ )
+ (wheel,) = wheels.glob("*.whl")
+ return wheel
+
+
+class TheWheel(unittest.TestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ for needed in ("setuptools", "wheel"):
+ if importlib.util.find_spec(needed) is None:
+ raise unittest.SkipTest(f"{needed} is not installed; the wheel cannot be built here")
+ SCRATCH.mkdir(exist_ok=True)
+ cls._dir = tempfile.TemporaryDirectory(dir=SCRATCH)
+ wheel = _build_wheel(Path(cls._dir.name))
+ with zipfile.ZipFile(wheel) as archive:
+ cls.names = set(archive.namelist())
+
+ @classmethod
+ def tearDownClass(cls):
+ cls._dir.cleanup()
+
+ def test_the_manifest_is_inside_the_package(self):
+ self.assertIn("pythonx/compose/pythonx-map.toml", self.names)
+
+ def test_every_mapped_module_is_a_file_in_the_wheel(self):
+ with (REPO / "pythonx" / "compose" / "pythonx-map.toml").open("rb") as handle:
+ modules = tomllib.load(handle)["modules"]
+ missing = sorted(
+ name for name in modules
+ if name.replace(".", "/") + "/__init__.py" not in self.names
+ )
+ self.assertEqual([], missing, "a mapped module with no file cannot be imported once installed")
+
+ def test_the_re_export_rule_ships(self):
+ self.assertIn("pythonx/compose/_reexport.py", self.names)
+
+ def test_the_package_is_marked_typed(self):
+ self.assertIn("pythonx/compose/py.typed", self.names)
+
+ def test_the_generated_stubs_ship(self):
+ for stub in ("pythonx/compose/ui/__init__.pyi", "pythonx/compose/layout/__init__.pyi"):
+ with self.subTest(stub=stub):
+ self.assertIn(stub, self.names)
+
+
+if __name__ == "__main__":
+ unittest.main()