Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 2 additions & 46 deletions apps/android/app/src/main/res/drawable/ic_launcher_foreground.xml
Original file line number Diff line number Diff line change
@@ -1,47 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Lucide "bot" glyph (ISC licence), hand-converted from apps/ios/Design/app-icon.svg.
The 24-unit lucide grid is scaled 2.4x and centred on the 108dp adaptive-icon canvas, so the
glyph spans ~53dp and its farthest point (the ears) sits ~27dp from the centre: inside the
66dp safe zone. Also used as the monochrome (themed icon) layer.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<group
android:scaleX="2.4"
android:scaleY="2.4"
android:translateX="25.2"
android:translateY="25.2">
<!-- antenna: M12 8V4H8 -->
<path
android:pathData="M12,8V4H8"
android:strokeWidth="1.9"
android:strokeColor="#FFFFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round" />
<!-- head: rect x=4 y=8 w=16 h=12 rx=2.4 -->
<path
android:pathData="M6.4,8H17.6A2.4,2.4 0,0 1,20 10.4V17.6A2.4,2.4 0,0 1,17.6 20H6.4A2.4,2.4 0,0 1,4 17.6V10.4A2.4,2.4 0,0 1,6.4 8Z"
android:strokeWidth="1.9"
android:strokeColor="#FFFFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round" />
<!-- ears: M2 14h2, M20 14h2 -->
<path
android:pathData="M2,14H4M20,14H22"
android:strokeWidth="1.9"
android:strokeColor="#FFFFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round" />
<!-- eyes: M15 13v2, M9 13v2 -->
<path
android:pathData="M15,13V15M9,13V15"
android:strokeWidth="1.9"
android:strokeColor="#FFFFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round" />
</group>
</vector>
<!-- Generated Peek mark; also used for monochrome themed icons. Inside the 66dp safe circle. -->
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="108dp" android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"><group android:scaleX="0.5" android:scaleY="0.5" android:translateX="29" android:translateY="29"><path android:fillColor="#FFFFFFFF" android:fillType="evenOdd" android:pathData="M30 6H66L94 34V70Q94 94 70 94H30Q6 94 6 70V30Q6 6 30 6ZM36 24Q24 24 24 36V64Q24 76 36 76H64Q76 76 76 64V36Q76 24 64 24Z"/><path android:fillColor="#FFFFFFFF" android:fillType="evenOdd" android:pathData="M76 6H82Q94 6 94 18V24Q94 26 92 24L74 8Q72 6 76 6Z"/><path android:fillColor="#FFFFFFFF" android:fillType="evenOdd" android:pathData="M40 40A4 4 0 0 1 44 44V56A4 4 0 0 1 36 56V44A4 4 0 0 1 40 40ZM60 40A4 4 0 0 1 64 44V56A4 4 0 0 1 56 56V44A4 4 0 0 1 60 40Z"/></group></vector>
Original file line number Diff line number Diff line change
Expand Up @@ -6,54 +6,26 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.StrokeCap
import androidx.compose.ui.graphics.StrokeJoin
import androidx.compose.ui.graphics.PathFillType
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.graphics.vector.addPathNodes
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import dev.optio.core.ui.theme.OptioTheme

