@outs-tand-ing/ui 0.2.25 → 0.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ export declare const iconPalette: {
2
+ background: string;
3
+ fallback: string;
4
+ dev: string;
5
+ prod: string;
6
+ };
7
+ //# sourceMappingURL=palette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../../src/brand/app-icon/palette.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;;;;;CAKvB,CAAA"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createVNode as o, defineComponent as s, mergeProps as c, nextTick as l, normalizeClass as u, normalizeStyle as d, onMounted as f, onUnmounted as p, openBlock as m, ref as h, renderList as g, renderSlot as _, useAttrs as v, useSlots as y, watch as b } from "vue";
2
2
  //#region src/components/BrandLogo.vue?vue&type=script&setup=true&lang.ts
3
- var x = /* @__PURE__ */ s({
3
+ var x = /*@__PURE__*/ s({
4
4
  __name: "BrandLogo",
5
5
  props: { size: {
6
6
  type: String,
@@ -29,7 +29,7 @@ function C(e, t, n, r, a, o) {
29
29
  "text-5xl": n.size === "lg"
30
30
  }]) }, "OUTSTANDING", 2);
31
31
  }
32
- var w = /* @__PURE__ */ S(x, [["render", C], ["__file", "/Users/kemal/Desktop/Kite/_Code/outs/ui/src/components/BrandLogo.vue"]]), T = {
32
+ var w = /*#__PURE__*/ S(x, [["render", C], ["__file", "/Users/kemal/Desktop/Kite/_Code/outs/ui/src/components/BrandLogo.vue"]]), T = {
33
33
  squircle: {
34
34
  width: 100,
35
35
  height: 100,
@@ -48,7 +48,7 @@ var w = /* @__PURE__ */ S(x, [["render", C], ["__file", "/Users/kemal/Desktop/Ki
48
48
  fill: "#ffffff"
49
49
  }]
50
50
  }
51
- }, E = "var(--logo-outer-stroke-color, currentColor)", D = "var(--logo-stroke-color, currentColor)", O = /* @__PURE__ */ s({
51
+ }, E = "var(--logo-outer-stroke-color, currentColor)", D = "var(--logo-stroke-color, currentColor)", O = /*@__PURE__*/ s({
52
52
  inheritAttrs: !1,
53
53
  __name: "SVGShape",
54
54
  props: {
@@ -272,11 +272,11 @@ function L(t, n, o, s, l, f) {
272
272
  }, null, 10, I))), 128))])], 8, P))
273
273
  ], 14, k)) : r("v-if", !0)], 16);
274
274
  }
275
- var R = /* @__PURE__ */ S(O, [
275
+ var R = /*#__PURE__*/ S(O, [
276
276
  ["render", L],
277
277
  ["__scopeId", "data-v-00a84a8e"],
278
278
  ["__file", "/Users/kemal/Desktop/Kite/_Code/outs/ui/src/components/SVGShape.vue"]
279
- ]), z = /* @__PURE__ */ s({
279
+ ]), z = /*@__PURE__*/ s({
280
280
  __name: "AccessWrapper",
281
281
  props: {
282
282
  logoData: {
@@ -331,7 +331,7 @@ function K(e, t, s, c, l, u) {
331
331
  }, null, -1), a("div", G, [_(e.$slots, "footer")])], 512)
332
332
  ]);
333
333
  }
334
- var q = /* @__PURE__ */ S(z, [["render", K], ["__file", "/Users/kemal/Desktop/Kite/_Code/outs/ui/src/components/AccessWrapper.vue"]]), J = /* @__PURE__ */ s({
334
+ var q = /*#__PURE__*/ S(z, [["render", K], ["__file", "/Users/kemal/Desktop/Kite/_Code/outs/ui/src/components/AccessWrapper.vue"]]), J = /*@__PURE__*/ s({
335
335
  __name: "ScrollableArea",
336
336
  props: {
337
337
  axis: {
@@ -413,7 +413,7 @@ function Y(e, t, n, o, s, c) {
413
413
  }, null, 6))
414
414
  ], 2);
415
415
  }
416
- var X = /* @__PURE__ */ S(J, [["render", Y], ["__file", "/Users/kemal/Desktop/Kite/_Code/outs/ui/src/components/ScrollableArea.vue"]]);
416
+ var X = /*#__PURE__*/ S(J, [["render", Y], ["__file", "/Users/kemal/Desktop/Kite/_Code/outs/ui/src/components/ScrollableArea.vue"]]);
417
417
  //#endregion
418
418
  //#region src/utils/svg-parse.ts
419
419
  function Z(e) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outs-tand-ing/ui",
3
- "version": "0.2.25",
3
+ "version": "0.2.28",
4
4
  "description": "Shared Vue components, icons, and design tokens for Outs",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -64,21 +64,22 @@
64
64
  "release:major": "bun scripts/release.ts major",
65
65
  "palette": "bun scripts/generate-palette.ts",
66
66
  "generate:android": "bun scripts/generate-android-colors.ts",
67
- "generate:ios": "bun scripts/generate-ios-colors.ts"
67
+ "generate:ios": "bun scripts/generate-ios-colors.ts",
68
+ "generate:android:icon": "bun scripts/generate-android-icon.ts"
68
69
  },
