@designcrowd/fe-shared-lib 1.5.0-jj-4 → 1.5.1-icontranslation

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 (180) hide show
  1. package/.claude/settings.local.json +17 -0
  2. package/.claude/skills/publishing-test-versions.md +285 -0
  3. package/.eslintrc.js +1 -0
  4. package/.storybook/image-1.png +0 -0
  5. package/.storybook/image-2.png +0 -0
  6. package/.storybook/image.png +0 -0
  7. package/.storybook/test.md +3 -0
  8. package/APasking.md +9 -0
  9. package/CLAUDE.md +227 -65
  10. package/GT-8753.md +127 -0
  11. package/docs/plans/2025-11-03-typescript-declarations-design.md +222 -0
  12. package/package.json +1 -1
  13. package/public/css/tailwind-brandCrowd.css +3 -6
  14. package/public/css/tailwind-brandPage.css +3 -6
  15. package/public/css/tailwind-crazyDomains.css +3 -6
  16. package/public/css/tailwind-designCom.css +3 -6
  17. package/public/css/tailwind-designCrowd.css +3 -6
  18. package/src/atoms/components/SparkleIcon/SparkleIcon.stories.js +207 -3
  19. package/src/atoms/components/SparkleIcon/SparkleIcon.vue +46 -7
  20. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-01.svg +5 -0
  21. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-02.svg +14 -0
  22. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-03.svg +14 -0
  23. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-04.svg +14 -0
  24. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-05.svg +14 -0
  25. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-06.svg +14 -0
  26. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-07.svg +14 -0
  27. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-08.svg +14 -0
  28. package/src/atoms/components/SparkleIcon/sparkle-paths.ts +1 -0
  29. package/src/atoms/components/SparkleIcon/sparkle-with-spinner-paths.ts +61 -0
  30. package/src/atoms/components/design-com/Icon/Icon.stories.js +62 -0
  31. package/src/atoms/components/design-com/Icon/Icon.vue +7 -2
  32. package/src/experiences/components/PublishBrandPageModal/PublishBrandPageModal.stories.js +0 -36
  33. package/src/experiences/components/PublishBrandPageModal/PublishBrandPageModal.vue +297 -100
  34. package/.storybook-static/assets/Auth-CV5AmoX8.css +0 -1
  35. package/.storybook-static/assets/Auth.stories-CX3sjxh5.js +0 -490
  36. package/.storybook-static/assets/AuthCrazyDomains.stories-Didj_VFa.js +0 -73
  37. package/.storybook-static/assets/Button-5UzSGUF6.css +0 -1
  38. package/.storybook-static/assets/Button-DtVlr_q3.js +0 -1
  39. package/.storybook-static/assets/ButtonGroup-Dfr7bNL2.css +0 -1
  40. package/.storybook-static/assets/ButtonGroup.stories-4EQk-ktb.js +0 -503
  41. package/.storybook-static/assets/ButtonPrimary-Bu6bXb_c.css +0 -1
  42. package/.storybook-static/assets/ButtonPrimary-DG9wNod9.js +0 -1
  43. package/.storybook-static/assets/Buttons.stories-B_KpeCzt.js +0 -761
  44. package/.storybook-static/assets/ButtonsCrazyDomains.stories-oZtahAmR.js +0 -199
  45. package/.storybook-static/assets/Checkbox.mixin-DkHpdvGa.js +0 -1
  46. package/.storybook-static/assets/Checkbox.stories-C67RL0ut.js +0 -203
  47. package/.storybook-static/assets/Checktile.stories-DN2wfzd6.js +0 -88
  48. package/.storybook-static/assets/CollapsiblePanel.stories-BkzrqfVG.js +0 -39
  49. package/.storybook-static/assets/ColorPicker.stories-85BQwpyF.js +0 -73
  50. package/.storybook-static/assets/CopyToClipboardText.stories-Csh5nVRs.js +0 -32
  51. package/.storybook-static/assets/Dropdown.stories-NNlxNopk.js +0 -159
  52. package/.storybook-static/assets/DropdownItem-CDX_V6Mi.js +0 -1
  53. package/.storybook-static/assets/DropdownItem-CLNmWtKh.css +0 -1
  54. package/.storybook-static/assets/FormControl.mixin-_gXRExB7.js +0 -1
  55. package/.storybook-static/assets/HashRouteModal.stories-Dy1_nLTJ.js +0 -64
  56. package/.storybook-static/assets/HelloBar-z54fob0q.js +0 -1
  57. package/.storybook-static/assets/HelloBar.stories-ClJ9_KRK.js +0 -342
  58. package/.storybook-static/assets/Icon-8mZGP41G.js +0 -144
  59. package/.storybook-static/assets/Icon.stories-BcXMvpuh.js +0 -126
  60. package/.storybook-static/assets/Icon.stories-D6ECVMta.js +0 -751
  61. package/.storybook-static/assets/Loader-D61Ki9P1.js +0 -1
  62. package/.storybook-static/assets/LogoBusinessBrandColours-B1_8hw0H.js +0 -1
  63. package/.storybook-static/assets/LogoBusinessBrandColours-DEFhAyxR.css +0 -1
  64. package/.storybook-static/assets/LogoBusinessBrandColours.stories-CIWe9ndn.js +0 -36
  65. package/.storybook-static/assets/Masonry-C2MNiGg0.css +0 -1
  66. package/.storybook-static/assets/Masonry.stories-CDT8kZCv.js +0 -71
  67. package/.storybook-static/assets/Modal-BQrpXSGA.js +0 -1
  68. package/.storybook-static/assets/Modal-BvVMN71n.css +0 -1
  69. package/.storybook-static/assets/Modal.stories-BycF7YL6.js +0 -345
  70. package/.storybook-static/assets/Notice.stories-BufkrC1b.js +0 -222
  71. package/.storybook-static/assets/NumberStepper-Blffv09R.css +0 -1
  72. package/.storybook-static/assets/NumberStepper.stories-6_y_lEgC.js +0 -64
  73. package/.storybook-static/assets/PaymentConfigList-wI1eTv5x.css +0 -1
  74. package/.storybook-static/assets/PaymentConfigList.stories-BlzzKrzz.js +0 -126
  75. package/.storybook-static/assets/Picture-Cq76CaoK.js +0 -1
  76. package/.storybook-static/assets/Picture.stories-BDqRm9_g.js +0 -119
  77. package/.storybook-static/assets/Pill-BsMeJhV9.js +0 -1
  78. package/.storybook-static/assets/Pill.stories-DUvzbtnS.js +0 -18
  79. package/.storybook-static/assets/PillBar-os4mJV3M.css +0 -1
  80. package/.storybook-static/assets/PillBar.stories-BUMLXBij.js +0 -41
  81. package/.storybook-static/assets/Price-DKOwLeD0.js +0 -1
  82. package/.storybook-static/assets/Price.stories-DlqrNUWI.js +0 -221
  83. package/.storybook-static/assets/PublishBrandPageModal-CLU8-If3.css +0 -1
  84. package/.storybook-static/assets/PublishBrandPageModal.stories-Dqobvq-n.js +0 -273
  85. package/.storybook-static/assets/SearchBar.stories-_wPX3-Rl.js +0 -12
  86. package/.storybook-static/assets/Select-Dw-zvSUg.css +0 -1
  87. package/.storybook-static/assets/Select.stories-BWINGxdY.js +0 -108
  88. package/.storybook-static/assets/SellDomainNameList.fixtures-LC6fjr_b.js +0 -1
  89. package/.storybook-static/assets/SellDomainNameListModal-ByK_ak0A.js +0 -1
  90. package/.storybook-static/assets/SellDomainNameListModal-CdfyEX1a.css +0 -1
  91. package/.storybook-static/assets/SellDomainNameListModal.stories-DrL8w2AY.js +0 -71
  92. package/.storybook-static/assets/SellDomainNameListSearchResult-1WuAKfzI.css +0 -1
  93. package/.storybook-static/assets/SellDomainNameListSearchResult-By0IpIM_.js +0 -1
  94. package/.storybook-static/assets/SellDomainNameSearchWithResults-BttjI4PH.js +0 -1
  95. package/.storybook-static/assets/SellDomainNameSearchWithResults.stories-Dm1Q8Cza.js +0 -37
  96. package/.storybook-static/assets/SellDomainNameWidget.stories-CKoz3WnZ.js +0 -36
  97. package/.storybook-static/assets/SignIn-DNYeJu86.css +0 -1
  98. package/.storybook-static/assets/SignIn-Dt8OJr0J.js +0 -1
  99. package/.storybook-static/assets/Slider-Cog2FFdj.css +0 -1
  100. package/.storybook-static/assets/Slider.stories-08DN2SFB.js +0 -141
  101. package/.storybook-static/assets/StarRating-BtKh7pzm.css +0 -1
  102. package/.storybook-static/assets/StarRating.stories-BEIj9ufA.js +0 -45
  103. package/.storybook-static/assets/TabMenu.stories-D9f0pyZI.js +0 -47
  104. package/.storybook-static/assets/TextCopyField-B04vTGbG.js +0 -1
  105. package/.storybook-static/assets/TextCopyField.stories-KD0WUWzA.js +0 -47
  106. package/.storybook-static/assets/TextInput-JK1M0hv6.js +0 -1
  107. package/.storybook-static/assets/TextInput.stories-BO0eQqBY.js +0 -233
  108. package/.storybook-static/assets/Textarea.stories-Bcn4sCkV.js +0 -207
  109. package/.storybook-static/assets/Toggle.stories-CuTFLoNh.js +0 -161
  110. package/.storybook-static/assets/Tooltip-DcSbUh5f.js +0 -1
  111. package/.storybook-static/assets/Tooltip-DyXIgFQH.css +0 -1
  112. package/.storybook-static/assets/Tooltip.stories-B0I_PBGG.js +0 -953
  113. package/.storybook-static/assets/UploadYourLogoApplication-EyTEQx-x.css +0 -9
  114. package/.storybook-static/assets/UploadYourLogoApplication.stories-Dixp1ynI.js +0 -194
  115. package/.storybook-static/assets/UploadYourLogoDropzone-DQqACf-e.css +0 -1
  116. package/.storybook-static/assets/UploadYourLogoDropzone-DouZtNvi.js +0 -24
  117. package/.storybook-static/assets/UploadYourLogoDropzone.stories-BHYeu4gz.js +0 -55
  118. package/.storybook-static/assets/UploadedLogoSearchResultCard.stories-D1KR63O4.js +0 -79
  119. package/.storybook-static/assets/_commonjsHelpers-D6-XlEtG.js +0 -1
  120. package/.storybook-static/assets/_plugin-vue_export-helper-DlAUqK2U.js +0 -1
  121. package/.storybook-static/assets/api-lSJGRrF2.js +0 -1
  122. package/.storybook-static/assets/axe-nGVJxRof.js +0 -30
  123. package/.storybook-static/assets/brand-crowd-api.client-DiPM1Wo-.js +0 -1
  124. package/.storybook-static/assets/bundled-translations-BZ57czTo.js +0 -1
  125. package/.storybook-static/assets/bundled-translations.de-DE-DXggTXB2.js +0 -1
  126. package/.storybook-static/assets/bundled-translations.es-ES-DtMmvicd.js +0 -1
  127. package/.storybook-static/assets/bundled-translations.fr-FR-BrQqbieG.js +0 -1
  128. package/.storybook-static/assets/bundled-translations.pt-PT-CpiWEAtr.js +0 -1
  129. package/.storybook-static/assets/carousel-CMMZ5MZ-.css +0 -1
  130. package/.storybook-static/assets/carousel.stories-o3eu2Qyc.js +0 -374
  131. package/.storybook-static/assets/event-constants-CMO9VQVu.js +0 -1
  132. package/.storybook-static/assets/iframe-C86bI_2U.js +0 -1126
  133. package/.storybook-static/assets/index-Bw-gCGc_.js +0 -6
  134. package/.storybook-static/assets/index-DhkYCT1V.js +0 -29
  135. package/.storybook-static/assets/matchers-7Z3WT2CE-T3xScrR7.js +0 -14
  136. package/.storybook-static/assets/tracking-ATsLLehC.js +0 -1
  137. package/.storybook-static/css/tailwind-brandCrowd.css +0 -2404
  138. package/.storybook-static/css/tailwind-brandPage.css +0 -2088
  139. package/.storybook-static/css/tailwind-crazyDomains.css +0 -2404
  140. package/.storybook-static/css/tailwind-designCom.css +0 -2404
  141. package/.storybook-static/css/tailwind-designCrowd.css +0 -2404
  142. package/.storybook-static/favicon.svg +0 -1
  143. package/.storybook-static/iframe.html +0 -694
  144. package/.storybook-static/index.html +0 -156
  145. package/.storybook-static/index.json +0 -1
  146. package/.storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  147. package/.storybook-static/nunito-sans-bold.woff2 +0 -0
  148. package/.storybook-static/nunito-sans-italic.woff2 +0 -0
  149. package/.storybook-static/nunito-sans-regular.woff2 +0 -0
  150. package/.storybook-static/project.json +0 -1
  151. package/.storybook-static/sb-addons/a11y-1/manager-bundle.js +0 -5
  152. package/.storybook-static/sb-addons/links-2/manager-bundle.js +0 -3
  153. package/.storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +0 -188
  154. package/.storybook-static/sb-addons/themes-3/manager-bundle.js +0 -3
  155. package/.storybook-static/sb-common-assets/favicon.svg +0 -1
  156. package/.storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  157. package/.storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  158. package/.storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  159. package/.storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  160. package/.storybook-static/sb-manager/globals-module-info.js +0 -797
  161. package/.storybook-static/sb-manager/globals-runtime.js +0 -72062
  162. package/.storybook-static/sb-manager/globals.js +0 -34
  163. package/.storybook-static/sb-manager/runtime.js +0 -13002
  164. package/dist/css/tailwind-brandCrowd.css +0 -2419
  165. package/dist/css/tailwind-brandPage.css +0 -2107
  166. package/dist/css/tailwind-crazyDomains.css +0 -2419
  167. package/dist/css/tailwind-designCom.css +0 -2419
  168. package/dist/css/tailwind-designCrowd.css +0 -2419
  169. package/src/experiences/components/PublishBrandPageModal/views/PublishWhenHasDomainsView.vue +0 -271
  170. package/src/experiences/components/PublishBrandPageModal/views/PublishWhenNoDomainsView.vue +0 -168
  171. package/src/experiences/components/PublishBrandPageModal/views/PublishedView.vue +0 -149
  172. package/src/experiences/components/PublishBrandPageModal/views/SetUrlView.vue +0 -155
  173. /package/src/atoms/components/SparkleIcon/assets/animations/{state-01.svg → sparkle/state-01.svg} +0 -0
  174. /package/src/atoms/components/SparkleIcon/assets/animations/{state-02.svg → sparkle/state-02.svg} +0 -0
  175. /package/src/atoms/components/SparkleIcon/assets/animations/{state-03.svg → sparkle/state-03.svg} +0 -0
  176. /package/src/atoms/components/SparkleIcon/assets/animations/{state-04.svg → sparkle/state-04.svg} +0 -0
  177. /package/src/atoms/components/SparkleIcon/assets/animations/{state-05.svg → sparkle/state-05.svg} +0 -0
  178. /package/src/atoms/components/SparkleIcon/assets/animations/{state-06.svg → sparkle/state-06.svg} +0 -0
  179. /package/src/atoms/components/SparkleIcon/assets/animations/{state-07.svg → sparkle/state-07.svg} +0 -0
  180. /package/src/atoms/components/SparkleIcon/assets/animations/{state-08.svg → sparkle/state-08.svg} +0 -0
