handoff-app 0.8.3 → 0.8.5

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.
Files changed (142) hide show
  1. package/Changelog.md +21 -9
  2. package/config/integrations/bootstrap/5.2/sass/main.scss +47 -47
  3. package/config/integrations/bootstrap/5.2/templates/main.scss +1 -1
  4. package/config/integrations/bootstrap/5.3/sass/main.scss +47 -47
  5. package/config/integrations/bootstrap/5.3/templates/main.scss +1 -1
  6. package/config/integrations/starter/sass/main.scss +2 -20
  7. package/config/integrations/starter/templates/main.scss +1 -1
  8. package/dist/cli/eject.js +24 -8
  9. package/dist/cli.js +2 -2
  10. package/dist/exporters/utils.d.ts +1 -0
  11. package/dist/index.d.ts +0 -1
  12. package/dist/templates/main.scss +1 -1
  13. package/dist/transformers/font/index.d.ts +0 -1
  14. package/dist/transformers/font/index.js +2 -5
  15. package/dist/transformers/integration/index.js +14 -16
  16. package/dist/utils/preview.js +2 -2
  17. package/package.json +2 -2
  18. package/src/app/.next/BUILD_ID +1 -1
  19. package/src/app/.next/build-manifest.json +5 -5
  20. package/src/app/.next/cache/eslint/.cache_y57f03 +1 -1
  21. package/src/app/.next/cache/next-server.js.nft.json +1 -1
  22. package/src/app/.next/cache/webpack/client-production/0.pack +0 -0
  23. package/src/app/.next/cache/webpack/client-production/1.pack +0 -0
  24. package/src/app/.next/cache/webpack/client-production/2.pack +0 -0
  25. package/src/app/.next/cache/webpack/client-production/3.pack +0 -0
  26. package/src/app/.next/cache/webpack/client-production/index.pack +0 -0
  27. package/src/app/.next/cache/webpack/client-production/index.pack.old +0 -0
  28. package/src/app/.next/cache/webpack/server-production/0.pack +0 -0
  29. package/src/app/.next/cache/webpack/server-production/1.pack +0 -0
  30. package/src/app/.next/cache/webpack/server-production/2.pack +0 -0
  31. package/src/app/.next/cache/webpack/server-production/3.pack +0 -0
  32. package/src/app/.next/cache/webpack/server-production/4.pack +0 -0
  33. package/src/app/.next/cache/webpack/server-production/index.pack +0 -0
  34. package/src/app/.next/cache/webpack/server-production/index.pack.old +0 -0
  35. package/src/app/.next/next-minimal-server.js.nft.json +1 -1
  36. package/src/app/.next/next-server.js.nft.json +1 -1
  37. package/src/app/.next/prerender-manifest.js +1 -1
  38. package/src/app/.next/prerender-manifest.json +1 -1
  39. package/src/app/.next/routes-manifest.json +1 -1
  40. package/src/app/.next/server/functions-config-manifest.json +6 -6
  41. package/src/app/.next/server/middleware-build-manifest.js +1 -1
  42. package/src/app/.next/server/pages/404.html +1 -1
  43. package/src/app/.next/server/pages/500.html +1 -1
  44. package/src/app/.next/server/pages/[level1]/[level2].js.nft.json +1 -1
  45. package/src/app/.next/server/pages/[level1].js.nft.json +1 -1
  46. package/src/app/.next/server/pages/_app.js.nft.json +1 -1
  47. package/src/app/.next/server/pages/_document.js.nft.json +1 -1
  48. package/src/app/.next/server/pages/_error.js.nft.json +1 -1
  49. package/src/app/.next/server/pages/assets/fonts.html +1 -1
  50. package/src/app/.next/server/pages/assets/fonts.js.nft.json +1 -1
  51. package/src/app/.next/server/pages/assets/icons/[name].js.nft.json +1 -1
  52. package/src/app/.next/server/pages/assets/icons/alert.html +1 -1
  53. package/src/app/.next/server/pages/assets/icons/arrow-left.html +1 -1
  54. package/src/app/.next/server/pages/assets/icons/arrow-right.html +1 -1
  55. package/src/app/.next/server/pages/assets/icons/bin.html +1 -1
  56. package/src/app/.next/server/pages/assets/icons/checkmark.html +1 -1
  57. package/src/app/.next/server/pages/assets/icons/chevron-down.html +1 -1
  58. package/src/app/.next/server/pages/assets/icons/chevron-left.html +1 -1
  59. package/src/app/.next/server/pages/assets/icons/chevron-right.html +1 -1
  60. package/src/app/.next/server/pages/assets/icons/chevron-up.html +1 -1
  61. package/src/app/.next/server/pages/assets/icons/close.html +1 -1
  62. package/src/app/.next/server/pages/assets/icons/danger.html +1 -1
  63. package/src/app/.next/server/pages/assets/icons/download.html +1 -1
  64. package/src/app/.next/server/pages/assets/icons/forbidden.html +1 -1
  65. package/src/app/.next/server/pages/assets/icons/globe.html +1 -1
  66. package/src/app/.next/server/pages/assets/icons/info.html +1 -1
  67. package/src/app/.next/server/pages/assets/icons/location.html +1 -1
  68. package/src/app/.next/server/pages/assets/icons/mail.html +1 -1
  69. package/src/app/.next/server/pages/assets/icons/minus.html +1 -1
  70. package/src/app/.next/server/pages/assets/icons/plus.html +1 -1
  71. package/src/app/.next/server/pages/assets/icons/preferences.html +1 -1
  72. package/src/app/.next/server/pages/assets/icons/search.html +1 -1
  73. package/src/app/.next/server/pages/assets/icons/settings.html +1 -1
  74. package/src/app/.next/server/pages/assets/icons/user.html +1 -1
  75. package/src/app/.next/server/pages/assets/icons/users.html +1 -1
  76. package/src/app/.next/server/pages/assets/icons.html +1 -1
  77. package/src/app/.next/server/pages/assets/icons.js.nft.json +1 -1
  78. package/src/app/.next/server/pages/assets/logos.html +1 -1
  79. package/src/app/.next/server/pages/assets/logos.js.nft.json +1 -1
  80. package/src/app/.next/server/pages/assets.html +1 -1
  81. package/src/app/.next/server/pages/assets.js.nft.json +1 -1
  82. package/src/app/.next/server/pages/changelog.html +1 -1
  83. package/src/app/.next/server/pages/changelog.js.nft.json +1 -1
  84. package/src/app/.next/server/pages/components/[component].js.nft.json +1 -1
  85. package/src/app/.next/server/pages/components/alert.html +2 -2
  86. package/src/app/.next/server/pages/components/button.html +2 -2
  87. package/src/app/.next/server/pages/components/checkbox.html +2 -2
  88. package/src/app/.next/server/pages/components/input.html +2 -2
  89. package/src/app/.next/server/pages/components/modal.html +2 -2
  90. package/src/app/.next/server/pages/components/radio.html +2 -2
  91. package/src/app/.next/server/pages/components/select.html +2 -2
  92. package/src/app/.next/server/pages/components/switch.html +2 -2
  93. package/src/app/.next/server/pages/components/tooltip.html +2 -2
  94. package/src/app/.next/server/pages/components.html +1 -1
  95. package/src/app/.next/server/pages/components.js.nft.json +1 -1
  96. package/src/app/.next/server/pages/foundations/colors.html +1 -1
  97. package/src/app/.next/server/pages/foundations/colors.js.nft.json +1 -1
  98. package/src/app/.next/server/pages/foundations/effects.html +1 -1
  99. package/src/app/.next/server/pages/foundations/effects.js.nft.json +1 -1
  100. package/src/app/.next/server/pages/foundations/logo.html +1 -1
  101. package/src/app/.next/server/pages/foundations/logo.js.nft.json +1 -1
  102. package/src/app/.next/server/pages/foundations/typography.html +1 -1
  103. package/src/app/.next/server/pages/foundations/typography.js.nft.json +1 -1
  104. package/src/app/.next/server/pages/foundations.html +1 -1
  105. package/src/app/.next/server/pages/foundations.js.nft.json +1 -1
  106. package/src/app/.next/server/pages/index/index.html +1 -1
  107. package/src/app/.next/server/pages/index.html +1 -1
  108. package/src/app/.next/server/pages/index.js.nft.json +1 -1
  109. package/src/app/.next/server/pages-manifest.json +6 -6
  110. package/src/app/.next/static/{Ma_NsyPIHaZbwoMoYkjZX → 2f11n3F48Gw-ztcZHx7zT}/_buildManifest.js +1 -1
  111. package/src/app/.next/static/chunks/{49-c0fa003c0a45602f.js → 49-a1308af5acbb7a1b.js} +1 -1
  112. package/src/app/.next/static/chunks/pages/{changelog-a7f723f0cace75c8.js → changelog-a496587c7bddadd4.js} +1 -1
  113. package/src/app/.next/trace +21 -21
  114. package/src/app/out/build-manifest.json +10 -0
  115. package/src/app/out/cache/eslint/.cache_vkv6wg +1 -1
  116. package/src/app/out/cache/webpack/client-development/0.pack.gz +0 -0
  117. package/src/app/out/cache/webpack/client-development/1.pack.gz +0 -0
  118. package/src/app/out/cache/webpack/client-development/index.pack.gz +0 -0
  119. package/src/app/out/cache/webpack/client-development/index.pack.gz.old +0 -0
  120. package/src/app/out/cache/webpack/server-development/0.pack.gz +0 -0
  121. package/src/app/out/cache/webpack/server-development/1.pack.gz +0 -0
  122. package/src/app/out/cache/webpack/server-development/index.pack.gz +0 -0
  123. package/src/app/out/cache/webpack/server-development/index.pack.gz.old +0 -0
  124. package/src/app/out/server/middleware-build-manifest.js +1 -1
  125. package/src/app/out/server/pages/components/[component].js +1351 -0
  126. package/src/app/out/server/pages/components.js +1010 -0
  127. package/src/app/out/server/pages-manifest.json +3 -1
  128. package/src/app/out/static/chunks/pages/components/[component].js +3873 -0
  129. package/src/app/out/static/chunks/pages/components.js +3176 -0
  130. package/src/app/out/static/chunks/webpack.js +1 -1
  131. package/src/app/out/static/development/_buildManifest.js +1 -1
  132. package/src/app/out/static/webpack/545e2f82ff0f3400.webpack.hot-update.json +1 -0
  133. package/src/app/out/static/webpack/87c022de859e1103.webpack.hot-update.json +1 -0
  134. package/src/app/out/static/webpack/webpack.545e2f82ff0f3400.hot-update.js +18 -0
  135. package/src/app/out/static/webpack/webpack.87c022de859e1103.hot-update.js +18 -0
  136. package/src/app/out/trace +20 -15
  137. package/src/cli/eject.ts +13 -2
  138. package/src/cli.ts +2 -2
  139. package/src/transformers/font/index.ts +1 -2
  140. package/src/transformers/integration/index.ts +14 -16
  141. package/src/utils/preview.ts +2 -2
  142. /package/src/app/.next/static/{Ma_NsyPIHaZbwoMoYkjZX → 2f11n3F48Gw-ztcZHx7zT}/_ssgManifest.js +0 -0