69
70
  "peerDependencies": {
70
71
  "vue": "^3.5.0"
71
72
  },
72
73
  "devDependencies": {
73
- "@vitejs/plugin-vue": "^6.0.6",
74
- "bun-types": "^1.3.13",
75
- "eslint": "^10.2.1",
76
- "eslint-plugin-vue": "^10.9.0",
77
- "sharp": "^0.34.5",
74
+ "@vitejs/plugin-vue": "^6.0.7",
75
+ "bun-types": "^1.3.14",
76
+ "eslint": "^10.4.1",
77
+ "eslint-plugin-vue": "^10.9.2",
78
+ "sharp": "^0.35.0",
78
79
  "typescript": "^6.0.3",
79
- "typescript-eslint": "^8.59.0",
80
- "vite": "^8.0.9",
81
- "vue": "^3.5.33",
82
- "vue-tsc": "^3.2.7"
80
+ "typescript-eslint": "^8.61.0",
81
+ "vite": "^8.0.16",
82
+ "vue": "^3.5.37",
83
+ "vue-tsc": "^3.3.4"
83
84
  }
84
85
  }
@@ -0,0 +1,34 @@
1
+ # App icon — single source
2
+
3
+ The brand mark (two overlapping rounded triangles, placeholder) lives here and is the **only**
4
+ editable source for both platforms. The triangle SVGs are not duplicated into the iOS or Android
5
+ trees — those hold generated/authored artifacts only.
6
+
7
+ | Source | What it drives |
8
+ |---|---|
9
+ | `triangle-back.svg`, `triangle-front.svg` | the mark geometry (1024 canvas, neutral fill — colour is applied per platform) |
10
+ | `palette.ts` | channel colours (dev red / prod green) + background |
11
+
12
+ ## Android — generated
13
+
14
+ From `ui/`:
15
+
16
+ ```sh
17
+ bun run generate:android:icon
18
+ ```
19
+
20
+ `scripts/generate-android-icon.ts` writes the `ic_launcher_foreground` / `ic_launcher_monochrome`
21
+ / `splash_icon` drawables + per-flavour `colors.xml` into the app tree (each `AUTO-GENERATED`).
22
+ Structural files (adaptive-icon XML, themes, manifest) stay hand-authored.
23
+
24
+ ## iOS — Icon Composer (manual, GUI)
25
+
26
+ iOS has no generation step — the layered Liquid Glass `.icon` is authored in **Icon Composer**:
27
+
28
+ 1. Import `triangle-back.svg` then `triangle-front.svg` from **this folder** as two layers.
29
+ 2. Set the channel fill (green prod / red dev) and tune Liquid Glass.
30
+ 3. Save over the project's `.icon` files at `ios/outstanding/AppIcon.icon` / `AppIconDev.icon`.
31
+
32
+ The `.icon` is the build artifact (it stays in the iOS tree); these SVGs are only its inputs.
33
+ A future enhancement can stamp the channel colour straight into the `.icon` layers to skip the GUI
34
+ for colour-only changes.
@@ -0,0 +1,8 @@
1
+ // Launcher-icon colour tokens — the single source for the Android icon generator.
2
+ // `dev`/`prod` are the build-channel signal (red dev / green prod), independent of season.
3
+ export const iconPalette = {
4
+ background: '#EDEDED',
5
+ fallback: '#888888',
6
+ dev: '#FF3B30',
7
+ prod: '#34C759',
8
+ }
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024">
2
+ <path fill="#9AA0A6" d="M407.5,382 Q445,317 482.5,382 L632.7,642 Q670.2,707 595.2,707 L294.8,707 Q219.8,707 257.3,642 L407.5,382 Z" />
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024">
2
+ <path fill="#9AA0A6" d="M540.5,382 Q578,317 615.5,382 L765.7,642 Q803.2,707 728.2,707 L427.8,707 Q352.8,707 390.3,642 L540.5,382 Z" />
3
+ </svg>