@@ -0,0 +1,17 @@
1
+ {
2
+ "env": {
3
+ "CLAUDE_CODE_USE_BEDROCK": "1",
4
+ "AWS_PROFILE": "default",
5
+ "AWS_REGION": "us-east-1",
6
+ "ANTHROPIC_MODEL": "global.anthropic.claude-sonnet-4-5-20250929-v1:0",
7
+ "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "10000",
8
+ "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
9
+ },
10
+ "outputStyle": "default",
11
+ "spinnerTipsEnabled": false,
12
+ "permissions": {
13
+ "allow": [
14
+ "Bash(mkdir:*)"
15
+ ]
16
+ }
17
+ }
@@ -0,0 +1,285 @@
1
+ ---
2
+ name: publishing-test-versions
3
+ description: Use when you need to publish an experimental/test version of fe-shared-lib to NPM for testing in consuming applications before releasing a stable version
4
+ ---
5
+
6
+ # Publishing Test Versions of fe-shared-lib
7
+
8
+ This skill guides you through publishing experimental versions of `@designcrowd/fe-shared-lib` to NPM for testing in consuming applications (BrandCrowd.Net, DesignCrowd, Design.com, etc.) before cutting an official release.
9
+
10
+ ## When to Use This Skill
11
+
12
+ Use this skill when:
13
+ - You've implemented changes that need testing in a real consuming application
14
+ - You want to share work-in-progress for integration testing
15
+ - You're verifying a bug fix works in production-like environments
16
+ - You need to test changes across multiple consuming apps before release
17
+
18
+ **Do NOT use for:**
19
+ - Final production releases (use standard release process instead)
20
+ - Changes you haven't tested locally in Storybook
21
+ - Untested or broken code
22
+
23
+ ## Pre-Publishing Checklist
24
+
25
+ Before publishing a test version, create TodoWrite todos for these items:
26
+
27
+ 1. ☐ Verify all changes work correctly in Storybook (`npm start`)
28
+ 2. ☐ Run linting and fix any issues (`npm run lint:fix`)
29
+ 3. ☐ Ensure translations are bundled if you modified i18n files
30
+ 4. ☐ Check git status - know what changes you're publishing
31
+ 5. ☐ Verify NPM_TOKEN environment variable is set
32
+ 6. ☐ Verify you're on the correct git account (use `gh auth status`)
33
+
34
+ **IMPORTANT:** NEVER run `npm run build` - it takes too long and isn't required for publishing.
35
+
36
+ ## Publishing Workflow
37
+
38
+ ### Step 1: Create Descriptive Test Version Number
39
+
40
+ Test versions follow the format: `[current-version]-[description]`
41
+
42
+ **Examples:**
43
+ - `1.5.1-icon-lang-fix` - Testing icon language attribute fix
44
+ - `1.5.1-spinner-variant` - Testing new spinner variant
45
+ - `1.5.1-dcom-checkout` - Testing Design.com checkout changes
46
+ - `1.5.1-test-GT-8753` - Testing specific Jira ticket
47
+
48
+ **Rules:**
49
+ - Use lowercase and hyphens (no spaces, underscores, or special chars)
50
+ - Keep description short but meaningful (2-4 words)
51
+ - Include ticket number if relevant (GT-1234, BP-5678)
52
+
53
+ ### Step 2: Update package.json Version
54
+
55
+ 1. Read the current version from package.json
56
+ 2. Edit package.json to set the test version number
57
+ 3. **Example:**
58
+ ```json
59
+ "version": "1.5.1-icon-lang-fix"
60
+ ```
61
+
62
+ ### Step 3: Update package-lock.json
63
+
64
+ Run npm install to update the lock file with the new version:
65
+
66
+ ```bash
67
+ npm i
68
+ ```
69
+
70
+ **Important:** This MUST be done before building Docker image, or the lock file will be out of sync.
71
+
72
+ ### Step 4: Verify NPM_TOKEN Environment Variable
73
+
74
+ Check that NPM_TOKEN is set:
75
+
76
+ ```bash
77
+ echo $NPM_TOKEN
78
+ ```
79
+
80
+ **If empty or undefined:**
81
+ - STOP and ask the user to set NPM_TOKEN
82
+ - The user will need to add it to their environment
83
+ - Do NOT proceed without a valid token
84
+
85
+ ### Step 5: Build and Publish via Docker
86
+
87
+ Run the Docker build command which will:
88
+ 1. Create a Node 20.11.0 container
89
+ 2. Install all dependencies
90
+ 3. Bundle translations
91
+ 4. Publish to NPM registry
92
+
93
+ ```bash
94
+ npm run docker:publish
95
+ ```
96
+
97
+ Or directly:
98
+ ```bash
99
+ docker build . --build-arg NPM_TOKEN=$NPM_TOKEN
100
+ ```
101
+
102
+ **Expected output:**
103
+ - You should see npm install logs
104
+ - Translation bundling messages
105
+ - NPM publish success message
106
+ - Final output: "Nothing to do."
107
+
108
+ **If publish fails:**
109
+ - Check Docker output for error messages
110
+ - Common issues:
111
+ - NPM_TOKEN not set or invalid
112
+ - Version number already exists on NPM
113
+ - Network connectivity issues
114
+ - Authentication problems
115
+
116
+ ### Step 6: Verify Publication
117
+
118
+ Check that the version was published to NPM:
119
+
120
+ ```bash
121
+ npm view @designcrowd/fe-shared-lib versions --json | grep -i "[version-substring]"
122
+ ```
123
+
124
+ **Example:**
125
+ ```bash
126
+ npm view @designcrowd/fe-shared-lib versions --json | grep -i "icon-lang"
127
+ ```
128
+
129
+ This confirms the test version is available for consumers to install.
130
+
131
+ ### Step 7: Document Test Version for Consumers
132
+
133
+ Create a summary for the user explaining:
134
+ 1. The test version number that was published
135
+ 2. How to install it in consuming applications:
136
+ ```bash
137
+ npm install @designcrowd/fe-shared-lib@1.5.1-icon-lang-fix
138
+ ```
139
+ 3. What changes are included in this test version
140
+ 4. Any testing notes or known limitations
141
+
142
+ **Example message:**
143
+ ```
144
+ Successfully published test version: @designcrowd/fe-shared-lib@1.5.1-icon-lang-fix
145
+
146
+ To test in consuming applications:
147
+ npm install @designcrowd/fe-shared-lib@1.5.1-icon-lang-fix
148
+
149
+ Changes in this version:
150
+ - Added lang prop to DcomIcon component
151
+ - Updated SVG title/desc to use dynamic lang attribute
152
+ - Maintains backward compatibility (defaults to 'en')
153
+
154
+ Testing notes:
155
+ - Test with different locales (fr-FR, es-ES, pt-PT)
156
+ - Verify screen readers announce correct language
157
+ - Check that existing usage without lang prop still works
158
+ ```
159
+
160
+ ## Post-Publishing Workflow
161
+
162
+ After publishing:
163
+
164
+ 1. **Do NOT commit the version change** to git yet - test versions are temporary
165
+ 2. Test in consuming application(s)
166
+ 3. If issues found:
167
+ - Fix the issues
168
+ - Publish a new test version (e.g., `1.5.1-icon-lang-fix-v2`)
169
+ - Repeat testing
170
+ 4. Once testing passes:
171
+ - Revert package.json back to stable version (e.g., `1.5.1`)
172
+ - Make a proper release with version bump (e.g., `1.5.2`)
173
+ - Commit and push the stable release
174
+
175
+ ## Git Account Verification
176
+
177
+ **Before publishing, verify you're using the correct GitHub account:**
178
+
179
+ ```bash
180
+ gh auth status
181
+ ```
182
+
183
+ Expected output for DesignCrowd work:
184
+ ```
185
+ Logged in to github.com as KnowlesZ
186
+ ```
187
+
188
+ If you're on the wrong account:
189
+ - STOP and inform the user
190
+ - Ask them to switch accounts using `gh auth switch`
191
+
192
+ ## Common Pitfalls
193
+
194
+ **Don't:**
195
+ - ❌ Skip updating package-lock.json (causes version mismatch errors)
196
+ - ❌ Commit test versions to git (they're temporary)
197
+ - ❌ Publish with generic names like `1.5.1-test` (not descriptive)
198
+ - ❌ Forget to bundle translations if you modified i18n files
199
+ - ❌ Run `npm run build` (takes forever, not needed)
200
+ - ❌ Publish without linting first
201
+ - ❌ Use the same test version name twice (causes NPM conflicts)
202
+
203
+ **Do:**
204
+ - ✅ Use descriptive test version names
205
+ - ✅ Update both package.json and package-lock.json
206
+ - ✅ Verify NPM_TOKEN before starting
207
+ - ✅ Test in Storybook before publishing
208
+ - ✅ Document what's in the test version for consumers
209
+ - ✅ Clean up by reverting version after testing
210
+
211
+ ## Understanding What Gets Published
212
+
213
+ The `.npmignore` file excludes:
214
+ - `node_modules/`
215
+ - `./src` directory (source code is excluded!)
216
+ - `.storybook-static/`
217
+ - Logs, cache files, and IDE configs
218
+
219
+ **What DOES get published:**
220
+ - Compiled/built files in `dist/`
221
+ - `index.js` and `index.cjs` (entry points)
222
+ - Translation bundles
223
+ - `package.json` and lock file
224
+
225
+ This is why the Docker build bundles translations but doesn't require a full build - the source files are published directly.
226
+
227
+ ## Docker Build Process Explained
228
+
229
+ The Dockerfile performs these steps:
230
+ 1. Creates Node 20.11.0 environment
231
+ 2. Copies package files and installs dependencies
232
+ 3. Copies the entire project
233
+ 4. Runs `npm run bundle-translation` (required for i18n)
234
+ 5. Runs `npm publish` (publishes to NPM registry)
235
+ 6. Copies package.json to artifacts for verification
236
+
237
+ **Why Docker?**
238
+ - Ensures consistent Node version (20.11.0)
239
+ - Isolates publish environment from local machine
240
+ - Handles NPM authentication securely via build arg
241
+ - Creates reproducible builds
242
+
243
+ ## Troubleshooting
244
+
245
+ ### "npm publish failed"
246
+ - Check if version already exists: `npm view @designcrowd/fe-shared-lib@[version]`
247
+ - Verify NPM_TOKEN is valid
248
+ - Check network connectivity
249
+ - Look at Docker build output for specific error
250
+
251
+ ### "Cannot find NPM_TOKEN"
252
+ - User needs to set environment variable: `export NPM_TOKEN=[token]`
253
+ - Verify with: `echo $NPM_TOKEN`
254
+ - Token must have publish permissions for @designcrowd scope
255
+
256
+ ### "Version already exists"
257
+ - Choose a different test version name
258
+ - Append `-v2`, `-v3`, etc. to your description
259
+ - Example: `1.5.1-icon-lang-fix-v2`
260
+
261
+ ### Package-lock.json out of sync
262
+ - Always run `npm i` after changing package.json version
263
+ - Commit lock file changes along with package.json
264
+
265
+ ### Consumer can't install test version
266
+ - Verify version published: `npm view @designcrowd/fe-shared-lib versions`
267
+ - Check for typos in version string
268
+ - Ensure consuming app has access to @designcrowd scoped packages
269
+
270
+ ## Summary Checklist
271
+
272
+ Use TodoWrite to create todos for each step:
273
+
274
+ 1. ☐ Run linting (`npm run lint:fix`)
275
+ 2. ☐ Test changes in Storybook (`npm start`)
276
+ 3. ☐ Verify git account is correct (`gh auth status`)
277
+ 4. ☐ Create descriptive test version number
278
+ 5. ☐ Update package.json version
279
+ 6. ☐ Run `npm i` to update lock file
280
+ 7. ☐ Verify NPM_TOKEN is set (`echo $NPM_TOKEN`)
281
+ 8. ☐ Run `npm run docker:publish`
282
+ 9. ☐ Verify publication with `npm view`
283
+ 10. ☐ Document test version for user
284
+
285
+ Remember: Test versions are temporary. Don't commit them to git. After testing succeeds, revert the version and create a proper release.
package/.eslintrc.js CHANGED
@@ -20,6 +20,7 @@ module.exports = {
20
20
  devDependencies: true,
21
21
  },
22
22
  ],
