vibefast-cli 0.5.0 → 0.5.1
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.
- package/FEATURE-DEPENDENCY-SPEC.md +338 -0
- package/dist/__tests__/integration.test.d.ts +2 -0
- package/dist/__tests__/integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration.test.js +219 -0
- package/dist/__tests__/integration.test.js.map +1 -0
- package/dist/__tests__/recipes.test.d.ts +2 -0
- package/dist/__tests__/recipes.test.d.ts.map +1 -0
- package/dist/__tests__/recipes.test.js +143 -0
- package/dist/__tests__/recipes.test.js.map +1 -0
- package/dist/commands/__tests__/init.test.d.ts +2 -0
- package/dist/commands/__tests__/init.test.d.ts.map +1 -0
- package/dist/commands/__tests__/init.test.js +95 -0
- package/dist/commands/__tests__/init.test.js.map +1 -0
- package/dist/commands/__tests__/platform.test.d.ts +2 -0
- package/dist/commands/__tests__/platform.test.d.ts.map +1 -0
- package/dist/commands/__tests__/platform.test.js +123 -0
- package/dist/commands/__tests__/platform.test.js.map +1 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +4 -5
- package/dist/commands/add.js.map +1 -1
- package/dist/core/journal.d.ts.map +1 -1
- package/dist/core/journal.js +36 -19
- package/dist/core/journal.js.map +1 -1
- package/dist/core/recipes.d.ts.map +1 -1
- package/dist/core/recipes.js +8 -39
- package/dist/core/recipes.js.map +1 -1
- package/package.json +1 -1
- package/recipes/ios-widget/recipe.json +78 -0
- package/recipes/ios-widget/targets/widget/AppIntent.swift +46 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png +0 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/Contents.json +122 -0
- package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png +0 -0
- package/recipes/ios-widget/targets/widget/CalorieTrackerWidget.swift +424 -0
- package/recipes/ios-widget/targets/widget/HabitTrackerWidget.swift +305 -0
- package/recipes/ios-widget/targets/widget/Info.plist +11 -0
- package/recipes/ios-widget/targets/widget/WidgetLiveActivity.swift +75 -0
- package/recipes/ios-widget/targets/widget/expo-target.config.js +10 -0
- package/recipes/ios-widget/targets/widget/generated.entitlements +5 -0
- package/recipes/ios-widget/targets/widget/index.swift +18 -0
- package/recipes/ios-widget/targets/widget/widgets.swift +96 -0
- package/recipes/ios-widget@latest.zip +0 -0
- package/recipes/payments/apps/native/src/app/(root)/(protected)/paywall/index.tsx +74 -0
- package/recipes/payments/apps/native/src/app/(root)/(protected)/paywall/local.tsx +25 -0
- package/recipes/payments/apps/native/src/app/(root)/(protected)/paywall/remote.tsx +23 -0
- package/recipes/payments/apps/native/src/features/payments/README.md +200 -0
- package/recipes/payments/apps/native/src/features/payments/app/local-paywall.tsx +194 -0
- package/recipes/payments/apps/native/src/features/payments/app/remote-paywall.tsx +79 -0
- package/recipes/payments/apps/native/src/features/payments/components/payment-initializer.tsx +95 -0
- package/recipes/payments/apps/native/src/features/payments/components/paywall-error-state.tsx +60 -0
- package/recipes/payments/apps/native/src/features/payments/components/paywall-local-mode.tsx +116 -0
- package/recipes/payments/apps/native/src/features/payments/components/paywall-product-card.tsx +133 -0
- package/recipes/payments/apps/native/src/features/payments/components/paywall-remote-mode.tsx +146 -0
- package/recipes/payments/apps/native/src/features/payments/hooks/use-entitlement.ts +63 -0
- package/recipes/payments/apps/native/src/features/payments/index.ts +8 -0
- package/recipes/payments/apps/native/src/features/payments/services/revenuecat-adapter.ts +407 -0
- package/recipes/payments/recipe.json +58 -0
- package/recipes/payments@latest.zip +0 -0
- package/src/__tests__/integration.test.ts +249 -0
- package/src/__tests__/recipes.test.ts +168 -0
- package/src/commands/__tests__/init.test.ts +112 -0
- package/src/commands/__tests__/platform.test.ts +141 -0
- package/src/commands/add.ts +4 -5
- package/src/core/journal.ts +42 -25
- package/src/core/recipes.ts +8 -40
package/dist/core/journal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/core/journal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AA0BrC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB;IACnD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;
|
|
1
|
+
{"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/core/journal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AA0BrC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB;IACnD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;QAE/C,6BAA6B;QAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACnE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACzB,CAAC;QAED,mCAAmC;QACnC,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAChF,cAAc,GAAG,IAAI,CAAC;gBACtB,+BAA+B;gBAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAiB,CAAC;gBAEzC,oCAAoC;gBACpC,MAAM,QAAQ,GAAgB,EAAE,CAAC;gBACjC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;oBAChC,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1C,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,wCAAwC;wBACxC,OAAO,CAAC,IAAI,CAAC,uBAAuB,QAAQ,YAAY,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC;gBAED,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;YACzB,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,qDAAqD,EAAE,GAAG,CAAC,CAAC;QACzE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB,EAAE,OAAgB;IACtE,MAAM,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACtC,MAAM,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,WAAmB,EAAE,KAAmB;IACrE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IAC/C,gDAAgD;IAChD,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CACjE,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,OAAe,EACf,MAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACtF,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CACrD,CAAC;IACF,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,WAAmB,EACnB,OAAe,EACf,MAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;AACzF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,UAAU,EAoE/B,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,EAAE,CAE3E;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,cAAc,EAAE,CAEhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAS/D"}
|
package/dist/core/recipes.js
CHANGED
|
@@ -60,48 +60,17 @@ export const RECIPES = [
|
|
|
60
60
|
description: 'Wake word detection with Vosk',
|
|
61
61
|
icon: '🎙️',
|
|
62
62
|
},
|
|
63
|
-
// Advanced UI Components
|
|
64
63
|
{
|
|
65
|
-
name: '
|
|
66
|
-
category: '
|
|
67
|
-
description: '
|
|
68
|
-
icon: '
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
name: 'animated-switch',
|
|
72
|
-
category: 'advanced-ui',
|
|
73
|
-
description: 'Smooth animated toggle switch',
|
|
74
|
-
icon: '🎚️',
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
name: 'animated-chip',
|
|
78
|
-
category: 'advanced-ui',
|
|
79
|
-
description: 'Animated chip/tag component with press effects',
|
|
80
|
-
icon: '🏷️',
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
name: 'number-stepper',
|
|
84
|
-
category: 'advanced-ui',
|
|
85
|
-
description: 'Number input with +/- buttons',
|
|
86
|
-
icon: '🔢',
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
name: 'progress-circle',
|
|
90
|
-
category: 'advanced-ui',
|
|
91
|
-
description: 'Circular progress indicator with animation',
|
|
92
|
-
icon: '⭕',
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
name: 'swipe-slider',
|
|
96
|
-
category: 'advanced-ui',
|
|
97
|
-
description: 'Interactive swipe-to-confirm slider',
|
|
98
|
-
icon: '👆',
|
|
64
|
+
name: 'ios-widget',
|
|
65
|
+
category: 'feature',
|
|
66
|
+
description: 'iOS Home Screen widgets with Live Activities',
|
|
67
|
+
icon: '📱',
|
|
99
68
|
},
|
|
100
69
|
{
|
|
101
|
-
name: '
|
|
102
|
-
category: '
|
|
103
|
-
description: '
|
|
104
|
-
icon: '
|
|
70
|
+
name: 'payments',
|
|
71
|
+
category: 'feature',
|
|
72
|
+
description: 'In-app purchases and subscriptions with RevenueCat',
|
|
73
|
+
icon: '💳',
|
|
105
74
|
},
|
|
106
75
|
];
|
|
107
76
|
/**
|
package/dist/core/recipes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAiB;IACnC,WAAW;IACX;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE,KAAK;KACZ;IACD;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,KAAK;KACZ;
|
|
1
|
+
{"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/core/recipes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAiB;IACnC,WAAW;IACX;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE,KAAK;KACZ;IACD;QACE,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,KAAK;KACZ;IACD;QACE,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,IAAI;KACX;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oDAAoD;QACjE,IAAI,EAAE,IAAI;KACX;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAwB;IAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAwB;IACrD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC;QACpB,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC;QACvB,KAAK,aAAa;YAChB,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ios-widget",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "iOS Home Screen widgets with Live Activities",
|
|
5
|
+
"category": "feature",
|
|
6
|
+
"icon": "📱",
|
|
7
|
+
"complexity": "medium",
|
|
8
|
+
"platforms": ["native"],
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"source": "targets/widget/AppIntent.swift",
|
|
12
|
+
"destination": "apps/native/targets/widget/AppIntent.swift"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"source": "targets/widget/CalorieTrackerWidget.swift",
|
|
16
|
+
"destination": "apps/native/targets/widget/CalorieTrackerWidget.swift"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"source": "targets/widget/expo-target.config.js",
|
|
20
|
+
"destination": "apps/native/targets/widget/expo-target.config.js"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"source": "targets/widget/generated.entitlements",
|
|
24
|
+
"destination": "apps/native/targets/widget/generated.entitlements"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"source": "targets/widget/HabitTrackerWidget.swift",
|
|
28
|
+
"destination": "apps/native/targets/widget/HabitTrackerWidget.swift"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"source": "targets/widget/index.swift",
|
|
32
|
+
"destination": "apps/native/targets/widget/index.swift"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"source": "targets/widget/Info.plist",
|
|
36
|
+
"destination": "apps/native/targets/widget/Info.plist"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"source": "targets/widget/WidgetLiveActivity.swift",
|
|
40
|
+
"destination": "apps/native/targets/widget/WidgetLiveActivity.swift"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"source": "targets/widget/widgets.swift",
|
|
44
|
+
"destination": "apps/native/targets/widget/widgets.swift"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"source": "targets/widget/Assets.xcassets",
|
|
48
|
+
"destination": "apps/native/targets/widget/Assets.xcassets",
|
|
49
|
+
"type": "directory"
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"npm": ["@bacons/apple-targets"],
|
|
54
|
+
"expo": []
|
|
55
|
+
},
|
|
56
|
+
"manualSteps": [
|
|
57
|
+
{
|
|
58
|
+
"title": "Configure Widget Plugin",
|
|
59
|
+
"description": "Add the @bacons/apple-targets plugin to your app.config.ts",
|
|
60
|
+
"file": "apps/native/app.config.ts",
|
|
61
|
+
"content": "[\n '@bacons/apple-targets',\n {\n targets: [\n {\n name: 'VibeFastWidget',\n type: 'widget',\n bundleIdentifier: `${Env.BUNDLE_ID}.widget`,\n entitlements: {\n 'com.apple.security.application-groups': [\n 'group.com.vibefast.vibefast',\n ],\n },\n },\n ],\n },\n]"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"title": "Configure App Groups",
|
|
65
|
+
"description": "Ensure your main app has App Groups entitlements in app.config.ts",
|
|
66
|
+
"file": "apps/native/app.config.ts",
|
|
67
|
+
"content": "ios: {\n entitlements: {\n 'com.apple.security.application-groups': ['group.com.vibefast.shared'],\n },\n}"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"postInstall": {
|
|
71
|
+
"instructions": [
|
|
72
|
+
"Widget target files have been added",
|
|
73
|
+
"Run 'npx expo prebuild --clean' to regenerate native projects",
|
|
74
|
+
"Build and run on iOS to see the widgets",
|
|
75
|
+
"Long-press on home screen > Add Widget > Select your app"
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import WidgetKit
|
|
2
|
+
import AppIntents
|
|
3
|
+
|
|
4
|
+
@available(iOSApplicationExtension 17.0, *)
|
|
5
|
+
struct CalorieWidgetConfigurationIntent: WidgetConfigurationIntent {
|
|
6
|
+
static var title: LocalizedStringResource { "Widget Configuration" }
|
|
7
|
+
static var description: IntentDescription { "Configure how your nutrition data is displayed in the widget." }
|
|
8
|
+
|
|
9
|
+
@available(iOSApplicationExtension 17.0, *)
|
|
10
|
+
@Parameter(title: "Display Mode", default: .fullMacros)
|
|
11
|
+
var displayMode: DisplayMode
|
|
12
|
+
|
|
13
|
+
@available(iOSApplicationExtension 17.0, *)
|
|
14
|
+
@Parameter(title: "Show Progress Ring", default: true)
|
|
15
|
+
var showProgressRing: Bool
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Simple App Intent for the basic widget
|
|
19
|
+
@available(iOSApplicationExtension 17.0, *)
|
|
20
|
+
struct ConfigurationAppIntent: WidgetConfigurationIntent {
|
|
21
|
+
static var title: LocalizedStringResource { "Configuration" }
|
|
22
|
+
static var description: IntentDescription { "Configure the widget display." }
|
|
23
|
+
|
|
24
|
+
@available(iOSApplicationExtension 17.0, *)
|
|
25
|
+
@Parameter(title: "Favorite Emoji", default: "😀")
|
|
26
|
+
var favoriteEmoji: String
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@available(iOSApplicationExtension 17.0, *)
|
|
30
|
+
enum DisplayMode: String, AppEnum {
|
|
31
|
+
case caloriesOnly = "calories_only"
|
|
32
|
+
case fullMacros = "full_macros"
|
|
33
|
+
case progressEmphasis = "progress_emphasis"
|
|
34
|
+
|
|
35
|
+
static var typeDisplayRepresentation: TypeDisplayRepresentation {
|
|
36
|
+
TypeDisplayRepresentation(name: "Display Mode")
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static var caseDisplayRepresentations: [DisplayMode: DisplayRepresentation] {
|
|
40
|
+
[
|
|
41
|
+
.caloriesOnly: DisplayRepresentation(title: "Calories Only", subtitle: "Show only calorie information"),
|
|
42
|
+
.fullMacros: DisplayRepresentation(title: "Full Macros", subtitle: "Show calories and macronutrients"),
|
|
43
|
+
.progressEmphasis: DisplayRepresentation(title: "Progress Focus", subtitle: "Emphasize progress and goals")
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
}
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png
ADDED
|
Binary file
|
package/recipes/ios-widget/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
{
|
|
2
|
+
"images": [
|
|
3
|
+
{
|
|
4
|
+
"idiom": "iphone",
|
|
5
|
+
"size": "20x20",
|
|
6
|
+
"scale": "2x",
|
|
7
|
+
"filename": "App-Icon-20x20@2x.png"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"idiom": "iphone",
|
|
11
|
+
"size": "20x20",
|
|
12
|
+
"scale": "3x",
|
|
13
|
+
"filename": "App-Icon-20x20@3x.png"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"idiom": "iphone",
|
|
17
|
+
"size": "29x29",
|
|
18
|
+
"scale": "1x",
|
|
19
|
+
"filename": "App-Icon-29x29@1x.png"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"idiom": "iphone",
|
|
23
|
+
"size": "29x29",
|
|
24
|
+
"scale": "2x",
|
|
25
|
+
"filename": "App-Icon-29x29@2x.png"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"idiom": "iphone",
|
|
29
|
+
"size": "29x29",
|
|
30
|
+
"scale": "3x",
|
|
31
|
+
"filename": "App-Icon-29x29@3x.png"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"idiom": "iphone",
|
|
35
|
+
"size": "40x40",
|
|
36
|
+
"scale": "2x",
|
|
37
|
+
"filename": "App-Icon-40x40@2x.png"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"idiom": "iphone",
|
|
41
|
+
"size": "40x40",
|
|
42
|
+
"scale": "3x",
|
|
43
|
+
"filename": "App-Icon-40x40@3x.png"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"idiom": "iphone",
|
|
47
|
+
"size": "60x60",
|
|
48
|
+
"scale": "2x",
|
|
49
|
+
"filename": "App-Icon-60x60@2x.png"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"idiom": "iphone",
|
|
53
|
+
"size": "60x60",
|
|
54
|
+
"scale": "3x",
|
|
55
|
+
"filename": "App-Icon-60x60@3x.png"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"idiom": "ipad",
|
|
59
|
+
"size": "20x20",
|
|
60
|
+
"scale": "1x",
|
|
61
|
+
"filename": "App-Icon-20x20@1x.png"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"idiom": "ipad",
|
|
65
|
+
"size": "20x20",
|
|
66
|
+
"scale": "2x",
|
|
67
|
+
"filename": "App-Icon-20x20@2x.png"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"idiom": "ipad",
|
|
71
|
+
"size": "29x29",
|
|
72
|
+
"scale": "1x",
|
|
73
|
+
"filename": "App-Icon-29x29@1x.png"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"idiom": "ipad",
|
|
77
|
+
"size": "29x29",
|
|
78
|
+
"scale": "2x",
|
|
79
|
+
"filename": "App-Icon-29x29@2x.png"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"idiom": "ipad",
|
|
83
|
+
"size": "40x40",
|
|
84
|
+
"scale": "1x",
|
|
85
|
+
"filename": "App-Icon-40x40@1x.png"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"idiom": "ipad",
|
|
89
|
+
"size": "40x40",
|
|
90
|
+
"scale": "2x",
|
|
91
|
+
"filename": "App-Icon-40x40@2x.png"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"idiom": "ipad",
|
|
95
|
+
"size": "76x76",
|
|
96
|
+
"scale": "1x",
|
|
97
|
+
"filename": "App-Icon-76x76@1x.png"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"idiom": "ipad",
|
|
101
|
+
"size": "76x76",
|
|
102
|
+
"scale": "2x",
|
|
103
|
+
"filename": "App-Icon-76x76@2x.png"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"idiom": "ipad",
|
|
107
|
+
"size": "83.5x83.5",
|
|
108
|
+
"scale": "2x",
|
|
109
|
+
"filename": "App-Icon-83.5x83.5@2x.png"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"idiom": "ios-marketing",
|
|
113
|
+
"size": "1024x1024",
|
|
114
|
+
"scale": "1x",
|
|
115
|
+
"filename": "ItunesArtwork@2x.png"
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"info": {
|
|
119
|
+
"version": 1,
|
|
120
|
+
"author": "expo"
|
|
121
|
+
}
|
|
122
|
+
}
|