package/Changelog.md CHANGED
@@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to
7
7
  [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
8
8
 
9
+ ## [0.8.5] - 2023-10-05
10
+
11
+ Miscellaneous improvements to ejecting of integrations, integration handling and building of previews to make it easier for the exported integration to be included in a bootstrap project.
12
+
13
+ ## [0.8.4] - 2023-10-02
14
+
15
+ Handoff users reported a bug in `handoff-app build:app` last week. The bug didn't manifest in regression testing. This error was traced to typings in a dependency of `next`.
16
+
17
+ ### Bugfix
18
+
19
+ - Nextjs released 13.5.x which has conflict with the handoff build. This release instructs package.json to stay with 13.4.x while the conflict is resolved.
20
+
9
21
  ## [0.8.3] - 2023-09-27
10
22
 
11
23
  ### Changes
@@ -42,7 +54,7 @@ Here are the steps that need to be done:
42
54
 
43
55
  Replace glob import lines with the respective import tokens. Note that design foundation tokens are manually imported as the tokens only handle imports related to the exported components.
44
56
 
45
- *Before the new release:*
57
+ _Before the new release:_
46
58
 
47
59
  ```scss
48
60
  @import './exported/tokens/types/*';
@@ -50,7 +62,7 @@ Replace glob import lines with the respective import tokens. Note that design fo
50
62
  @import './exported/tokens/css/*';
51
63
  ```
52
64
 
53
- *With the new release:*
65
+ _With the new release:_
54
66
 
55
67
  ```scss
56
68
  @import './exported/tokens/types/typography';
@@ -71,14 +83,14 @@ Replace glob import lines with the respective import tokens. Note that design fo
71
83
 
72
84
  Add the `//<#HANDOFF.MAPS#>` replace token below the `@import 'variables'` statement. This will ensure that all variables related to the exported (built-in) components are correctly loaded.
73
85
 
74
- *Before the new release:*
86
+ _Before the new release:_
75
87
 
76
88
  ```scss
77
89
  $prefix: '';
78
90
  @import 'variables';
79
91
  ```
80
92
 
81
- *With the new release:*
93
+ _With the new release:_
82
94
 
83
95
  ```scss
84
96
  $prefix: '';
@@ -90,7 +102,7 @@ $prefix: '';
90
102
 
91
103
  Replace all import statements used to extend the default Bootstrap components with the new `//<#HANDOFF.EXTENSIONS#>` import token to ensure that only those files that are related to the components that are actually being exported get imported.
92
104
 
93
- *Before the new release:*
105
+ _Before the new release:_
94
106
 
95
107
  ```scss
96
108
  @import 'extended/alert';
@@ -99,7 +111,7 @@ Replace all import statements used to extend the default Bootstrap components wi
99
111
  ...
100
112
  ```
101
113
 
102
- *With the new release:*
114
+ _With the new release:_
103
115
 
104
116
  ```scss
105
117
  //<#HANDOFF.EXTENSIONS#>
@@ -111,7 +123,7 @@ Due to changes made to the `variables.scss` file and most of the scss files in t
111
123
 
112
124
  ### Bugfixes
113
125
 
114
- * Updated the preview client build to not include the main SASS integration file as a extra integration in order to prevent redundant loading of the integration which caused the client bundle size to be double the size than it really needed to be while also causing few more issues in the new release where the styles wouldn't get applied correctly.
126
+ - Updated the preview client build to not include the main SASS integration file as a extra integration in order to prevent redundant loading of the integration which caused the client bundle size to be double the size than it really needed to be while also causing few more issues in the new release where the styles wouldn't get applied correctly.
115
127
 
116
128
  ## [0.8.1] - 2023-09-06
117
129
 
@@ -133,12 +145,12 @@ This release allows you to name and configure these properties, and map them to
133
145
 
134
146
  - Exportable (JSON file) now has a updated syntax to share variant over multiple design components based on the variant props.
135
147
  - `supportedVariantProps` now accepts an object rather than an array. This object has two properties `design` and `layout`. Users should declare the props that should be pulled as an array of each of these props. The props should be the name as it is in Figma, not the old key names Handoff used to require.
136
- - The previous templates for css and scss token patterns have been removed in favor of `tokenNameSegments`. This a tokenized array of strings that allow you to generate token names for each component following a pattern.
148
+ - The previous templates for css and scss token patterns have been removed in favor of `tokenNameSegments`. This a tokenized array of strings that allow you to generate token names for each component following a pattern.
137
149
  - In the `demo` section, under the tabs, you can now declare the default value for each property.
138
150
  - In the `demo` section, under `designTokens` you can explicitly declare all the values of a property to show on the demo page.
139
151
  - Previously you could do `State(:disabled)` which would automatically apply the "disabled" state to all design components, distinctive only by the theme (which means light theme would have one shared disabled state while dark theme would have a different one).
140
152
  - The update allows you to do this `State(:disabled/Theme)` which removes the need for us to know what the theme variant property is and to allow users to distinct over any variant property they have and desire.
141
- - This allows handoff to choose NOT to group/distinct by any variant property. Previously this was not possible as if there was a theme variant property present, it would be automatically used to group by it.
153
+ - This allows handoff to choose NOT to group/distinct by any variant property. Previously this was not possible as if there was a theme variant property present, it would be automatically used to group by it.
142
154
  - Paths for preview templates now account for all variant properties, but, if some of them are missing in the integration templates folder for the component, it will be dismissed and we will try starting from the next one (for example, if theme is not there as a folder, we will ignore it and proceed to the next variant prop and so on). This also removes the need for us to know what the theme variant property is as we don't need to filter them out based on if it's a theme variant prop or not.
143
155
  - Component titles in the app now have a smarter way of automatically determining the title of the preview component. This is achieved by looking into the filters used to display the previews of the components and decide which variant property you probably want to use in the name of the component preview.
144
156
 
@@ -16,7 +16,7 @@
16
16
  // 1. Initialize Bootstrap
17
17
  // ------------------------------------------------------------------
18
18
 
19
- @import 'bootstrap/scss/functions';
19
+ @import 'node_modules/bootstrap/scss/functions';
20
20
 
21
21
  // 2. Handoff Tokens
22
22
  // Load empty default variables that prevent the build from
@@ -26,17 +26,17 @@
26
26
 
27
27
  @import 'variables-default';
28
28
 
29
- @import './exported/tokens/types/typography';
30
- @import './exported/tokens/types/effects';
31
- @import './exported/tokens/types/colors';
29
+ @import '../tokens/types/typography';
30
+ @import '../tokens/types/effects';
31
+ @import '../tokens/types/colors';
32
32
  //<#HANDOFF.TOKENS.TYPES#>
33
- @import './exported/tokens/sass/typography';
34
- @import './exported/tokens/sass/effects';
35
- @import './exported/tokens/sass/colors';
33
+ @import '../tokens/sass/typography';
34
+ @import '../tokens/sass/effects';
35
+ @import '../tokens/sass/colors';
36
36
  //<#HANDOFF.TOKENS.SASS#>
37
- @import './exported/tokens/css/typography';
38
- @import './exported/tokens/css/effects';
39
- @import './exported/tokens/css/colors';
37
+ @import '../tokens/css/typography';
38
+ @import '../tokens/css/effects';
39
+ @import '../tokens/css/colors';
40
40
  //<#HANDOFF.TOKENS.CSS#>
41
41
 
42
42
  // 3. Project Variables
@@ -50,49 +50,49 @@ $prefix: '';
50
50
  // Load Bootstrap variables
51
51
  // ------------------------------------------------------------------
52
52
 
53
- @import 'bootstrap/scss/variables';
54
- @import 'bootstrap/scss/maps';
55
- @import 'bootstrap/scss/mixins';
56
- @import 'bootstrap/scss/utilities';
53
+ @import 'node_modules/bootstrap/scss/variables';
54
+ @import 'node_modules/bootstrap/scss/maps';
55
+ @import 'node_modules/bootstrap/scss/mixins';
56
+ @import 'node_modules/bootstrap/scss/utilities';
57
57
 
58
58
 
59
59
  // 5. Bootstrap Base and Components
60
60
  // Load Bootstrap configuration, layout, components, helpers, utilities
61
61
  // ------------------------------------------------------------------
62
62
 
63
- @import 'bootstrap/scss/root';
64
- @import 'bootstrap/scss/reboot';
65
- @import 'bootstrap/scss/type';
66
- @import 'bootstrap/scss/images';
67
- @import 'bootstrap/scss/containers';
68
- @import 'bootstrap/scss/grid';
69
- @import 'bootstrap/scss/tables';
70
- @import 'bootstrap/scss/forms';
71
- @import 'bootstrap/scss/buttons';
72
- @import 'bootstrap/scss/transitions';
73
- @import 'bootstrap/scss/dropdown';
74
- @import 'bootstrap/scss/button-group';
75
- @import 'bootstrap/scss/nav';
76
- @import 'bootstrap/scss/navbar';
77
- @import 'bootstrap/scss/card';
78
- @import 'bootstrap/scss/accordion';
79
- @import 'bootstrap/scss/breadcrumb';
80
- @import 'bootstrap/scss/pagination';
81
- @import 'bootstrap/scss/badge';
82
- @import 'bootstrap/scss/alert';
83
- @import 'bootstrap/scss/progress';
84
- @import 'bootstrap/scss/list-group';
85
- @import 'bootstrap/scss/close';
86
- @import 'bootstrap/scss/toasts';
87
- @import 'bootstrap/scss/modal';
88
- @import 'bootstrap/scss/tooltip';
89
- @import 'bootstrap/scss/popover';
90
- @import 'bootstrap/scss/carousel';
91
- @import 'bootstrap/scss/spinners';
92
- @import 'bootstrap/scss/offcanvas';
93
- @import 'bootstrap/scss/placeholders';
94
- @import 'bootstrap/scss/helpers';
95
- @import 'bootstrap/scss/utilities/api';
63
+ @import 'node_modules/bootstrap/scss/root';
64
+ @import 'node_modules/bootstrap/scss/reboot';
65
+ @import 'node_modules/bootstrap/scss/type';
66
+ @import 'node_modules/bootstrap/scss/images';
67
+ @import 'node_modules/bootstrap/scss/containers';
68
+ @import 'node_modules/bootstrap/scss/grid';
69
+ @import 'node_modules/bootstrap/scss/tables';
70
+ @import 'node_modules/bootstrap/scss/forms';
71
+ @import 'node_modules/bootstrap/scss/buttons';
72
+ @import 'node_modules/bootstrap/scss/transitions';
73
+ @import 'node_modules/bootstrap/scss/dropdown';
74
+ @import 'node_modules/bootstrap/scss/button-group';
75
+ @import 'node_modules/bootstrap/scss/nav';
76
+ @import 'node_modules/bootstrap/scss/navbar';
77
+ @import 'node_modules/bootstrap/scss/card';
78
+ @import 'node_modules/bootstrap/scss/accordion';
79
+ @import 'node_modules/bootstrap/scss/breadcrumb';
80
+ @import 'node_modules/bootstrap/scss/pagination';
81
+ @import 'node_modules/bootstrap/scss/badge';
82
+ @import 'node_modules/bootstrap/scss/alert';
83
+ @import 'node_modules/bootstrap/scss/progress';
84
+ @import 'node_modules/bootstrap/scss/list-group';
85
+ @import 'node_modules/bootstrap/scss/close';
86
+ @import 'node_modules/bootstrap/scss/toasts';
87
+ @import 'node_modules/bootstrap/scss/modal';
88
+ @import 'node_modules/bootstrap/scss/tooltip';
89
+ @import 'node_modules/bootstrap/scss/popover';
90
+ @import 'node_modules/bootstrap/scss/carousel';
91
+ @import 'node_modules/bootstrap/scss/spinners';
92
+ @import 'node_modules/bootstrap/scss/offcanvas';
93
+ @import 'node_modules/bootstrap/scss/placeholders';
94
+ @import 'node_modules/bootstrap/scss/helpers';
95
+ @import 'node_modules/bootstrap/scss/utilities/api';
96
96
 
97
97
 
98
98
  // 6. Project Components
@@ -1,6 +1,6 @@
1
1
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500&display=swap');
2
2
 
3
- @import "./exported/bootstrap-tokens/main.scss";
3
+ @import "./exported/integration/main.scss";
4
4
 
5
5
  body {
6
6
  background-color: #f7f7f7;
@@ -16,7 +16,7 @@
16
16
  // 1. Initialize Bootstrap
17
17
  // ------------------------------------------------------------------
18
18
 
19
- @import 'bootstrap/scss/functions';
19
+ @import 'node_modules/bootstrap/scss/functions';
20
20
 
21
21
  // 2. Handoff Tokens
22
22
  // Load empty default variables that prevent the build from
@@ -26,17 +26,17 @@
26
26
 
27
27
  @import 'variables-default';
28
28
 
29
- @import './exported/tokens/types/typography';
30
- @import './exported/tokens/types/effects';
31
- @import './exported/tokens/types/colors';
29
+ @import '../tokens/types/typography';
30
+ @import '../tokens/types/effects';
31
+ @import '../tokens/types/colors';
32
32
  //<#HANDOFF.TOKENS.TYPES#>
33
- @import './exported/tokens/sass/typography';
34
- @import './exported/tokens/sass/effects';
35
- @import './exported/tokens/sass/colors';
33
+ @import '../tokens/sass/typography';
34
+ @import '../tokens/sass/effects';
35
+ @import '../tokens/sass/colors';
36
36
  //<#HANDOFF.TOKENS.SASS#>
37
- @import './exported/tokens/css/typography';
38
- @import './exported/tokens/css/effects';
39
- @import './exported/tokens/css/colors';
37
+ @import '../tokens/css/typography';
38
+ @import '../tokens/css/effects';
39
+ @import '../tokens/css/colors';
40
40
  //<#HANDOFF.TOKENS.CSS#>
41
41
 
42
42
 
@@ -51,49 +51,49 @@ $prefix: '';
51
51
  // Load Bootstrap variables
52
52
  // ------------------------------------------------------------------
53
53
 
54
- @import 'bootstrap/scss/variables';
55
- @import 'bootstrap/scss/maps';
56
- @import 'bootstrap/scss/mixins';
57
- @import 'bootstrap/scss/utilities';
54
+ @import 'node_modules/bootstrap/scss/variables';
55
+ @import 'node_modules/bootstrap/scss/maps';
56
+ @import 'node_modules/bootstrap/scss/mixins';
57
+ @import 'node_modules/bootstrap/scss/utilities';
58
58
 
59
59
 
60
60
  // 5. Bootstrap Base and Components
61
61
  // Load Bootstrap configuration, layout, components, helpers, utilities
62
62
  // ------------------------------------------------------------------
63
63
 
64
- @import 'bootstrap/scss/root';
65
- @import 'bootstrap/scss/reboot';
66
- @import 'bootstrap/scss/type';
67
- @import 'bootstrap/scss/images';
68
- @import 'bootstrap/scss/containers';
69
- @import 'bootstrap/scss/grid';
70
- @import 'bootstrap/scss/tables';
71
- @import 'bootstrap/scss/forms';
72
- @import 'bootstrap/scss/buttons';
73
- @import 'bootstrap/scss/transitions';
74
- @import 'bootstrap/scss/dropdown';
75
- @import 'bootstrap/scss/button-group';
76
- @import 'bootstrap/scss/nav';
77
- @import 'bootstrap/scss/navbar';
78
- @import 'bootstrap/scss/card';
79
- @import 'bootstrap/scss/accordion';
80
- @import 'bootstrap/scss/breadcrumb';
81
- @import 'bootstrap/scss/pagination';
82
- @import 'bootstrap/scss/badge';
83
- @import 'bootstrap/scss/alert';
84
- @import 'bootstrap/scss/progress';
85
- @import 'bootstrap/scss/list-group';
86
- @import 'bootstrap/scss/close';
87
- @import 'bootstrap/scss/toasts';
88
- @import 'bootstrap/scss/modal';
89
- @import 'bootstrap/scss/tooltip';
90
- @import 'bootstrap/scss/popover';
91
- @import 'bootstrap/scss/carousel';
92
- @import 'bootstrap/scss/spinners';
93
- @import 'bootstrap/scss/offcanvas';
94
- @import 'bootstrap/scss/placeholders';
95
- @import 'bootstrap/scss/helpers';
96
- @import 'bootstrap/scss/utilities/api';
64
+ @import 'node_modules/bootstrap/scss/root';
65
+ @import 'node_modules/bootstrap/scss/reboot';
66
+ @import 'node_modules/bootstrap/scss/type';
67
+ @import 'node_modules/bootstrap/scss/images';
68
+ @import 'node_modules/bootstrap/scss/containers';
69
+ @import 'node_modules/bootstrap/scss/grid';
70
+ @import 'node_modules/bootstrap/scss/tables';
71
+ @import 'node_modules/bootstrap/scss/forms';
72
+ @import 'node_modules/bootstrap/scss/buttons';
73
+ @import 'node_modules/bootstrap/scss/transitions';
74
+ @import 'node_modules/bootstrap/scss/dropdown';
75
+ @import 'node_modules/bootstrap/scss/button-group';
76
+ @import 'node_modules/bootstrap/scss/nav';
77
+ @import 'node_modules/bootstrap/scss/navbar';
78
+ @import 'node_modules/bootstrap/scss/card';
79
+ @import 'node_modules/bootstrap/scss/accordion';
80
+ @import 'node_modules/bootstrap/scss/breadcrumb';
81
+ @import 'node_modules/bootstrap/scss/pagination';
82
+ @import 'node_modules/bootstrap/scss/badge';
83
+ @import 'node_modules/bootstrap/scss/alert';
84
+ @import 'node_modules/bootstrap/scss/progress';
85
+ @import 'node_modules/bootstrap/scss/list-group';
86
+ @import 'node_modules/bootstrap/scss/close';
87
+ @import 'node_modules/bootstrap/scss/toasts';
88
+ @import 'node_modules/bootstrap/scss/modal';
89
+ @import 'node_modules/bootstrap/scss/tooltip';
90
+ @import 'node_modules/bootstrap/scss/popover';
91
+ @import 'node_modules/bootstrap/scss/carousel';
92
+ @import 'node_modules/bootstrap/scss/spinners';
93
+ @import 'node_modules/bootstrap/scss/offcanvas';
94
+ @import 'node_modules/bootstrap/scss/placeholders';
95
+ @import 'node_modules/bootstrap/scss/helpers';
96
+ @import 'node_modules/bootstrap/scss/utilities/api';
97
97
 
98
98
 
99
99
  // 6. Project Components
@@ -1,6 +1,6 @@
1
1
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500&display=swap');
2
2
 
3
- @import "./exported/bootstrap-tokens/main.scss";
3
+ @import "./exported/integration/main.scss";
4
4
 
5
5
  body {
6
6
  background-color: #f7f7f7;
@@ -13,16 +13,7 @@
13
13
  $prefix: '';
14
14
  $enable-shadows: true;
15
15
 
16
- @import 'maps/buttons';
17
- @import 'maps/checkbox';
18
- @import 'maps/radio';
19
- @import 'maps/switch';
20
- @import 'maps/input';
21
- @import 'maps/select';
22
- @import 'maps/alerts';
23
- @import 'maps/modal';
24
- @import 'maps/pagination';
25
- @import 'maps/tooltips';
16
+ //<#HANDOFF.MAPS#>
26
17
 
27
18
  /** Include any other css and styles you need**/
28
19
 
@@ -30,13 +21,4 @@ $enable-shadows: true;
30
21
  // Project Components
31
22
  // ------------------------------------------------------------------
32
23
 
33
- @import 'extended/buttons';
34
- @import 'extended/checkbox';
35
- @import 'extended/radio';
36
- @import 'extended/switch';
37
- @import 'extended/input';
38
- @import 'extended/select';
39
- @import 'extended/alerts';
40
- @import 'extended/modal';
41
- @import 'extended/pagination';
42
- @import 'extended/tooltips';
24
+ //<#HANDOFF.EXTENSIONS#>
@@ -1,3 +1,3 @@
1
1
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500&display=swap');
2
2
 
3
- @import "../exported/custom-tokens/main.scss";
3
+ @import "../exported/integration/main.scss";
package/dist/cli/eject.js CHANGED
@@ -73,24 +73,40 @@ exports.ejectConfig = ejectConfig;
73
73
  * @param handoff
74
74
  */
75
75
  var ejectIntegration = function (handoff) { return __awaiter(void 0, void 0, void 0, function () {
76
- var config, workingPath, integrationPath;
77
- var _a, _b;
78
- return __generator(this, function (_c) {
79
- switch (_c.label) {
76
+ var config, integration, workingPath, integrationPath, localConfigPath, _a;
77
+ var _b, _c;
78
+ return __generator(this, function (_d) {
79
+ switch (_d.label) {
80
80
  case 0: return [4 /*yield*/, handoff.config];
81
81
  case 1:
82
- config = _c.sent();
82
+ config = _d.sent();
83
+ integration = config.integration.name;
84
+ // is the custom integration already being used?
85
+ if (integration === 'custom') {
86
+ console.log(chalk_1.default.red("Custom integration cannot be ejected as it's destination matches the source."));
87
+ return [2 /*return*/];
88
+ }
83
89
  workingPath = path_1.default.resolve(path_1.default.join(handoff.workingPath, 'integration'));
84
- console.log(workingPath);
85
90
  if (fs_extra_1.default.existsSync(workingPath)) {
86
91
  if (!handoff.force) {
87
- console.log(chalk_1.default.red("An integration already exists in the working directory. Use the --force flag to overwrite."));
92
+ console.log(chalk_1.default.red("An integration already exists in the working directory. Use the --force flag to overwrite."));
88
93
  return [2 /*return*/];
89
94
  }
90
95
  }
91
96
  integrationPath = (0, integration_1.getPathToIntegration)();
92
97
  fs_extra_1.default.copySync(integrationPath, workingPath, { overwrite: false });
93
- console.log(chalk_1.default.green("".concat((_a = config === null || config === void 0 ? void 0 : config.integration) === null || _a === void 0 ? void 0 : _a.name, " ").concat((_b = config === null || config === void 0 ? void 0 : config.integration) === null || _b === void 0 ? void 0 : _b.version, " ejected to ").concat(workingPath)));
98
+ console.log(chalk_1.default.green("".concat((_b = config === null || config === void 0 ? void 0 : config.integration) === null || _b === void 0 ? void 0 : _b.name, " ").concat((_c = config === null || config === void 0 ? void 0 : config.integration) === null || _c === void 0 ? void 0 : _c.version, " ejected to ").concat(workingPath)));
99
+ localConfigPath = path_1.default.join(handoff.workingPath, 'handoff.config.json');
100
+ _a = !fs_extra_1.default.existsSync(localConfigPath);
101
+ if (!_a) return [3 /*break*/, 3];
102
+ return [4 /*yield*/, (0, exports.ejectConfig)(handoff)];
103
+ case 2:
104
+ _a = (_d.sent());
105
+ _d.label = 3;
106
+ case 3:
107
+ _a;
108
+ config.integration = { name: 'custom', version: '' };
109
+ fs_extra_1.default.writeFileSync(localConfigPath, "".concat(JSON.stringify(config, null, 2)));
94
110
  return [2 /*return*/, handoff];
95
111
  }
96
112
  });
package/dist/cli.js CHANGED
@@ -80,7 +80,7 @@ var showHelp = function () {
80
80
  * Show the help message
81
81
  */
82
82
  var showVersion = function () {
83
- cliError('Handoff App - 0.8.3', 2);
83
+ cliError('Handoff App - 0.8.5', 2);
84
84
  };
85
85
  /**
86
86
  * Define a CLI error
@@ -169,7 +169,7 @@ var run = function (argv, stdout, stderr) { return __awaiter(void 0, void 0, voi
169
169
  case 11: return [2 /*return*/, handoff_1.ejectTheme()];
170
170
  case 12: return [2 /*return*/, handoff_1.ejectPages()];
171
171
  case 13:
172
- cliError("Make commands create configuration files in your working root and scaffold up the appropriate folder structure if needed.\n \n Make must have a subcommand. Did you mean:\n - make:template\n - make:exportable\n - make:page", 2);
172
+ cliError("Make commands create configuration files in your working root and scaffold up the appropriate folder structure if needed.\n\n Make must have a subcommand. Did you mean:\n - make:template\n - make:exportable\n - make:page", 2);
173
173
  return [3 /*break*/, 18];
174
174
  case 14:
175
175
  type = args._[1];
@@ -1,3 +1,4 @@
1
+ /// <reference types="plugin-typings" />
1
2
  import * as FigmaTypes from '../figma/types';
2
3
  import { Exportable, VariantPropertyWithParams } from '../types';
3
4
  export declare function filterByNodeType<Type extends FigmaTypes.Node['type']>(type: Type): (obj?: FigmaTypes.Node | null) => obj is Extract<FigmaTypes.Document, {
package/dist/index.d.ts CHANGED
@@ -51,7 +51,6 @@ declare class Handoff {
51
51
  postScssTransformer(callback: (documentationObject: DocumentationObject, types: TransformerOutput) => TransformerOutput): void;
52
52
  postPreview(callback: (documentationObject: DocumentationObject, previews: TransformedPreviewComponents) => TransformedPreviewComponents): void;
53
53
  postBuild(callback: (documentationObject: DocumentationObject) => void): void;
54
- preIntegration(callback: (documentationObject: DocumentationObject, data: HookReturn[]) => HookReturn[]): void;
55
54
  postIntegration(callback: (documentationObject: DocumentationObject, data: HookReturn[]) => HookReturn[]): void;
56
55
  modifyWebpackConfig(callback: (webpackConfig: webpack.Configuration) => webpack.Configuration): void;
57
56
  configureExportables(callback: (exportables: string[]) => string[]): void;
@@ -1,6 +1,6 @@
1
1
  @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500&display=swap');
2
2
 
3
- @import "./exported/bootstrap-tokens/main.scss";
3
+ @import "./exported/integration/main.scss";
4
4
 
5
5
  body {
6
6
  background-color: #f7f7f7;
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { DocumentationObject } from '../../types';
3
2
  import * as stream from 'node:stream';
4
3
  /**
@@ -65,8 +65,6 @@ var archiver_1 = __importDefault(require("archiver"));
65
65
  var fs_extra_1 = __importDefault(require("fs-extra"));
66
66
  var path_1 = __importDefault(require("path"));
67
67
  var sortedUniq_1 = __importDefault(require("lodash/sortedUniq"));
68
- //import { pluginTransformer } from '../plugin';
69
- var index_1 = require("../integration/index");
70
68
  var config_1 = require("../../config");
71
69
  /**
72
70
  * Detect a font present in the public dir. If it matches a font family from
@@ -90,7 +88,7 @@ function fontTransformer(documentationObject) {
90
88
  }, {});
91
89
  customFonts = [];
92
90
  Object.keys(families).map(function (key) { return __awaiter(_this, void 0, void 0, function () {
93
- var name, fontDirName, stream_1, integrationName, fontsFolder;
91
+ var name, fontDirName, stream_1, fontsFolder;
94
92
  return __generator(this, function (_a) {
95
93
  switch (_a.label) {
96
94
  case 0:
@@ -102,8 +100,7 @@ function fontTransformer(documentationObject) {
102
100
  return [4 /*yield*/, (0, exports.zipFonts)(fontDirName, stream_1)];
103
101
  case 1:
104
102
  _a.sent();
105
- integrationName = (0, index_1.getIntegrationName)();
106
- fontsFolder = path_1.default.resolve(handoff.workingPath, "exported/".concat(integrationName, "-tokens/fonts"));
103
+ fontsFolder = path_1.default.resolve(handoff.workingPath, "exported/integration/fonts");
107
104
  if (!fs_extra_1.default.existsSync(fontsFolder)) {
108
105
  fs_extra_1.default.mkdirSync(fontsFolder);
109
106
  }
@@ -220,15 +220,14 @@ exports.zipTokens = zipTokens;
220
220
  */
221
221
  function integrationTransformer(documentationObject) {
222
222
  return __awaiter(this, void 0, void 0, function () {
223
- var handoff, outputFolder, integrationPath, integrationName, sassFolder, templatesFolder, integrationsSass, integrationTemplates, mainScssFilePath, stream, data;
223
+ var handoff, outputFolder, integrationPath, sassFolder, templatesFolder, integrationsSass, integrationTemplates, mainScssFilePath, stream, data;
224
224
  return __generator(this, function (_a) {
225
225
  switch (_a.label) {
226
226
  case 0:
227
227
  handoff = (0, config_1.getHandoff)();
228
228
  outputFolder = path_1.default.resolve(handoff.modulePath, 'src/app/public');
229
229
  integrationPath = (0, exports.getPathToIntegration)();
230
- integrationName = (0, exports.getIntegrationName)();
231
- sassFolder = path_1.default.resolve(handoff.workingPath, "exported/".concat(integrationName, "-tokens"));
230
+ sassFolder = path_1.default.resolve(handoff.workingPath, "exported/integration");
232
231
  templatesFolder = path_1.default.resolve(__dirname, '../../templates');
233
232
  integrationsSass = path_1.default.resolve(integrationPath, 'sass');
234
233
  integrationTemplates = path_1.default.resolve(integrationPath, 'templates');
@@ -236,7 +235,7 @@ function integrationTransformer(documentationObject) {
236
235
  fs_extra_1.default.copySync(integrationTemplates, templatesFolder);
237
236
  mainScssFilePath = path_1.default.resolve(sassFolder, 'main.scss');
238
237
  if (fs_extra_1.default.existsSync(mainScssFilePath)) {
239
- fs_extra_1.default.writeFileSync(mainScssFilePath, replaceHandoffImportTokens(fs_extra_1.default.readFileSync(mainScssFilePath, 'utf8'), Object.keys(documentationObject.components), integrationName));
238
+ fs_extra_1.default.writeFileSync(mainScssFilePath, replaceHandoffImportTokens(fs_extra_1.default.readFileSync(mainScssFilePath, 'utf8'), Object.keys(documentationObject.components)));
240
239
  }
241
240
  // copy the exported integration into the user defined dir (if the EXPORT_PATH environment variable is defined)
242
241
  if (process.env.EXPORT_PATH) {
@@ -259,18 +258,18 @@ function integrationTransformer(documentationObject) {
259
258
  });
260
259
  }
261
260
  exports.default = integrationTransformer;
262
- var replaceHandoffImportTokens = function (content, components, integrationName) {
263
- getHandoffImportTokens(components, integrationName)
261
+ var replaceHandoffImportTokens = function (content, components) {
262
+ getHandoffImportTokens(components)
264
263
  .forEach(function (_a) {
265
264
  var token = _a[0], imports = _a[1];
266
265
  content = content.replaceAll("//<#".concat(token, "#>"), imports.map(function (path) { return "@import '".concat(path, "';"); }).join("\r\n"));
267
266
  });
268
267
  return content;
269
268
  };
270
- var getHandoffImportTokens = function (components, integrationName) {
269
+ var getHandoffImportTokens = function (components) {
271
270
  var result = [];
272
271
  components.forEach(function (component) {
273
- getHandoffImportTokensForComponent(component, integrationName)
272
+ getHandoffImportTokensForComponent(component)
274
273
  .forEach(function (_a, idx) {
275
274
  var _b;
276
275
  var importToken = _a[0], searchPath = _a.slice(1);
@@ -282,14 +281,13 @@ var getHandoffImportTokens = function (components, integrationName) {
282
281
  });
283
282
  return result;
284
283
  };
285
- var getHandoffImportTokensForComponent = function (component, integrationName) {
286
- var handoffWorkingPath = (0, config_1.getHandoff)().workingPath;
287
- var exportedIntegrationTokensPath = path_1.default.resolve(handoffWorkingPath, "exported/".concat(integrationName, "-tokens"));
284
+ var getHandoffImportTokensForComponent = function (component) {
285
+ var integrationPath = path_1.default.resolve((0, config_1.getHandoff)().workingPath, "exported/integration");
288
286
  return [
289
- ['HANDOFF.TOKENS.TYPES', handoffWorkingPath, './exported/tokens/types', "".concat(component, ".scss")],
290
- ['HANDOFF.TOKENS.SASS', handoffWorkingPath, './exported/tokens/sass', "".concat(component, ".scss")],
291
- ['HANDOFF.TOKENS.CSS', handoffWorkingPath, './exported/tokens/css', "".concat(component, ".css")],
292
- ['HANDOFF.MAPS', exportedIntegrationTokensPath, 'maps', "_".concat(component, ".scss")],
293
- ['HANDOFF.EXTENSIONS', exportedIntegrationTokensPath, 'extended', "_".concat(component, ".scss")]
287
+ ['HANDOFF.TOKENS.TYPES', integrationPath, '../tokens/types', "".concat(component, ".scss")],
288
+ ['HANDOFF.TOKENS.SASS', integrationPath, '../tokens/sass', "".concat(component, ".scss")],
289
+ ['HANDOFF.TOKENS.CSS', integrationPath, '../tokens/css', "".concat(component, ".css")],
290
+ ['HANDOFF.MAPS', integrationPath, 'maps', "_".concat(component, ".scss")],
291
+ ['HANDOFF.EXTENSIONS', integrationPath, 'extended', "_".concat(component, ".scss")]
294
292
  ];
295
293
  };
@@ -73,7 +73,7 @@ var buildClientFiles = function () { return __awaiter(void 0, void 0, void 0, fu
73
73
  filename: 'bundle.js',
74
74
  },
75
75
  resolveLoader: {
76
- modules: [path_1.default.resolve(handoff === null || handoff === void 0 ? void 0 : handoff.modulePath, 'node_modules'), path_1.default.resolve(handoff === null || handoff === void 0 ? void 0 : handoff.workingPath, 'node_modules')],
76
+ modules: [path_1.default.resolve(handoff === null || handoff === void 0 ? void 0 : handoff.modulePath), path_1.default.resolve(handoff === null || handoff === void 0 ? void 0 : handoff.modulePath, 'node_modules'), path_1.default.resolve(handoff === null || handoff === void 0 ? void 0 : handoff.workingPath, 'node_modules')],
77
77
  },
78
78
  module: {
79
79
  rules: [
@@ -90,7 +90,7 @@ var buildClientFiles = function () { return __awaiter(void 0, void 0, void 0, fu
90
90
  options: {
91
91
  sassOptions: {
92
92
  indentWidth: 4,
93
- includePaths: [path_1.default.resolve(handoff === null || handoff === void 0 ? void 0 : handoff.workingPath, 'node_modules'), path_1.default.resolve(handoff === null || handoff === void 0 ? void 0 : handoff.modulePath, 'node_modules')],
93
+ includePaths: [path_1.default.resolve(handoff === null || handoff === void 0 ? void 0 : handoff.workingPath, 'node_modules'), path_1.default.resolve(handoff === null || handoff === void 0 ? void 0 : handoff.modulePath, 'node_modules'), path_1.default.resolve(handoff === null || handoff === void 0 ? void 0 : handoff.modulePath)],
94
94
  },
95
95
  additionalData: function (content, loaderContext) { return __awaiter(void 0, void 0, void 0, function () {
96
96
  var integrationPath;