23
+ 'import/prefer-default-export': 'off',
23
24
  'vue/no-template-target-blank': 'off',
24
25
  'vuejs-accessibility/form-control-has-label': 'off',
25
26
  'vue/html-button-has-type': 'off',
Binary file
Binary file
Binary file
@@ -0,0 +1,3 @@
1
+ ![alt text](image.png)
2
+ ![alt text](image-1.png)
3
+ ![alt text](image-2.png)
package/APasking.md ADDED
@@ -0,0 +1,9 @@
1
+ Ask brooke about the critical gap between speed curve and DD rum
2
+ - Missing data points like blocking time?
3
+
4
+
5
+ Get questions together to give to DD solution architect before
6
+ - How do we get metrics on the nuxt internals
7
+ - How can get get API calls made correlated?
8
+ - Would be good to just have the different types of processing that happens in the SSR/client tracked and mapped.
9
+
package/CLAUDE.md CHANGED
@@ -2,70 +2,232 @@
2
2
 
3
3
  This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
4
 
5
+ ## Project Overview
6
+
7
+ `@designcrowd/fe-shared-lib` is a Vue 3 component library and design system used across multiple DesignCrowd products: BrandCrowd, DesignCrowd, CrazyDomains, Design.com, and BrandPage. The library uses Tailwind CSS with a custom `tw-` prefix and features a sophisticated multi-theme system.
8
+
5
9
  ## Development Commands
6
10
 
7
- ### Starting Development
8
- - `npm start` - Builds Tailwind CSS files for all themes and launches Storybook development server on port 6006
9
- - `npm run storybook` - Same as `npm start` (alias)
10
-
11
- ### Building
12
- - `npm run build` - Builds production CSS using Tailwind
13
- - `npm run build:css` - Builds CSS files using tailwind.build.js
14
- - `npm run build:storybook` - Builds static Storybook for deployment
15
-
16
- ### Code Quality
17
- - `npm run lint` - Runs ESLint on TypeScript, JavaScript, and Vue files in src/
18
- - `npm run lint:fix` - Automatically fixes linting issues where possible
19
-
20
- ### Testing in UAT Environment
21
- To test experimental versions without publishing to production:
22
- 1. Update package.json version to `[current]-[description]`
23
- 2. Run `docker build . --build-arg NPM_TOKEN=$NPM_TOKEN`
24
- 3. Update consumer package reference to the new version
25
-
26
- ## Architecture Overview
27
-
28
- This is a shared component library and design system for DesignCrowd's frontend applications, published as `@designcrowd/fe-shared-lib`.
29
-
30
- ### Project Structure
31
- - **`src/atoms/`** - Reusable UI components (Button, Modal, Icon, etc.)
32
- - **`src/experiences/`** - Complex, business-specific components (AuthFlow, PaymentConfig, etc.)
33
- - **`src/themes/`** - Tailwind CSS theme configurations for different brands
34
- - **`src/css/`** - Global CSS and Tailwind configuration
35
- - **`public/css/`** - Generated CSS output files
36
-
37
- ### Theme System
38
- The library supports multiple brand themes through Tailwind CSS:
39
- - **BrandCrowd** (`bc.js`)
40
- - **BrandPage** (`bp.js`)
41
- - **CrazyDomains** (`cd.js`)
42
- - **DesignCrowd** (`dc.js`)
43
- - **Design.com** (`dcom.js`)
44
-
45
- Themes are built using `tailwind.themes.js` and exported via `src/themes/themes.js`.
46
-
47
- ### Component Organization
48
- - **Atoms**: Basic UI components with stories in Storybook
49
- - **Experiences**: Complex components combining multiple atoms for specific workflows
50
- - **Icons**: Extensive icon library with brand-specific variants
51
- - **Mixins**: Reusable Vue.js mixins for common functionality
52
-
53
- ### Key Files
54
- - `index.js` - Main export file exposing all components
55
- - `tailwind.config.js` - Tailwind CSS configuration
56
- - `vite.config.ts` - Vite build configuration for development
57
-
58
- ### Local Development Workflow
59
- Use `npm link` in this directory and `npm link @designcrowd/fe-shared-lib` in consumer projects for local development.
60
-
61
- ### Storybook
62
- - Development server runs on port 6006
63
- - Live Storybook: https://brandcrowd-storybook.s3.amazonaws.com/fe-shared-lib/live/index.html
64
- - Stories are co-located with components (`.stories.js` files)
65
-
66
- ### Brand Page Integration
67
- For changes affecting BrandPage Tab in BC.NET:
68
- 1. Update app.maker's reference to this library
69
- 2. Bump app.maker version
70
- 3. Run `npm run docker:publish:bp`
71
- 4. Update BC.NET's reference to the new app.maker version
11
+ **Start Development:**
12
+ ```bash
13
+ npm start # Builds Tailwind for all themes + starts Storybook + watches translations
14
+ ```
15
+
16
+ **Storybook:**
17
+ ```bash
18
+ npm run storybook # Starts Storybook dev server on port 6006
19
+ ```
20
+
21
+ **Linting:**
22
+ ```bash
23
+ npm run lint # Lint Vue/JS files
24
+ npm run lint:fix # Auto-fix linting issues
25
+ ```
26
+
27
+ **Translation Bundles:**
28
+ ```bash
29
+ npm run bundle-translation # Bundle translation files
30
+ npm run watch:translation # Watch translation files for changes
31
+ ```
32
+
33
+ **Build CSS Only:**
34
+ ```bash
35
+ npm run build:css # Builds Tailwind CSS for all themes
36
+ ```
37
+
38
+ **Testing Single Components:**
39
+ - Use Storybook to develop and test individual components
40
+ - Run `npm start` and navigate to the component's story
41
+
42
+ ## Architecture
43
+
44
+ ### Component Structure
45
+
46
+ The library follows atomic design principles:
47
+
48
+ ```
49
+ /src
50
+ ├── atoms/components/ # Atomic, reusable components
51
+ │ ├── Button/
52
+ │ ├── Icon/
53
+ │ ├── Modal/
54
+ │ ├── design-com/ # Design.com-specific components (DcomIcon, etc.)
55
+ │ └── [30+ other components]
56
+ ├── experiences/ # Higher-level feature components
57
+ │ ├── components/ # Auth flows, upload flows, payment config
58
+ │ ├── mixins/
59
+ │ ├── helpers/
60
+ │ ├── clients/ # API clients
61
+ │ └── constants/
62
+ ├── themes/ # Theme configuration files
63
+ ├── css/ # Base CSS and Tailwind setup
64
+ └── bundles/ # i18n translation bundles
65
+ ```
66
+
67
+ ### Multi-Theme System
68
+
69
+ The library supports 5 product themes, each extending `themes/base.js`:
70
+
71
+ 1. **brandCrowd** (bc.js) - BrandCrowd
72
+ 2. **brandPage** (bp.js) - BrandPage
73
+ 3. **designCrowd** (dc.js) - DesignCrowd
74
+ 4. **crazyDomains** (cd.js) - CrazyDomains
75
+ 5. **designCom** (dcom.js) - Design.com
76
+
77
+ **Theme Configuration:**
78
+ - Each theme defines custom colors (primary, secondary, success, info, warning, error, grayscale, discount)
79
+ - Custom fonts and spacing
80
+ - Tailwind builds separate CSS files: `dist/css/tailwind-{themeName}.css`
81
+
82
+ **Using Themes in Components:**
83
+ - Components accept a `theme` prop (e.g., 'brandCrowd', 'designCom')
84
+ - Use dynamic component selection: `:is="button-${theme}-${variant}"`
85
+ - Ensure all theme variants are exported from component files
86
+
87
+ ### Internationalization
88
+
89
+ The library uses i18next with @nuxtjs/i18n for multi-language support:
90
+
91
+ **Supported Locales:**
92
+ - en-US, de-DE, fr-FR, fr-CA, es-ES, pt-PT, pt-BR
93
+
94
+ **Usage Pattern:**
95
+ ```javascript
96
+ import { setSharedLibLocaleAsync, tr } from '@designcrowd/fe-shared-lib'
97
+
98
+ // Set locale
99
+ await setSharedLibLocaleAsync('en-US')
100
+
101
+ // Translate
102
+ const text = tr('translation.key')
103
+ ```
104
+
105
+ **Development Workflow:**
106
+ 1. Edit translation files in appropriate directories
107
+ 2. Run `npm run bundle-translation` or `npm run watch:translation`
108
+ 3. Translations are bundled into `/src/bundles/`
109
+
110
+ ### Component Development Patterns
111
+
112
+ **Creating New Components:**
113
+ 1. Add component to `/src/atoms/components/[ComponentName]/`
114
+ 2. Create `[ComponentName].vue` with proper theme support
115
+ 3. Create `[ComponentName].stories.js` for Storybook
116
+ 4. Export from `/src/atoms/components/index.js`
117
+ 5. If theme-specific, create variants in theme subdirectories
118
+
119
+ **Component Guidelines:**
120
+ - Use Tailwind classes with `tw-` prefix
121
+ - Support all 5 themes or document theme restrictions
122
+ - Include proper ARIA attributes for accessibility
123
+ - Add `lang` prop to text-containing components for i18n
124
+ - Follow variant patterns: primary, secondary, outlined, text, etc.
125
+
126
+ **Icon System:**
127
+ - Standard icons: Use `Icon.vue` component
128
+ - Design.com specific: Use `design-com/DcomIcon.vue`
129
+ - Icons defined in `Icon/icons/` and `design-com/icons/`
130
+ - SVG icons should include `:lang` attribute when containing text
131
+
132
+ ## Storybook
133
+
134
+ **Running Storybook:**
135
+ ```bash
136
+ npm start # Includes Storybook + CSS build + translation watch
137
+ ```
138
+
139
+ **Story Files:**
140
+ - Located alongside components: `ComponentName.stories.js`
141
+ - Use `@storybook/vue3` format
142
+ - Published to: https://brandcrowd-storybook.s3.amazonaws.com/fe-shared-lib/live/index.html
143
+
144
+ **Writing Stories:**
145
+ ```javascript
146
+ export default {
147
+ title: 'atoms/ComponentName',
148
+ component: ComponentName,
149
+ argTypes: {
150
+ theme: {
151
+ control: { type: 'select' },
152
+ options: ['brandCrowd', 'designCom', ...]
153
+ }
154
+ }
155
+ }
156
+ ```
157
+
158
+ ## Build & Publishing
159
+
160
+ **Version Bump:**
161
+ 1. Update version in `package.json`
162
+ 2. Run `npm i` to update lock file
163
+ 3. Commit changes
164
+
165
+ **Publishing to NPM:**
166
+ ```bash
167
+ npm run docker:publish # Requires NPM_TOKEN environment variable
168
+ ```
169
+
170
+ **Testing Experimental Versions:**
171
+ 1. Set version to `"[current]-[description]"` (e.g., "1.5.1-test-feature")
172
+ 2. Build Docker image
173
+ 3. Update consuming app's package.json reference
174
+
175
+ **CI/CD:**
176
+ - AWS CodeBuild auto-deploys Storybook to S3 on master commits
177
+ - Uses Node 20.11.0
178
+ - Configuration in `buildspec.yml`
179
+
180
+ ## ESLint & Code Style
181
+
182
+ **ESLint Configuration:**
183
+ - Extends Vue recommended, Airbnb, Prettier, and Storybook recommended
184
+ - Console statements allowed in development, error in production
185
+ - Prettier: 120 character line width
186
+
187
+ **Git Hooks (Husky):**
188
+ - Pre-commit/pre-push runs `lint-staged`
189
+ - Auto-lints and stages `*.{js,jsx,vue}` files
190
+
191
+ ## Common Tasks
192
+
193
+ **Adding a New Icon:**
194
+ 1. Add SVG to `src/atoms/components/Icon/icons/` or `design-com/icons/`
195
+ 2. Import in component's icon list
196
+ 3. Add story to `Icon.stories.js` or `DcomIcon.stories.js`
197
+ 4. If icon contains text, ensure `lang` attribute is properly bound
198
+
199
+ **Adding a New Theme:**
200
+ 1. Create `themes/{themeName}.js` extending `base.js`
201
+ 2. Define color palette, fonts, spacing
202
+ 3. Update `tailwind.build.js` to include new theme
203
+ 4. Run `npm run build:css`
204
+ 5. Test in Storybook
205
+
206
+ **Working with Translations:**
207
+ 1. Edit translation files in source directories
208
+ 2. Run `npm run watch:translation` during development
209
+ 3. Translations auto-bundle to `/src/bundles/`
210
+ 4. Use `setSharedLibLocaleAsync()` and `tr()` in components
211
+
212
+ **Debugging Theme Issues:**
213
+ 1. Check that all theme variants exist for the component
214
+ 2. Verify CSS was built: `npm run build:css`
215
+ 3. Check component exports from `index.js`
216
+ 4. Inspect Storybook controls for theme selection
217
+
218
+ ## Technology Stack
219
+
220
+ - **Framework:** Vue 3.5.15
221
+ - **Build Tool:** Vite 6.3.5
222
+ - **Styling:** TailwindCSS 3.4.1 (with `tw-` prefix)
223
+ - **Documentation:** Storybook 9.0.4
224
+ - **Internationalization:** i18next 25.2.1
225
+ - **Linting:** ESLint (Airbnb + Vue + Prettier)
226
+ - **Git Hooks:** Husky + lint-staged
227
+
228
+ **Key Dependencies:**
229
+ - Vue Router 4.5.0
230
+ - axios (HTTP client)
231
+ - cropperjs (image cropping)
232
+ - swiper (carousels)
233
+ - dropzone-vue3 (file uploads)