Compare commits

...

108 commits

Author SHA1 Message Date
azea
a78b67cb77 Editing Pass Part... 9?
Some checks failed
ci/woodpecker/push/android-build/1 Pipeline is pending
ci/woodpecker/push/android-build/2 Pipeline is pending
ci/woodpecker/push/deb-build/1 Pipeline is pending
ci/woodpecker/push/deb-build/2 Pipeline is pending
ci/woodpecker/push/web-build/1 Pipeline is pending
ci/woodpecker/push/web-build/2 Pipeline failed
2025-04-18 15:32:36 -04:00
azea
349e54d799 test commit comment message
Some checks failed
ci/woodpecker/push/android-build/1 Pipeline failed
ci/woodpecker/push/android-build/2 Pipeline failed
ci/woodpecker/push/web-build/1 Pipeline failed
ci/woodpecker/push/web-build/2 Pipeline failed
ci/woodpecker/push/deb-build/1 unknown status
ci/woodpecker/push/deb-build/2 unknown status
2025-04-08 11:03:35 -04:00
460753cc38 Merge pull request 'Editing Pass into Main' (#10) from EditingPass into master
Some checks failed
ci/woodpecker/push/android-build/1 Pipeline is pending
ci/woodpecker/push/android-build/2 Pipeline is pending
ci/woodpecker/push/web-build/1 Pipeline is pending
ci/woodpecker/push/web-build/2 Pipeline is pending
ci/woodpecker/push/deb-build/1 unknown status
ci/woodpecker/push/deb-build/2 unknown status
Reviewed-on: #10
2025-03-31 12:29:01 -04:00
0f9e681895 Editing Pass Part ... 6? 2025-03-31 09:16:00 -04:00
5d51d1e370 Editing pass part 5 2025-03-27 16:52:45 -04:00
ddb3c30642 Editing pass part 4, Bold Amounts 2025-03-27 11:10:49 -04:00
c798339dcd Editing pass part 3 2025-03-27 10:56:56 -04:00
085794c835 editing pass part 2 2025-03-25 10:56:43 -04:00
908dadacf8 editing pass part 1 2025-03-25 10:35:23 -04:00
b98b79b4ca editing pass part 1 2025-03-24 09:33:14 -04:00
36692f264f added secret clipboard button 2025-03-23 21:00:18 -04:00
e2230c563d Fixed bugs with history 2025-03-22 17:31:02 -04:00
f018dc1ffb Added History Page 2025-03-22 09:32:07 -04:00
044fd2175d settings menus 2025-03-21 21:17:22 -04:00
0b7bc9ce05 Added setting that toggles off animations 2025-03-20 22:03:25 -04:00
7bdeaf4ffd settings keys 2025-03-20 21:36:25 -04:00
14f008808f More Settings 2025-03-20 16:16:55 -04:00
bcc740cddd More Settings 2025-03-20 13:18:51 -04:00
d255611d89 More Settings 2025-03-20 12:52:41 -04:00
d4239fa422 More Settings 2025-03-19 21:31:50 -04:00
7fe3d594e1 Settings and TTT 2025-03-19 20:28:12 -04:00
33e35ef9bf Merge remote-tracking branch 'origin/Refactor' into Refactor
Some checks failed
ci/woodpecker/push/android-build/1 Pipeline failed
ci/woodpecker/push/android-build/2 Pipeline failed
ci/woodpecker/push/web-build/1 Pipeline failed
ci/woodpecker/push/web-build/2 Pipeline failed
ci/woodpecker/push/deb-build/1 unknown status
ci/woodpecker/push/deb-build/2 unknown status
2025-03-19 15:18:37 -04:00
e3068772ac more warning and error corrections 2025-03-19 15:16:18 -04:00
6f527738ea correct package layout, 2025-03-19 15:16:18 -04:00
f882a804cb correct package layout, 2025-03-19 15:16:18 -04:00
005d3bb4c5 correct package layout, 2025-03-19 15:16:18 -04:00
4d39d98b28 correct package layout,
better filtering for SEARCH
2025-03-19 15:16:18 -04:00
cf24060135 correct package layout 2025-03-19 15:16:18 -04:00
29ce148f6e Update automated build configs 2025-03-19 15:16:18 -04:00
b9e5387355 code clean 2025-03-19 15:16:18 -04:00
0ef080534a cleanup 2025-03-19 15:16:18 -04:00
f1dc308544 cleanup 2025-03-19 15:16:18 -04:00
c7407631a7 Major Refactor 2025-03-19 15:16:17 -04:00
a1b2748c74 Android Fixes 2025-03-19 15:16:17 -04:00
596e865f1f New search bar layout and icons 2025-03-19 15:16:16 -04:00
406b4de18f Fixes, clean ups, merges with main, and FORWARD 2025-03-19 15:16:14 -04:00
d6735615dc merge and update 2025-03-19 15:16:14 -04:00
cbeecda940 Filter updates part 3 2025-03-19 15:16:14 -04:00
0365b716f9 Filter updates part 2 2025-03-19 15:16:14 -04:00
d6ce958995 Filter updates part 1 2025-03-19 15:16:12 -04:00
azea
b176f0bde1 More sizing updates 2025-03-19 15:16:04 -04:00
azea
732c86f355 More sizing updates 2025-03-19 15:16:04 -04:00
255830d04c back button padding 2025-03-19 15:16:04 -04:00
58bd2582ae Adaptive steps and ingredients 2025-03-19 15:16:04 -04:00
68c0ff673f Adaptive steps and ingredients 2025-03-19 15:16:04 -04:00
0888d517ea some tweaks to the bookshelf page 2025-03-19 15:16:04 -04:00
40b922ae30 some tweaks to the bookshelf page 2025-03-19 15:16:04 -04:00
0beb55e820 Added a Display manager to keep track of different display states 2025-03-19 15:15:59 -04:00
f09302ad77 Display based on portrait/landscape
scaling based on large/small screen

adaptive elements as needed for back button and web specific issues
2025-03-19 15:15:51 -04:00
7a86ecba08 more warning and error corrections 2025-03-19 15:13:55 -04:00
d5daffeefb correct package layout, 2025-03-19 14:54:43 -04:00
01bdbdc6dc correct package layout, 2025-03-19 14:53:21 -04:00
8a4a4ed890 correct package layout, 2025-03-19 14:49:10 -04:00
fa36fbea6b correct package layout,
better filtering for SEARCH
2025-03-19 14:23:35 -04:00
778182d1f4 correct package layout 2025-03-19 13:41:17 -04:00
668a0b8a7e
Update automated build configs 2025-03-17 14:14:41 -04:00
79b9cf9a5d code clean 2025-03-16 17:58:33 -04:00
0bab3cdf36 cleanup 2025-03-16 17:41:16 -04:00
54304ae93c cleanup 2025-03-16 17:38:48 -04:00
e6756934cc Major Refactor 2025-03-16 13:35:01 -04:00
1058aba100 Android Fixes 2025-03-12 21:43:12 -04:00
f45d6a7494 New search bar layout and icons 2025-03-12 21:39:05 -04:00
67c99151f9 Fixes, clean ups, merges with main, and FORWARD 2025-03-12 20:24:07 -04:00
2093883f78 merge and update 2025-03-12 18:26:55 -04:00
ef2920a24b Merge branch 'filterUpdates' into alternateSizing
# Conflicts:
#	shared/src/commonMain/kotlin/App.kt
2025-03-12 18:23:55 -04:00
5a7e7debd4 Filter updates part 3 2025-03-12 18:20:22 -04:00
7cfc95479f Filter updates part 2 2025-03-12 18:06:12 -04:00
b9a90b30cb Filter updates part 1 2025-03-12 17:21:25 -04:00
azea
7fda332bd5 Merge branch 'master' into alternateSizing
# Conflicts:
#	shared/src/commonMain/kotlin/App.kt
2025-03-12 12:05:36 -04:00
azea
a766b8657a Homepage fix
Some checks are pending
ci/woodpecker/push/android-build Pipeline is pending
ci/woodpecker/push/deb-build Pipeline is pending
ci/woodpecker/push/web-build Pipeline is pending
2025-03-12 12:01:51 -04:00
azea
1209380f47 More sizing updates 2025-03-11 13:35:00 -04:00
azea
d478aba978 updates for cacio e pepe (not ready yet)
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
2025-03-11 13:09:34 -04:00
azea
071461a7c0 More sizing updates 2025-03-11 11:00:08 -04:00
5bc4363436 back button padding 2025-03-10 22:33:00 -04:00
1f7c4d5f42 Adaptive steps and ingredients 2025-03-10 22:27:25 -04:00
0a4f105ab7 Adaptive steps and ingredients 2025-03-10 22:22:50 -04:00
0364e62523 recipe updates
Some checks are pending
ci/woodpecker/push/android-build Pipeline is pending
ci/woodpecker/push/deb-build Pipeline is pending
ci/woodpecker/push/web-build Pipeline is pending
2025-03-10 22:05:22 -04:00
da450df578 recipe updates
Some checks are pending
ci/woodpecker/push/android-build Pipeline is pending
ci/woodpecker/push/deb-build Pipeline is pending
ci/woodpecker/push/web-build Pipeline is pending
2025-03-10 21:06:01 -04:00
2275cb8cdc recipe updates
Some checks are pending
ci/woodpecker/push/android-build Pipeline is pending
ci/woodpecker/push/deb-build Pipeline is pending
ci/woodpecker/push/web-build Pipeline is pending
2025-03-10 20:56:30 -04:00
565c3886a4 Recipe Updates
Some checks are pending
ci/woodpecker/push/android-build Pipeline is pending
ci/woodpecker/push/deb-build Pipeline is pending
ci/woodpecker/push/web-build Pipeline is pending
2025-03-10 20:49:35 -04:00
eab72a85e0 Recipe Updates
Some checks are pending
ci/woodpecker/push/android-build Pipeline is pending
ci/woodpecker/push/deb-build Pipeline is pending
ci/woodpecker/push/web-build Pipeline is pending
2025-03-10 20:46:37 -04:00
d1493524e3 Recipe Updates
Some checks are pending
ci/woodpecker/push/android-build Pipeline is pending
ci/woodpecker/push/deb-build Pipeline is pending
ci/woodpecker/push/web-build Pipeline is pending
2025-03-10 20:42:52 -04:00
f34e7aaa79 Assassin Pasta
Some checks are pending
ci/woodpecker/push/android-build Pipeline is pending
ci/woodpecker/push/deb-build Pipeline is pending
ci/woodpecker/push/web-build Pipeline is pending
2025-03-10 20:16:02 -04:00
fc3bc7e398 Added some missing info/pictures
Some checks are pending
ci/woodpecker/push/android-build Pipeline is pending
ci/woodpecker/push/deb-build Pipeline is pending
ci/woodpecker/push/web-build Pipeline is pending
added fuzzy find
added Filter to hide recipes with missing info, or go into Help Us mode and only show recipes that need info/photos filled in
2025-03-10 20:10:34 -04:00
0669c8a746 Oi Muchim photo
Some checks are pending
ci/woodpecker/push/android-build Pipeline is pending
ci/woodpecker/push/deb-build Pipeline is pending
ci/woodpecker/push/web-build Pipeline is pending
2025-03-10 09:52:24 -04:00
35ffbc5a34 some tweaks to the bookshelf page 2025-03-09 21:26:27 -04:00
e27ff55d87 some tweaks to the bookshelf page 2025-03-09 17:39:44 -04:00
64773b35a4 Added a Display manager to keep track of different display states 2025-03-09 17:01:33 -04:00
718f09f5df Display based on portrait/landscape
scaling based on large/small screen

adaptive elements as needed for back button and web specific issues
2025-03-09 13:10:28 -04:00
6f2c453351 More recipes
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
2025-03-08 18:44:13 -05:00
233173c6ad Display Cleanup and missing photos where possible
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
2025-03-08 10:56:45 -05:00
2712b15ad6 Display tweaks
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
2025-03-08 04:30:10 -05:00
451be7be25 Added 11 New recipes
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
added a new TagType for Vegan/Veg/Carv/Adaptable
added a ton more tags to existing recipes
2025-03-08 04:15:58 -05:00
ca98cb5d7d playing around with build versions for the release, looking at app icon for desktop without too much luck..
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
2025-03-08 01:56:43 -05:00
d4cf50d6d8 Fix for apk naming
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
2025-03-08 01:30:37 -05:00
a836eee728 Centred App Icon
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
2025-03-08 01:15:07 -05:00
24c00df21f Aji De Gallina
Some checks failed
ci/woodpecker/push/web-build Pipeline failed
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline failed
2025-03-08 01:04:19 -05:00
b7c31e4b01 More Recipes
Some checks failed
ci/woodpecker/push/android-build Pipeline failed
ci/woodpecker/push/deb-build unknown status
ci/woodpecker/push/web-build Pipeline was successful
2025-03-08 00:43:39 -05:00
a21cb5ad56 Minor padding tweaks
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
added San Bei Ji (34 Recipes)
Scaled all images to 500x500
2025-03-07 23:16:07 -05:00
5067406524 Added tags to details page
Some checks failed
ci/woodpecker/push/android-build Pipeline failed
ci/woodpecker/push/deb-build unknown status
ci/woodpecker/push/web-build Pipeline was successful
2025-03-07 22:14:44 -05:00
b568d764e5 Added tags to details page
Some checks failed
ci/woodpecker/push/deb-build unknown status
ci/woodpecker/push/web-build Pipeline failed
ci/woodpecker/push/android-build Pipeline failed
2025-03-07 22:13:48 -05:00
50891d3f62 removing trailing zeros from steps and ingredients
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
2025-03-07 21:23:53 -05:00
2a1dc80a77 Added horizontal divider to sticky header
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
changed header divider to before header
street food is a cuisine now
2025-03-07 21:14:36 -05:00
22a1bd16a7 Better Padding on Filter buttons
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
better alignment of filter button on searchbar
smaller back button on mobile web
added background to header for back button
2025-03-07 20:57:24 -05:00
315f4c4192 Revert to index (I know this isn't right either but its better. Will work on a more concrete solution...
Some checks failed
ci/woodpecker/push/android-build Pipeline failed
ci/woodpecker/push/deb-build unknown status
ci/woodpecker/push/web-build Pipeline was successful
2025-03-07 20:17:48 -05:00
bb7901f1c5 Filter Fixes
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
2025-03-07 18:50:29 -05:00
6a9011b210 Orange Chicken
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
2025-03-07 17:36:59 -05:00
1356ccfe90 Orange Chicken
All checks were successful
ci/woodpecker/push/android-build Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/deb-build Pipeline was successful
2025-03-06 21:04:23 -05:00
319 changed files with 6516 additions and 8702 deletions

29
.fleet/receipt.json Normal file
View file

@ -0,0 +1,29 @@
// Project generated by Kotlin Multiplatform Wizard
{
"spec": {
"template_id": "kmt",
"targets": {
"android": {
"ui": [
"compose"
]
},
"ios": {
"ui": [
"compose"
]
},
"desktop": {
"ui": [
"compose"
]
},
"web": {
"ui": [
"compose"
]
}
}
},
"timestamp": "2025-03-16T01:49:22.397134638Z"
}

View file

@ -1,23 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="desktopApp" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$/desktopApp" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="run" />
</list>
</option>
<option name="vmOptions" value="" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<method v="2" />
</configuration>
</component>

View file

@ -2,9 +2,16 @@ when:
event: push
branch: [ dockerBuild, master ]
matrix:
GRADLE_VERSION:
- 8.11.1
JDK_VERSION:
- jdk17
- jdk21
steps:
- name: build
image: gradle:8.10.2-jdk17
image: gradle:${GRADLE_VERSION}-${JDK_VERSION}
environment:
ANDROID_HOME: /sdk
commands:

View file

@ -2,9 +2,16 @@ when:
event: push
branch: [ dockerBuild, master ]
matrix:
GRADLE_VERSION:
- 8.11.1
JDK_VERSION:
- 17
- 21
steps:
- name: build
image: gradle:8.10.2-jdk17
image: gradle:${GRADLE_VERSION}-${JDK_VERSION}
environment:
ANDROID_HOME: /sdk
commands:

View file

@ -1,3 +1,4 @@
#file: noinspection YAMLSchemaValidation
when:
- event: tag
ref: ref/tags/0.0.*

View file

@ -2,8 +2,15 @@ when:
event: push
branch: [ dockerBuild, master ]
matrix:
GRADLE_VERSION:
- 8.11.1
JDK_VERSION:
- 17
- 21
steps:
- name: build
image: gradle:8.10.2-jdk21
image: gradle:${GRADLE_VERSION}-${JDK_VERSION}
commands:
- gradle wasmJsBrowserDistribution

View file

@ -1,8 +1,11 @@
# Original build used JVM 21.0.3
# Gradle version 8.10.2
ARG GRADLE_VERSION="8.11.1"
ARG JDK_VERSION="jdk21"
### For RPM Builds, need to implement Nebula RPM plugin; see https://plugins.gradle.org/plugin/com.netflix.nebula.rpm
FROM gradle:8.10.2-jdk21 AS cache
FROM gradle:${GRADLE_VERSION}-${JDK_VERSION} AS menagerie_buildcache
RUN apt update && apt install -y sdkmanager openjdk-11-jdk
RUN sdkmanager "tools"
RUN yes | sdkmanager --licenses
@ -10,20 +13,12 @@ RUN mkdir -p /src
ENV GRADLE_USER_HOME=/home/gradle/cache_home
COPY gradle /src/gradle
COPY build.gradle.kts gradle.properties settings.gradle.kts /src/.
COPY androidApp/build.gradle.kts /src/androidApp/.
COPY automotiveApp/build.gradle.kts /src/automotiveApp/.
COPY desktopApp/build.gradle.kts /src/desktopApp/.
COPY shared/build.gradle.kts /src/shared/.
COPY tvApp/build.gradle.kts /src/tvApp/.
COPY webApp/build.gradle.kts /src/webApp/.
COPY composeApp/build.gradle.kts /src/webApp/.
WORKDIR /src
RUN ls -lahR
RUN gradle -q javaToolchains
RUN gradle buildEnvironment --refresh-dependencies
FROM gradle:8.10.2-jdk21 AS build
FROM cache AS build
WORKDIR /src
COPY --from=cache /home/gradle/cache_home /home/gradle/.
COPY --chown=gradle:gradle . /src/.
RUN gradle clean
RUN gradle packageReleaseDeb
RUN gradle clean && gradle packageReleaseDeb

View file

@ -1,6 +1,10 @@
# Original build used JVM 21.0.3
# Gradle version 8.10.2
FROM gradle:8.10.2-jdk21 AS cache
ARG GRADLE_VERSION="8.11.1"
ARG JDK_VERSION="jdk21"
FROM gradle:${GRADLE_VERSION}-${JDK_VERSION} AS cache
RUN apt update && apt install -y sdkmanager openjdk-11-jdk
RUN sdkmanager "tools"
RUN yes | sdkmanager --licenses
@ -8,20 +12,15 @@ RUN mkdir -p /src
ENV GRADLE_USER_HOME=/home/gradle/cache_home
COPY gradle /src/gradle
COPY build.gradle.kts gradle.properties settings.gradle.kts /src/.
COPY androidApp/build.gradle.kts /src/androidApp/.
COPY automotiveApp/build.gradle.kts /src/automotiveApp/.
COPY desktopApp/build.gradle.kts /src/desktopApp/.
COPY shared/build.gradle.kts /src/shared/.
COPY tvApp/build.gradle.kts /src/tvApp/.
COPY webApp/build.gradle.kts /src/webApp/.
COPY composeApp/build.gradle.kts /src/webApp/.
WORKDIR /src
RUN gradle buildEnvironment --refresh-dependencies
FROM gradle:8.10.2-jdk21 AS build
FROM cache AS build
WORKDIR /src
COPY --from=cache /home/gradle/cache_home /home/gradle/.
COPY --chown=gradle:gradle . /src/.
RUN gradle clean && gradle wasmJsBrowserDistribution
FROM nginx:latest
COPY --from=build /src/webApp/build/dist/wasmJs/productionExecutable /usr/share/nginx/html
COPY --from=build /src/composeApp/build/dist/wasmJs/productionExecutable /usr/share/nginx/html

View file

@ -1,201 +0,0 @@
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 2020-2021 JetBrains s.r.o. and and respective authors and developers.
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.

View file

@ -0,0 +1,21 @@
This is a Kotlin Multiplatform project targeting Android, iOS, Web, Desktop.
* `/composeApp` is for code that will be shared across your Compose Multiplatform applications.
It contains several subfolders:
- `commonMain` is for code thats common for all targets.
- Other folders are for Kotlin code that will be compiled for only the platform indicated in the folder name.
For example, if you want to use Apples CoreCrypto for the iOS part of your Kotlin app,
`iosMain` would be the right folder for such calls.
* `/iosApp` contains iOS applications. Even if youre sharing your UI with Compose Multiplatform,
you need this entry point for your iOS app. This is also where you should add SwiftUI code for your project.
Learn more about [Kotlin Multiplatform](https://www.jetbrains.com/help/kotlin-multiplatform-dev/get-started.html),
[Compose Multiplatform](https://github.com/JetBrains/compose-multiplatform/#compose-multiplatform),
[Kotlin/Wasm](https://kotl.in/wasm/)…
We would appreciate your feedback on Compose/Web and Kotlin/Wasm in the public Slack channel [#compose-web](https://slack-chats.kotlinlang.org/c/compose-web).
If you face any issues, please report them on [GitHub](https://github.com/JetBrains/compose-multiplatform/issues).
You can open the web application by running the `:composeApp:wasmJsBrowserDevelopmentRun` Gradle task.

View file

@ -1,46 +0,0 @@
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.android.application)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.compose)
}
kotlin {
androidTarget()
sourceSets {
val androidMain by getting {
dependencies {
implementation(project(":shared"))
}
}
}
}
android {
compileSdk = (findProperty("android.compileSdk") as String).toInt()
namespace = "com.menagerie.cookbook"
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
defaultConfig {
minSdk = (findProperty("android.minSdk") as String).toInt()
targetSdk = (findProperty("android.targetSdk") as String).toInt()
versionCode = 1
versionName = "1.0"
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
buildTypes {
getByName("release") {
signingConfig = signingConfigs.getByName("debug")
}
}
kotlin {
jvmToolchain(11)
}
}
dependencies {
implementation(libs.androidx.window)
}

View file

@ -1,19 +0,0 @@
package com.cookbook
import MainView
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowCompat
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, true)
setContent {
MainView()
}
}
}

View file

@ -1,30 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View file

@ -1,170 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View file

@ -1,39 +0,0 @@
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.android.application)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.compose)
}
kotlin {
androidTarget()
sourceSets {
val androidMain by getting {
dependencies {
implementation(project(":shared"))
}
}
}
}
android {
compileSdk = (findProperty("android.compileSdk") as String).toInt()
namespace = "com.menagerie.cookbook"
sourceSets["main"].manifest.srcFile("src/main/AndroidManifest.xml")
defaultConfig {
minSdk = (findProperty("android.minSdk") as String).toInt()
targetSdk = (findProperty("android.targetSdk") as String).toInt()
versionCode = 1
versionName = "1.0"
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlin {
jvmToolchain(11)
}
}

View file

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<application
android:allowBackup="true"
android:appCategory="audio"
android:banner="@drawable/ic_launcher_foreground"
android:icon="@drawable/ic_launcher_foreground"
android:label="@string/app_name"
android:roundIcon="@drawable/ic_launcher_foreground"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<activity
android:name="com.recipe.automotiveapp.MainActivityAutomotive"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

View file

@ -1,15 +0,0 @@
package com.recipe.automotiveapp
import MainView
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
class MainActivityAutomotive : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MainView(isLargeScreen = true)
}
}
}

View file

@ -1,170 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View file

@ -1,30 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

View file

@ -1,3 +0,0 @@
<resources>
<string name="app_name">Baker\'s Menagerie</string>
</resources>

View file

@ -1,19 +1,9 @@
plugins {
// this is necessary to avoid the plugins to be loaded multiple times
// in each subproject's classloader
alias(libs.plugins.kotlin.multiplatform).apply(false)
alias(libs.plugins.android.application).apply(false)
alias(libs.plugins.android.library).apply(false)
alias(libs.plugins.compose).apply(false)
}
allprojects {
repositories {
google()
mavenCentral()
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
mavenLocal()
maven("https://maven.pkg.jetbrains.space/kotlin/p/wasm/experimental")
maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/")
}
}
alias(libs.plugins.androidApplication) apply false
alias(libs.plugins.androidLibrary) apply false
alias(libs.plugins.composeMultiplatform) apply false
alias(libs.plugins.composeCompiler) apply false
alias(libs.plugins.kotlinMultiplatform) apply false
}

View file

@ -1,10 +0,0 @@
#!/bin/sh
rm -rf .idea
./gradlew clean
rm -rf .gradle
rm -rf build
rm -rf */build
rm -rf iosApp/iosApp.xcworkspace
rm -rf iosApp/Pods
rm -rf iosApp/iosApp.xcodeproj/project.xcworkspace
rm -rf iosApp/iosApp.xcodeproj/xcuserdata