/** Optio's own icons. */
object OptioIcons {
/**
* The Optio bot (iOS `BotGlyph`): antenna, head, ears, eyes — the app icon's mark, stroked on a
* 24-unit grid so it takes any tint. Use it with `Icon(OptioIcons.Bot, …)` or [OptioGlyph].
*/
/** Peek, the O-shaped face shared with the app icon and iOS BotGlyph. */
val Bot: ImageVector by lazy {
ImageVector.Builder(name = "OptioBot", defaultWidth = 24.dp, defaultHeight = 24.dp, viewportWidth = 24f, viewportHeight = 24f)
.path(
fill = null,
stroke = SolidColor(Color.Black),
strokeLineWidth = 2.25f,
strokeLineCap = StrokeCap.Round,
strokeLineJoin = StrokeJoin.Round,
) {
// antenna
moveTo(12f, 8f)
lineTo(12f, 4f)
lineTo(8f, 4f)
// head: a 16×12 rounded rect at (4, 8), corner 2.4
moveTo(6.4f, 8f)
lineTo(17.6f, 8f)
arcTo(2.4f, 2.4f, 0f, false, true, 20f, 10.4f)
lineTo(20f, 17.6f)
arcTo(2.4f, 2.4f, 0f, false, true, 17.6f, 20f)
lineTo(6.4f, 20f)
arcTo(2.4f, 2.4f, 0f, false, true, 4f, 17.6f)
lineTo(4f, 10.4f)
arcTo(2.4f, 2.4f, 0f, false, true, 6.4f, 8f)
close()
// ears
moveTo(2f, 14f)
lineTo(4f, 14f)
moveTo(20f, 14f)
lineTo(22f, 14f)
// eyes
moveTo(15f, 13f)
lineTo(15f, 15f)
moveTo(9f, 13f)
lineTo(9f, 15f)
ImageVector.Builder(name = "OptioPeek", defaultWidth = 24.dp, defaultHeight = 24.dp, viewportWidth = 100f, viewportHeight = 100f)
.apply {
optioMarkPaths.forEach { data ->
addPath(
pathData = addPathNodes(data),
pathFillType = PathFillType.EvenOdd,
fill = SolidColor(Color.Black),
)
}
}
.build()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Generated by scripts/render-brand.mjs from design/brand/mark.svg.
package dev.optio.core.ui.components

internal val optioMarkPaths = listOf(
"M30 6H66L94 34V70Q94 94 70 94H30Q6 94 6 70V30Q6 6 30 6ZM36 24Q24 24 24 36V64Q24 76 36 76H64Q76 76 76 64V36Q76 24 64 24Z",
"M76 6H82Q94 6 94 18V24Q94 26 92 24L74 8Q72 6 76 6Z",
"M40 40A4 4 0 0 1 44 44V56A4 4 0 0 1 36 56V44A4 4 0 0 1 40 40ZM60 40A4 4 0 0 1 64 44V56A4 4 0 0 1 56 56V44A4 4 0 0 1 60 40Z",
)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,14 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by WidgetIconGenerator from OptioBot. Do not edit. -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:strokeColor="#FFFFFFFF"
android:strokeWidth="2.25"
android:strokeLineCap="round"
android:strokeLineJoin="round"
android:pathData="M12,8 L12,4 L8,4 M6.4,8 L17.6,8 A2.4,2.4 0 0,1 20,10.4 L20,17.6 A2.4,2.4 0 0,1 17.6,20 L6.4,20 A2.4,2.4 0 0,1 4,17.6 L4,10.4 A2.4,2.4 0 0,1 6.4,8 Z M2,14 L4,14 M20,14 L22,14 M15,13 L15,15 M9,13 L9,15" />
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="100" android:viewportHeight="100"><path android:fillColor="#FFFFFFFF" android:fillType="evenOdd" android:pathData="M30 6H66L94 34V70Q94 94 70 94H30Q6 94 6 70V30Q6 6 30 6ZM36 24Q24 24 24 36V64Q24 76 36 76H64Q76 76 76 64V36Q76 24 64 24Z"/><path android:fillColor="#FFFFFFFF" android:fillType="evenOdd" android:pathData="M76 6H82Q94 6 94 18V24Q94 26 92 24L74 8Q72 6 76 6Z"/><path android:fillColor="#FFFFFFFF" android:fillType="evenOdd" android:pathData="M40 40A4 4 0 0 1 44 44V56A4 4 0 0 1 36 56V44A4 4 0 0 1 40 40ZM60 40A4 4 0 0 1 64 44V56A4 4 0 0 1 56 56V44A4 4 0 0 1 60 40Z"/></vector>
12 changes: 1 addition & 11 deletions apps/ios/Design/app-icon-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 1 addition & 11 deletions apps/ios/Design/app-icon-tinted.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 1 addition & 23 deletions apps/ios/Design/app-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/ios/Design/icons/blueprint.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 1 addition & 49 deletions apps/ios/Design/icons/blueprint.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/ios/Design/icons/chip.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading