Skip to content

Commit

Permalink
Added the skeleton packages for the Odie-based Jetpackcom support UI …
Browse files Browse the repository at this point in the history
…app.
  • Loading branch information
zinigor committed Aug 30, 2024
1 parent d8e1f42 commit 7a4e2fc
Show file tree
Hide file tree
Showing 5 changed files with 240 additions and 1 deletion.
1 change: 1 addition & 0 deletions apps/jetpackme-support/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
### The Odie bot interface for Jetpack.com
29 changes: 29 additions & 0 deletions apps/jetpackme-support/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import OdieAssistantProvider, {
OdieAssistant,
EllipsisMenu,
useOdieAssistantContext,
} from '@automattic/odie-client';

const OdieBot = () => {
const { clearChat } = useOdieAssistantContext();
return (
<OdieAssistantProvider botNameSlug="jetpack-support-chat">
<div className="custom-class">
<EllipsisMenu popoverClassName="menu-class" position="bottom">
<span
role="button"
tabIndex={ 0 }
onClick={ () => clearChat() }
onKeyPress={ () => clearChat() }
className="menu-item-class"
>
Start a New Chat
</span>
</EllipsisMenu>
</div>
<OdieAssistant />
</OdieAssistantProvider>
);
};

window.JetpackSupportBot = OdieBot();
58 changes: 58 additions & 0 deletions apps/jetpackme-support/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"name": "@automattic/jetpackme-support",
"version": "1.0.0",
"description": "A Jetpack.com Odie bot interface application.",
"homepage": "https://github.com/Automattic/wp-calypso",
"license": "GPL-2.0-or-later",
"author": "Automattic Inc.",
"sideEffects": [
"*.css",
"*.scss",
"./config.js"
],
"repository": {
"type": "git",
"url": "git+https://github.com/Automattic/wp-calypso.git",
"directory": "apps/help-center"
},
"publishConfig": {
"access": "public"
},
"bugs": "https://github.com/Automattic/wp-calypso/issues",
"types": "dist/types",
"scripts": {
"clean": "rm -rf dist",
"teamcity:build-app": "yarn run build",
"build": "NODE_ENV=production yarn dev",
"build:app": "calypso-build",
"dev": "yarn run calypso-apps-builder --localPath dist --remotePath /home/wpcom/public_html/widgets.wp.com/help-center",
"prepack": "yarn run clean && yarn run build",
"watch": "tsc --build ./tsconfig.json --watch",
"translate": "rm -rf dist/strings && wp-babel-makepot './dist/*.{js,jsx,ts,tsx}' --ignore '**/node_modules/**,**/test/**,**/*.d.ts' --base './dist' --dir './dist/strings' --output './dist/help-center.pot' && build-app-languages --stringsFilePath='./dist/help-center.pot' --outputPath='./dist/languages' --outputFormat='JS'"
},
"dependencies": {
"@automattic/components": "workspace:^",
"@automattic/i18n-utils": "workspace:^",
"@automattic/odie-client": "workspace:^",
"@wordpress/components": "^28.2.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"@automattic/calypso-apps-builder": "workspace:^",
"@automattic/calypso-build": "workspace:^",
"@automattic/calypso-typescript-config": "workspace:^",
"@automattic/wp-babel-makepot": "workspace:^",
"@wordpress/dependency-extraction-webpack-plugin": "5.9.0",
"@wordpress/readable-js-assets-webpack-plugin": "3.0.0",
"autoprefixer": "^10.4.20",
"copy-webpack-plugin": "^10.2.4",
"typescript": "^5.3.3",
"webpack": "^5.91.0"
},
"peerDependencies": {
"@wordpress/data": "^10.2.0",
"postcss": "*"
},
"private": true
}
100 changes: 100 additions & 0 deletions apps/jetpackme-support/webpack.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
const path = require( 'path' );
const FileConfig = require( '@automattic/calypso-build/webpack/file-loader' );
const SassConfig = require( '@automattic/calypso-build/webpack/sass' );
const TranspileConfig = require( '@automattic/calypso-build/webpack/transpile' );
const { shouldTranspileDependency } = require( '@automattic/calypso-build/webpack/util' );
const getBaseWebpackConfig = require( '@automattic/calypso-build/webpack.config.js' );
const ReadableJsAssetsWebpackPlugin = require( '@wordpress/readable-js-assets-webpack-plugin' );
const autoprefixerPlugin = require( 'autoprefixer' );
const webpack = require( 'webpack' );
const cacheIdentifier = require( '../../build-tools/babel/babel-loader-cache-identifier' );
const GenerateChunksMapPlugin = require( '../../build-tools/webpack/generate-chunks-map-plugin' );
const isDevelopment = process.env.NODE_ENV !== 'production';
const extraPath = 'fallback';
const cachePath = path.resolve( '.cache', extraPath );