122
composeApp/build.gradle.kts Normal file
View file

@ -0,0 +1,122 @@
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidApplication)
alias(libs.plugins.composeMultiplatform)
alias(libs.plugins.composeCompiler)
}
kotlin {
androidTarget {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_11)
}
}
jvm("desktop")
@OptIn(ExperimentalWasmDsl::class)
wasmJs {
moduleName = "composeApp"
browser {
val rootDirPath = project.rootDir.path
val projectDirPath = project.projectDir.path
commonWebpackConfig {
outputFileName = "composeApp.js"
devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply {
static = (static ?: mutableListOf()).apply {
// Serve sources to debug inside browser
add(rootDirPath)
add(projectDirPath)
}
}
}
}
binaries.executable()
}
sourceSets {
val desktopMain by getting
androidMain.dependencies {
implementation(compose.preview)
implementation(libs.androidx.activity.compose)
}
commonMain.dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview)
implementation(libs.androidx.lifecycle.viewmodel)
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.material3)
implementation(libs.androidx.navigation.compose)
implementation(libs.multiplatform.settings)
implementation(libs.multiplatform.settings.no.arg)
}
desktopMain.dependencies {
implementation(compose.desktop.currentOs)
implementation(libs.kotlinx.coroutines.swing)
}
}
}
android {
namespace = "com.menagerie.bakers"
compileSdk = libs.versions.android.compileSdk.get().toInt()
defaultConfig {
applicationId = "com.menagerie.bakers"
minSdk = libs.versions.android.minSdk.get().toInt()
targetSdk = libs.versions.android.targetSdk.get().toInt()
versionCode = 1
versionName = "1.0.0"
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
buildTypes {
getByName("release") {
signingConfig = signingConfigs.getByName("debug")
applicationVariants.all {
val variant = this
variant.outputs
.map { it as com.android.build.gradle.internal.api.BaseVariantOutputImpl }
.forEach { output ->
val outputFileName = "bakers-menagerie${variant.flavorName}_${variant.buildType.name}_${variant.versionName}.apk"
output.outputFileName = outputFileName
}
}
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
}
dependencies {
debugImplementation(compose.uiTooling)
}
compose.desktop {
application {
mainClass = "com.menagerie.bakers.MainKt"
nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "com.menagerie.bakers"
packageVersion = "1.0.0"
}
}
}

View file

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
android:theme="@android:style/Theme.Material.Light.NoActionBar">
<activity
android:name="com.cookbook.MainActivity"
android:exported="true">
android:exported="true"
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|mnc|colorMode|density|fontScale|fontWeightAdjustment|keyboard|layoutDirection|locale|mcc|navigation|smallestScreenSize|touchscreen|uiMode"
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

View file

@ -0,0 +1,31 @@
package com.menagerie.bakers
import android.content.res.Configuration
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.ui.platform.LocalConfiguration
import androidx.core.view.WindowCompat
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, true)
DisplayManager.device = Device.Android
setContent {
DisplayManager.size = Size.Small
DisplayManager.orientation = when(LocalConfiguration.current.orientation) {
Configuration.ORIENTATION_PORTRAIT -> Orientation.Portrait
Configuration.ORIENTATION_LANDSCAPE -> Orientation.Landscape
else -> Orientation.Landscape
}
App()
}
}
}

View file

@ -0,0 +1,6 @@
package com.menagerie.bakers
import com.russhwolf.settings.BuildConfig
actual val isDebug: Boolean
get() = BuildConfig.DEBUG

View file

@ -0,0 +1,22 @@
package com.menagerie.bakers.util
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
class AndroidClipboardController(private val context: Context) : ClipboardController {
override fun copyToClipboard(text: String) {
val clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("Copied Text", text)
clipboardManager.setPrimaryClip(clip)
}
}
@Composable
actual fun rememberClipboardController(): ClipboardController {
val context = LocalContext.current
return remember(context) { AndroidClipboardController(context) }
}

View file

@ -0,0 +1,53 @@
package com.menagerie.bakers.view
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import com.menagerie.bakers.SortBy
import com.menagerie.bakers.Theme
import com.menagerie.bakers.model.TTT
import com.menagerie.bakers.view.util.MainDropDown
@Composable
actual fun SettingsMenu(
theme: Theme,
onTheme: () -> Unit,
animate: Boolean,
onAnim: () -> Unit,
helpUs: Boolean,
onHelpToggle: (Boolean) -> Unit,
ttt: TTT,
onTTTToggle: () -> Unit,
andOr: Boolean,
onAndOr: () -> Unit,
sortBy: SortBy,
onSortToggle: () -> Unit,
descending: Boolean,
onDesc: () -> Unit,
onRandom: () -> Unit,
onBack: () -> Unit,
onClear: () -> Unit,
discreet: Boolean,
onDiscreet: () -> Unit,
) {
MainDropDown(
modifier = Modifier,
andOr = andOr,
descending = descending,
theme = theme,
sortBy = sortBy,
helpUs = helpUs,
animate = animate,
ttt = ttt,
onHelp = onHelpToggle,
onTTTToggle = onTTTToggle,
onTag = onAndOr,
onSortBy = onSortToggle,
onDesc = onDesc,
onTheme = onTheme,
onAnim = onAnim,
onRandom = onRandom,
onBack = {},
onDiscreet = onDiscreet,
discreet = discreet,
) { }
}

View file

@ -2,4 +2,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ophelia_background" />
<foreground android:drawable="@drawable/ophelia" />
<monochrome android:drawable="@drawable/ophelia"/>
</adaptive-icon>

View file

@ -2,4 +2,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ophelia_background" />
<foreground android:drawable="@drawable/ophelia" />
<monochrome android:drawable="@drawable/ophelia"/>
</adaptive-icon>

View file

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 592 KiB

After

Width:  |  Height:  |  Size: 592 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M396-396q-32-32-58.5-67T289-537q-5 14-6.5 28.5T281-480q0 83 58 141t141 58q14 0 28.5-2t28.5-6q-39-22-74-48.5T396-396Zm57-56q51 51 114 87.5T702-308q-40 51-98 79.5T481-200q-117 0-198.5-81.5T201-480q0-65 28.5-123t79.5-98q20 72 56.5 135T453-452Zm290 72q-20-5-39.5-11T665-405q8-18 11.5-36.5T680-480q0-83-58.5-141.5T480-680q-20 0-38.5 3.5T405-665q-8-19-13.5-38T381-742q24-9 49-13.5t51-4.5q117 0 198.5 81.5T761-480q0 26-4.5 51T743-380ZM440-840v-120h80v120h-80Zm0 840v-120h80V0h-80Zm323-706-57-57 85-84 57 56-85 85ZM169-113l-57-56 85-85 57 57-85 84Zm671-327v-80h120v80H840ZM0-440v-80h120v80H0Zm791 328-85-85 57-57 84 85-56 57ZM197-706l-84-85 56-57 85 85-57 57Zm199 310Z"/></svg>

After

Width:  |  Height:  |  Size: 785 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

View file

@ -33,4 +33,4 @@
android:fillColor="#00000000"
android:strokeColor="#083042"
android:fillType="nonZero"/>
</vector>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M480-120q-150 0-255-105T120-480q0-150 105-255t255-105q14 0 27.5 1t26.5 3q-41 29-65.5 75.5T444-660q0 90 63 153t153 63q55 0 101-24.5t75-65.5q2 13 3 26.5t1 27.5q0 150-105 255T480-120Zm0-80q88 0 158-48.5T740-375q-20 5-40 8t-40 3q-123 0-209.5-86.5T364-660q0-20 3-40t8-40q-78 32-126.5 102T200-480q0 116 82 198t198 82Zm-10-270Z"/></svg>

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M480-120q-138 0-240.5-91.5T122-440h82q14 104 92.5 172T480-200q117 0 198.5-81.5T760-480q0-117-81.5-198.5T480-760q-69 0-129 32t-101 88h110v80H120v-240h80v94q51-64 124.5-99T480-840q75 0 140.5 28.5t114 77q48.5 48.5 77 114T840-480q0 75-28.5 140.5t-77 114q-48.5 48.5-114 77T480-120Zm112-192L440-464v-216h80v184l128 128-56 56Z"/></svg>