/* Arguments to this function replicate webpack's so this config can be used on the command line,
* with individual options overridden by command line args.
* @see {@link https://webpack.js.org/configuration/configuration-types/#exporting-a-function}
* @see {@link https://webpack.js.org/api/cli/}
* @param {Object} env environment options
* @param {string} env.source plugin slugs, comma separated list
* @param {Object} argv options map
* @param {string} argv.entry entry path
* @returns {Object} webpack config
*/
function getWebpackConfig( env = { source: '' }, argv = {} ) {
env.WP = true;
const outputPath = path.join( __dirname, 'dist' );

const webpackConfig = getBaseWebpackConfig( env, argv );

return {
...webpackConfig,
mode: isDevelopment ? 'development' : 'production',
entry: {
'jetpackme-support': path.join( __dirname, 'index.js' ),
},
output: {
...webpackConfig.output,
path: outputPath,
filename: '[name].min.js', // dynamic filename
library: 'jetpackme-support',
},
optimization: {
...webpackConfig.optimization,
// disable module concatenation so that instances of `__()` are not renamed
concatenateModules: false,
},
module: {
rules: [
TranspileConfig.loader( {
workerCount: 2,
configFile: path.resolve( '../../babel.config.js' ),
cacheDirectory: path.resolve( cachePath, 'babel-client' ),
cacheIdentifier,
cacheCompression: false,
exclude: /node_modules\//,
} ),
TranspileConfig.loader( {
workerCount: 2,
presets: [ require.resolve( '@automattic/calypso-babel-config/presets/dependencies' ) ],
cacheDirectory: path.resolve( cachePath, 'babel-client' ),
cacheIdentifier,
cacheCompression: false,
include: shouldTranspileDependency,
} ),
SassConfig.loader( {
includePaths: [ __dirname ],
postCssOptions: {
// Do not use postcss.config.js. This ensure we have the final say on how PostCSS is used in calypso.
// This is required because Calypso imports `@automattic/notifications` and that package defines its
// own `postcss.config.js` that they use for their webpack bundling process.
config: false,
plugins: [ autoprefixerPlugin() ],
},
prelude: `@use '${ require.resolve(
'calypso/assets/stylesheets/shared/_utils.scss'
) }' as *;`,
} ),
FileConfig.loader(),
],
},
plugins: [
new webpack.DefinePlugin( {
'process.env.NODE_DEBUG': JSON.stringify( process.env.NODE_DEBUG || false ),
} ),
new GenerateChunksMapPlugin( {
output: path.resolve( './dist/chunks-map.json' ),
} ),
...SassConfig.plugins( {
filename: '[name].min.css',
chunkFilename: '[contenthash].css',
minify: ! isDevelopment,
} ),
new ReadableJsAssetsWebpackPlugin(),
],
};
}

module.exports = getWebpackConfig;
53 changes: 52 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1236,6 +1236,32 @@ __metadata:
languageName: unknown
linkType: soft

"@automattic/jetpackme-support@workspace:apps/jetpackme-support":
version: 0.0.0-use.local
resolution: "@automattic/jetpackme-support@workspace:apps/jetpackme-support"
dependencies:
"@automattic/calypso-apps-builder": "workspace:^"
"@automattic/calypso-build": "workspace:^"
"@automattic/calypso-typescript-config": "workspace:^"
"@automattic/components": "workspace:^"
"@automattic/i18n-utils": "workspace:^"
"@automattic/odie-client": "workspace:^"
"@automattic/wp-babel-makepot": "workspace:^"
"@wordpress/components": "npm:^28.2.0"
"@wordpress/dependency-extraction-webpack-plugin": "npm:5.9.0"
"@wordpress/readable-js-assets-webpack-plugin": "npm:3.0.0"
autoprefixer: "npm:^10.4.20"
copy-webpack-plugin: "npm:^10.2.4"
react: "npm:^18.2.0"
react-dom: "npm:^18.2.0"
typescript: "npm:^5.3.3"
webpack: "npm:^5.91.0"
peerDependencies:
"@wordpress/data": ^10.2.0
postcss: "*"
languageName: unknown
linkType: soft

"@automattic/js-utils@workspace:^, @automattic/js-utils@workspace:packages/js-utils":
version: 0.0.0-use.local
resolution: "@automattic/js-utils@workspace:packages/js-utils"
Expand Down Expand Up @@ -11623,6 +11649,24 @@ __metadata:
languageName: node
linkType: hard

"autoprefixer@npm:^10.4.20":
version: 10.4.20
resolution: "autoprefixer@npm:10.4.20"
dependencies:
browserslist: "npm:^4.23.3"
caniuse-lite: "npm:^1.0.30001646"
fraction.js: "npm:^4.3.7"
normalize-range: "npm:^0.1.2"
picocolors: "npm:^1.0.1"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.1.0
bin:
autoprefixer: bin/autoprefixer
checksum: e1f00978a26e7c5b54ab12036d8c13833fad7222828fc90914771b1263f51b28c7ddb5803049de4e77696cbd02bb25cfc3634e80533025bb26c26aacdf938940
languageName: node
linkType: hard

"autosize@npm:^4.0.2, autosize@npm:^4.0.4":
version: 4.0.4
resolution: "autosize@npm:4.0.4"
Expand Down Expand Up @@ -12255,7 +12299,7 @@ __metadata:
languageName: node
linkType: hard

"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.16.0, browserslist@npm:^4.16.3, browserslist@npm:^4.16.6, browserslist@npm:^4.21.10, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1, browserslist@npm:^4.8.2":
"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.16.0, browserslist@npm:^4.16.3, browserslist@npm:^4.16.6, browserslist@npm:^4.21.10, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1, browserslist@npm:^4.23.3, browserslist@npm:^4.8.2":
version: 4.23.3
resolution: "browserslist@npm:4.23.3"
dependencies:
Expand Down Expand Up @@ -18394,6 +18438,13 @@ __metadata:
languageName: node
linkType: hard

"fraction.js@npm:^4.3.7":
version: 4.3.7
resolution: "fraction.js@npm:4.3.7"
checksum: df291391beea9ab4c263487ffd9d17fed162dbb736982dee1379b2a8cc94e4e24e46ed508c6d278aded9080ba51872f1bc5f3a5fd8d7c74e5f105b508ac28711
languageName: node
linkType: hard

"fragment-cache@npm:^0.2.1":
version: 0.2.1
resolution: "fragment-cache@npm:0.2.1"
Expand Down

0 comments on commit 7a4e2fc

Please sign in to comment.