After

Width:  |  Height:  |  Size: 444 B

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:pathData="M480,840Q342,840 239.5,748.5Q137,657 122,520L204,520Q218,624 296.5,692Q375,760 480,760Q597,760 678.5,678.5Q760,597 760,480Q760,363 678.5,281.5Q597,200 480,200Q411,200 351,232Q291,264 250,320L360,320L360,400L120,400L120,160L200,160L200,254Q251,190 324.5,155Q398,120 480,120Q555,120 620.5,148.5Q686,177 734.5,225.5Q783,274 811.5,339.5Q840,405 840,480Q840,555 811.5,620.5Q783,686 734.5,734.5Q686,783 620.5,811.5Q555,840 480,840ZM592,648L440,496L440,280L520,280L520,464L648,592L592,648Z"
android:fillColor="#e3e3e3"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M480-360q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35Zm0 80q-83 0-141.5-58.5T280-480q0-83 58.5-141.5T480-680q83 0 141.5 58.5T680-480q0 83-58.5 141.5T480-280ZM200-440H40v-80h160v80Zm720 0H760v-80h160v80ZM440-760v-160h80v160h-80Zm0 720v-160h80v160h-80ZM256-650l-101-97 57-59 96 100-52 56Zm492 496-97-101 53-55 101 97-57 59Zm-98-550 97-101 59 57-100 96-56-52ZM154-212l101-97 55 53-97 101-59-57Zm326-268Z"/></svg>

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Some files were not shown because too many files have changed in this diff Show more