@modernpoacher/sprockets 0.0.288 → 1.0.0

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 (165) hide show
  1. package/.prettierignore +4 -0
  2. package/babel.config.cjs +6 -2
  3. package/eslint.config.mjs +33 -71
  4. package/index.d.mts +156 -6
  5. package/jest.after-each.mjs +10 -0
  6. package/jest.before-each.mjs +10 -0
  7. package/jest.config.mjs +11 -1
  8. package/package.json +93 -35
  9. package/src/js/components/common/text-content/index.cjs +20 -0
  10. package/src/js/components/common/text-content/index.d.cts +2 -0
  11. package/src/{components → js/components}/common/text-content/index.d.mts +1 -3
  12. package/src/{components → js/components}/common/text-content/index.jsx +7 -6
  13. package/src/{components → js/components}/common/visually-hidden-text/index.cjs +5 -2
  14. package/src/js/components/common/visually-hidden-text/index.d.cts +2 -0
  15. package/src/{components → js/components}/common/visually-hidden-text/index.d.mts +1 -3
  16. package/src/{components → js/components}/common/visually-hidden-text/index.jsx +7 -6
  17. package/src/{components → js/components}/description/index.cjs +5 -2
  18. package/src/js/components/description/index.d.cts +2 -0
  19. package/src/{components → js/components}/description/index.d.mts +2 -7
  20. package/src/js/components/description/index.jsx +5 -0
  21. package/src/{components → js/components}/error-message/index.cjs +5 -2
  22. package/src/js/components/error-message/index.d.cts +2 -0
  23. package/src/{components → js/components}/error-message/index.d.mts +2 -7
  24. package/src/js/components/error-message/index.jsx +5 -0
  25. package/src/{components → js/components}/group/index.cjs +5 -2
  26. package/src/js/components/group/index.d.cts +2 -0
  27. package/src/js/components/group/index.d.mts +9 -0
  28. package/src/js/components/group/index.jsx +5 -0
  29. package/src/js/components/index.cjs +32 -0
  30. package/src/js/components/index.d.cts +4 -0
  31. package/src/js/components/index.d.mts +4 -0
  32. package/src/js/components/index.mjs +10 -0
  33. package/src/{components → js/components}/title/index.cjs +5 -2
  34. package/src/js/components/title/index.d.cts +2 -0
  35. package/src/{components → js/components}/title/index.d.mts +2 -7
  36. package/src/js/components/title/index.jsx +5 -0
  37. package/src/js/index.d.cts +34 -0
  38. package/src/js/index.d.mts +34 -0
  39. package/src/js/sprockets/check-answers/group/answer-item.d.cts +1 -0
  40. package/src/js/sprockets/check-answers/group/answer-item.d.mts +11 -0
  41. package/src/{sprockets → js/sprockets}/check-answers/group/answer-item.jsx +9 -0
  42. package/src/{sprockets → js/sprockets}/check-answers/group/answer-title.cjs +1 -0
  43. package/src/js/sprockets/check-answers/group/answer-title.d.cts +1 -0
  44. package/src/js/sprockets/check-answers/group/answer-title.d.mts +9 -0
  45. package/src/{sprockets → js/sprockets}/check-answers/group/answer-title.jsx +2 -2
  46. package/src/{sprockets → js/sprockets}/check-answers/group/answer-value.cjs +1 -0
  47. package/src/js/sprockets/check-answers/group/answer-value.d.cts +1 -0
  48. package/src/js/sprockets/check-answers/group/answer-value.d.mts +9 -0
  49. package/src/js/sprockets/check-answers/group/answer-value.jsx +63 -0
  50. package/src/{sprockets → js/sprockets}/check-answers/group/change-answer.cjs +1 -0
  51. package/src/js/sprockets/check-answers/group/change-answer.d.cts +1 -0
  52. package/src/js/sprockets/check-answers/group/change-answer.d.mts +9 -0
  53. package/src/{sprockets → js/sprockets}/check-answers/group/change-answer.jsx +20 -12
  54. package/src/{sprockets → js/sprockets}/check-answers/group/index.cjs +5 -2
  55. package/src/js/sprockets/check-answers/group/index.d.cts +2 -0
  56. package/src/js/sprockets/check-answers/group/index.d.mts +13 -0
  57. package/src/js/sprockets/check-answers/group/index.jsx +134 -0
  58. package/src/{sprockets → js/sprockets}/check-answers/index.cjs +5 -2
  59. package/src/js/sprockets/check-answers/index.d.cts +2 -0
  60. package/src/js/sprockets/check-answers/index.d.mts +12 -0
  61. package/src/{sprockets → js/sprockets}/check-answers/index.jsx +25 -12
  62. package/src/{sprockets → js/sprockets}/check-answers/title/index.cjs +5 -2
  63. package/src/js/sprockets/check-answers/title/index.d.cts +2 -0
  64. package/src/js/sprockets/check-answers/title/index.d.mts +12 -0
  65. package/src/js/sprockets/check-answers/title/index.jsx +37 -0
  66. package/src/{sprockets → js/sprockets}/error-summary/group/index.cjs +5 -2
  67. package/src/js/sprockets/error-summary/group/index.d.cts +2 -0
  68. package/src/js/sprockets/error-summary/group/index.d.mts +13 -0
  69. package/src/js/sprockets/error-summary/group/index.jsx +124 -0
  70. package/src/{sprockets → js/sprockets}/error-summary/index.cjs +5 -2
  71. package/src/js/sprockets/error-summary/index.d.cts +2 -0
  72. package/src/js/sprockets/error-summary/index.d.mts +12 -0
  73. package/src/{sprockets → js/sprockets}/error-summary/index.jsx +26 -13
  74. package/src/{sprockets → js/sprockets}/error-summary/title/index.cjs +5 -2
  75. package/src/js/sprockets/error-summary/title/index.d.cts +2 -0
  76. package/src/js/sprockets/error-summary/title/index.d.mts +12 -0
  77. package/src/js/sprockets/error-summary/title/index.jsx +37 -0
  78. package/src/{sprockets → js/sprockets}/fieldset/description/index.cjs +5 -2
  79. package/src/js/sprockets/fieldset/description/index.d.cts +1 -0
  80. package/src/{sprockets → js/sprockets}/fieldset/description/index.jsx +2 -7
  81. package/src/{sprockets → js/sprockets}/fieldset/error-message/index.cjs +5 -2
  82. package/src/js/sprockets/fieldset/error-message/index.d.cts +1 -0
  83. package/src/{sprockets → js/sprockets}/fieldset/error-message/index.d.mts +1 -1
  84. package/src/{sprockets → js/sprockets}/fieldset/error-message/index.jsx +2 -7
  85. package/src/{sprockets → js/sprockets}/fieldset/group/index.cjs +5 -2
  86. package/src/js/sprockets/fieldset/group/index.d.cts +2 -0
  87. package/src/js/sprockets/fieldset/group/index.d.mts +13 -0
  88. package/src/js/sprockets/fieldset/group/index.jsx +21 -0
  89. package/src/{sprockets → js/sprockets}/fieldset/index.cjs +5 -2
  90. package/src/js/sprockets/fieldset/index.d.cts +2 -0
  91. package/src/js/sprockets/fieldset/index.d.mts +18 -0
  92. package/src/{sprockets → js/sprockets}/fieldset/index.jsx +26 -26
  93. package/src/{sprockets → js/sprockets}/fieldset/title/index.cjs +5 -2
  94. package/src/js/sprockets/fieldset/title/index.d.cts +2 -0
  95. package/src/js/sprockets/fieldset/title/index.d.mts +12 -0
  96. package/src/js/sprockets/fieldset/title/index.jsx +20 -0
  97. package/src/{sprockets → js/sprockets}/index.cjs +5 -5
  98. package/src/js/sprockets/index.d.cts +2 -0
  99. package/src/js/sprockets/index.d.mts +9 -0
  100. package/src/js/sprockets/index.jsx +5 -0
  101. package/src/js/super/components/description/index.cjs +20 -0
  102. package/src/js/super/components/description/index.d.cts +2 -0
  103. package/src/js/super/components/description/index.d.mts +18 -0
  104. package/src/{components → js/super/components}/description/index.jsx +15 -3
  105. package/src/js/super/components/error-message/index.cjs +20 -0
  106. package/src/js/super/components/error-message/index.d.cts +2 -0
  107. package/src/js/super/components/error-message/index.d.mts +27 -0
  108. package/src/{components → js/super/components}/error-message/index.jsx +8 -6
  109. package/src/js/super/components/group/index.cjs +20 -0
  110. package/src/js/super/components/group/index.d.cts +2 -0
  111. package/src/js/super/components/group/index.d.mts +19 -0
  112. package/src/js/super/components/group/index.jsx +59 -0
  113. package/src/js/super/components/index.cjs +32 -0
  114. package/src/js/super/components/index.d.cts +4 -0
  115. package/src/js/super/components/index.d.mts +4 -0
  116. package/src/js/super/components/index.mjs +10 -0
  117. package/src/js/super/components/title/index.cjs +20 -0
  118. package/src/js/super/components/title/index.d.cts +2 -0
  119. package/src/js/super/components/title/index.d.mts +20 -0
  120. package/src/js/super/components/title/index.jsx +62 -0
  121. package/src/{components/common/text-content → js/super/sprockets}/index.cjs +6 -3
  122. package/src/js/super/sprockets/index.d.cts +2 -0
  123. package/src/js/super/sprockets/index.d.mts +22 -0
  124. package/src/{sprockets → js/super/sprockets}/index.jsx +11 -18
  125. package/src/js/transformers/common/index.d.mts +1 -0
  126. package/src/{transformers → js/transformers}/common/index.mjs +5 -5
  127. package/src/js/transformers/index.d.mts +1 -0
  128. package/src/js/transformers/index.mjs +1 -0
  129. package/src/sass/.stylelintrc +14 -0
  130. package/src/sass/_sprockets.scss +77 -0
  131. package/src/sass/sprockets/_check-answers.scss +54 -0
  132. package/src/sass/sprockets/_error-summary.scss +57 -0
  133. package/src/sass/sprockets/_error.scss +47 -0
  134. package/jsconfig.json +0 -5
  135. package/src/common/index.d.mts +0 -9
  136. package/src/common/index.mjs +0 -7
  137. package/src/components/group/index.d.mts +0 -16
  138. package/src/components/group/index.jsx +0 -59
  139. package/src/components/title/index.jsx +0 -59
  140. package/src/index.d.mts +0 -9
  141. package/src/sprockets/check-answers/group/answer-value.jsx +0 -46
  142. package/src/sprockets/check-answers/group/index.d.mts +0 -9
  143. package/src/sprockets/check-answers/group/index.jsx +0 -125
  144. package/src/sprockets/check-answers/index.d.mts +0 -9
  145. package/src/sprockets/check-answers/title/index.d.mts +0 -9
  146. package/src/sprockets/check-answers/title/index.jsx +0 -29
  147. package/src/sprockets/error-summary/group/error-item.cjs +0 -13
  148. package/src/sprockets/error-summary/group/error-item.jsx +0 -22
  149. package/src/sprockets/error-summary/group/index.d.mts +0 -9
  150. package/src/sprockets/error-summary/group/index.jsx +0 -115
  151. package/src/sprockets/error-summary/index.d.mts +0 -9
  152. package/src/sprockets/error-summary/title/index.d.mts +0 -9
  153. package/src/sprockets/error-summary/title/index.jsx +0 -29
  154. package/src/sprockets/fieldset/group/index.d.mts +0 -9
  155. package/src/sprockets/fieldset/group/index.jsx +0 -16
  156. package/src/sprockets/fieldset/index.d.mts +0 -9
  157. package/src/sprockets/fieldset/title/index.d.mts +0 -9
  158. package/src/sprockets/fieldset/title/index.jsx +0 -15
  159. package/src/sprockets/index.d.mts +0 -17
  160. package/src/transformers/common/index.d.mts +0 -7
  161. package/tsconfig.json +0 -18
  162. /package/src/{index.cjs → js/index.cjs} +0 -0
  163. /package/src/{index.mjs → js/index.mjs} +0 -0
  164. /package/src/{sprockets → js/sprockets}/check-answers/group/answer-item.cjs +0 -0
  165. /package/src/{sprockets → js/sprockets}/fieldset/description/index.d.mts +0 -0
@@ -0,0 +1,4 @@
1
+ *.html
2
+ *.mjs
3
+ *.cjs
4
+ .stylelintrc
package/babel.config.cjs CHANGED
@@ -40,7 +40,8 @@ const presets = [
40
40
  ]
41
41
 
42
42
  const plugins = [
43
- '@babel/syntax-jsx'
43
+ '@babel/syntax-jsx',
44
+ '@babel/syntax-import-attributes'
44
45
  ]
45
46
 
46
47
  // @ts-ignore
@@ -51,7 +52,10 @@ module.exports = (api) => {
51
52
  presets,
52
53
  plugins,
53
54
  ignore: [
54
- /node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets|@modernpoacher\/gremlins)/
55
+ /node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets|@modernpoacher\/gremlins)\//,
56
+ /node_modules\/(?!react-component-instance)\//,
57
+ /node_modules\/(?!react-component-snapshot)\//,
58
+ /node_modules\/(?!react-component-name)\//
55
59
  ]
56
60
  }
57
61
  }
package/eslint.config.mjs CHANGED
@@ -58,12 +58,11 @@ export default [
58
58
  ]
59
59
  },
60
60
  /**
61
- * React config for all `jsx` and `tsx` files
61
+ * React config for all `jsx` files
62
62
  */
63
63
  {
64
64
  ...reactPlugin.configs.flat.recommended,
65
65
  settings: {
66
- ...reactPlugin.configs.flat.recommended.settings,
67
66
  ...reactSettings
68
67
  }
69
68
  },
@@ -80,7 +79,9 @@ export default [
80
79
  ],
81
80
  ignores: [
82
81
  'src',
83
- 'stories'
82
+ 'stories',
83
+ 'test',
84
+ 'jest.*.mjs'
84
85
  ],
85
86
  languageOptions: {
86
87
  globals: {
@@ -99,16 +100,26 @@ export default [
99
100
  }
100
101
  }
101
102
  }),
103
+ standard({
104
+ files: [
105
+ 'test/**/*.{mjs,cjs,mts,cts}'
106
+ ],
107
+ languageOptions: {
108
+ globals: {
109
+ ...globals.mocha
110
+ }
111
+ }
112
+ }),
102
113
  /**
103
- * Standard config for all `jsx` and `tsx` files
114
+ * Standard config for all `jsx` files
104
115
  */
105
116
  standard({
106
117
  files: [
107
- 'src/**/*.tsx',
118
+ 'src/**/*.jsx',
108
119
  'stories/**/*.jsx'
109
120
  ],
110
121
  ignores: [
111
- 'src/**/__tests__/**/*.tsx',
122
+ 'src/**/__tests__/**/*.jsx',
112
123
  'stories/**/__tests__/**/*.jsx'
113
124
  ],
114
125
  languageOptions: {
@@ -120,25 +131,23 @@ export default [
120
131
  globals: {
121
132
  ...globals.browser
122
133
  }
123
- },
134
+ }, // @ts-expect-error Storybook
124
135
  plugins: {
125
136
  ...reactPlugins,
126
137
  ...storybookPlugins
127
- },
138
+ }, // @ts-expect-error Storybook
128
139
  rules: {
129
140
  ...reactRules
130
141
  },
131
142
  settings: {
132
- ...reactSettings,
133
- 'import/resolver': {
134
- 'babel-module': {}
135
- }
143
+ ...reactSettings
136
144
  }
137
145
  }),
138
146
  standard({
139
147
  files: [
140
- 'src/**/__tests__/**/*.tsx',
141
- 'stories/**/__tests__/**/*.jsx'
148
+ 'src/**/__tests__/**/*.jsx',
149
+ 'stories/**/__tests__/**/*.jsx',
150
+ 'jest.*.mjs'
142
151
  ],
143
152
  languageOptions: {
144
153
  parser: babelParser,
@@ -150,19 +159,16 @@ export default [
150
159
  ...globals.browser,
151
160
  ...globals.jest
152
161
  }
153
- },
162
+ }, // @ts-expect-error Storybook
154
163
  plugins: {
155
164
  ...reactPlugins,
156
165
  ...storybookPlugins
157
- },
166
+ }, // @ts-expect-error Storybook
158
167
  rules: {
159
168
  ...reactRules
160
169
  },
161
170
  settings: {
162
- ...reactSettings,
163
- 'import/resolver': {
164
- 'babel-module': {}
165
- }
171
+ ...reactSettings
166
172
  }
167
173
  }),
168
174
  /**
@@ -173,80 +179,36 @@ export default [
173
179
  '**/*.{mts,cts}'
174
180
  ],
175
181
  ignores: [
176
- 'src'
177
- ],
178
- languageOptions: {
179
- globals: {
180
- ...globals.node,
181
- SprocketsTypes: 'readonly'
182
- }
183
- }
184
- }),
185
- typescript({
186
- files: [
187
- 'src/**/*.{mts,cts}'
188
- ],
189
- languageOptions: {
190
- globals: {
191
- ...globals.browser
192
- }
193
- }
194
- }),
195
- /**
196
- * TypeScript config for only `tsx` files
197
- */
198
- typescript({
199
- files: [
200
- 'src/**/*.tsx'
201
- ],
202
- ignores: [
203
- 'src/**/__tests__/**/*.tsx'
182
+ 'src',
183
+ 'test'
204
184
  ],
205
185
  languageOptions: {
206
186
  parser: typescriptParser,
207
187
  parserOptions: {
208
- ...reactParserOptions,
209
188
  projectService: true,
210
189
  project: 'tsconfig.json'
211
190
  },
212
191
  globals: {
213
- ...globals.browser
192
+ ...globals.node,
193
+ SprocketsTypes: 'readonly'
214
194
  }
215
- },
216
- plugins: {
217
- ...reactPlugins
218
- },
219
- rules: {
220
- ...reactRules
221
- },
222
- settings: {
223
- ...reactSettings
224
195
  }
225
196
  }),
226
197
  typescript({
227
198
  files: [
228
- 'src/**/__tests__/**/*.tsx'
199
+ 'src/**/*.{mts,cts}',
200
+ 'test/**/*.{mts,cts}'
229
201
  ],
230
202
  languageOptions: {
231
203
  parser: typescriptParser,
232
204
  parserOptions: {
233
- ...reactParserOptions,
234
205
  projectService: true,
235
206
  project: 'tsconfig.json'
236
207
  },
237
208
  globals: {
238
209
  ...globals.browser,
239
- ...globals.jest
210
+ SprocketsTypes: 'readonly'
240
211
  }
241
- },
242
- plugins: {
243
- ...reactPlugins
244
- },
245
- rules: {
246
- ...reactRules
247
- },
248
- settings: {
249
- ...reactSettings
250
212
  }
251
213
  })
252
214
  ]
package/index.d.mts CHANGED
@@ -1,23 +1,173 @@
1
+ import type React from 'react'
2
+
1
3
  declare global {
2
4
  namespace SprocketsTypes {
3
- export type onEventType = () => void
5
+ interface AnswerChangeAnswerType {
6
+ href: string
7
+ text: string
8
+ visuallyHiddenText?: string
9
+ }
4
10
 
5
11
  export interface AnswerDefinitionType {
6
12
  answer: {
7
13
  title: string
8
14
  value: string | string[]
9
15
  }
10
- changeAnswer: {
11
- text: string
12
- href: string
13
- visuallyHiddenText?: string
14
- }
16
+ changeAnswer: AnswerChangeAnswerType
15
17
  }
16
18
 
17
19
  export interface ErrorDefinitionType {
18
20
  text: string
19
21
  href: string
20
22
  }
23
+
24
+ export interface FieldChangeType {
25
+ text: string
26
+ href: string
27
+ }
28
+
29
+ export interface FieldErrorType {
30
+ text: string
31
+ href: string
32
+ }
33
+
34
+ export namespace Super {
35
+ export namespace Sprockets {
36
+ export interface SprocketProps extends React.PropsWithChildren {
37
+ groupRef?: React.RefObject<any> // eslint-disable-line @typescript-eslint/no-explicit-any -- Simplicity
38
+ }
39
+
40
+ export type SprocketState = Record<PropertyKey, unknown>
41
+ }
42
+
43
+ export namespace Components {
44
+ export namespace Description {
45
+ export interface DescriptionProps {
46
+ description?: string
47
+ }
48
+ }
49
+
50
+ export namespace ErrorMessage {
51
+ export interface ErrorMessageProps {
52
+ errorMessage?: string
53
+ }
54
+
55
+ export interface ErrorMessageState {
56
+ errorMessage?: string
57
+ }
58
+ }
59
+
60
+ export namespace Group {
61
+ export type GroupProps = Sprockets.SprocketProps
62
+
63
+ export type GroupState = Sprockets.SprocketState
64
+ }
65
+
66
+ export namespace Title {
67
+ export interface TitleProps {
68
+ title?: string
69
+ }
70
+ }
71
+ }
72
+ }
73
+
74
+ export namespace Components {
75
+ export namespace Common {
76
+ export namespace TextContent {
77
+ export interface TextContentProps {
78
+ textContent?: string
79
+ }
80
+ }
81
+
82
+ export namespace VisuallyHiddenText {
83
+ export interface VisuallyHiddenTextProps {
84
+ visuallyHiddenText?: string
85
+ }
86
+ }
87
+ }
88
+
89
+ export namespace Description {
90
+ export type DescriptionProps = Super.Components.Description.DescriptionProps
91
+ }
92
+
93
+ export namespace ErrorMessage {
94
+ export type ErrorMessageProps = Super.Components.ErrorMessage.ErrorMessageProps
95
+
96
+ export type ErrorMessageState = Super.Components.ErrorMessage.ErrorMessageState
97
+ }
98
+
99
+ export namespace Group {
100
+ export type GroupProps = Super.Components.Group.GroupProps
101
+
102
+ export type GroupState = Super.Components.Group.GroupState
103
+ }
104
+
105
+ export namespace Title {
106
+ export type TitleProps = Super.Components.Title.TitleProps
107
+ }
108
+ }
109
+
110
+ export namespace Sprockets {
111
+ export type SprocketProps = Super.Sprockets.SprocketProps
112
+
113
+ export type SprocketState = Super.Sprockets.SprocketState
114
+
115
+ export namespace CheckAnswers {
116
+ export interface CheckAnswersProps extends SprocketProps {
117
+ checkAnswers?: AnswerDefinitionType[]
118
+ }
119
+
120
+ export namespace Group {
121
+ export interface CheckAnswersProps extends Super.Components.Group.GroupProps {
122
+ checkAnswers?: AnswerDefinitionType[]
123
+ }
124
+
125
+ export interface CheckAnswersState extends Super.Components.Group.GroupState {
126
+ checkAnswers?: AnswerDefinitionType[]
127
+ }
128
+ }
129
+
130
+ export namespace Title {
131
+ export type CheckAnswersProps = Super.Components.Title.TitleProps
132
+ }
133
+ }
134
+
135
+ export namespace ErrorSummary {
136
+ export interface ErrorSummaryProps extends SprocketProps {
137
+ errorSummary?: ErrorDefinitionType[]
138
+ }
139
+
140
+ export namespace Group {
141
+ export interface ErrorSummaryProps extends Super.Components.Group.GroupProps {
142
+ errorSummary?: ErrorDefinitionType[]
143
+ }
144
+
145
+ export interface ErrorSummaryState extends Super.Components.Group.GroupState {
146
+ errorSummary?: ErrorDefinitionType[]
147
+ }
148
+ }
149
+
150
+ export namespace Title {
151
+ export type ErrorSummaryProps = Super.Components.Title.TitleProps
152
+ }
153
+ }
154
+
155
+ export namespace Fieldset {
156
+ export type FieldsetProps = SprocketProps
157
+
158
+ export type FieldsetState = SprocketState
159
+
160
+ export namespace Group {
161
+ export type FieldsetProps = Super.Components.Group.GroupProps
162
+
163
+ export type FieldsetState = Super.Components.Group.GroupState
164
+ }
165
+
166
+ export namespace Title {
167
+ export type FieldsetProps = Super.Components.Title.TitleProps
168
+ }
169
+ }
170
+ }
21
171
  }
22
172
  }
23
173
 
@@ -0,0 +1,10 @@
1
+ afterEach(() => {
2
+ const {
3
+ body
4
+ } = document
5
+
6
+ Array.from(body.children)
7
+ .forEach((child) => {
8
+ body.removeChild(child)
9
+ })
10
+ })
@@ -0,0 +1,10 @@
1
+ beforeEach(() => {
2
+ const {
3
+ body
4
+ } = document
5
+
6
+ Array.from(body.children)
7
+ .forEach((child) => {
8
+ body.removeChild(child)
9
+ })
10
+ })
package/jest.config.mjs CHANGED
@@ -14,5 +14,15 @@ export default {
14
14
  '^.+\\.jsx$': 'babel-jest',
15
15
  '^.+\\.mjs$': 'babel-jest'
16
16
  },
17
- moduleFileExtensions: ['js', 'jsx', 'mjs']
17
+ transformIgnorePatterns: [
18
+ '/node_modules\\/(?!react-component-instance)\\/',
19
+ '/node_modules\\/(?!react-component-snapshot)\\/',
20
+ '/node_modules\\/(?!react-component-name)\\/'
21
+ ],
22
+ moduleFileExtensions: ['js', 'jsx', 'mjs'],
23
+ testEnvironment: 'jsdom',
24
+ setupFilesAfterEnv: [
25
+ '<rootDir>/jest.before-each.mjs',
26
+ '<rootDir>/jest.after-each.mjs'
27
+ ]
18
28
  }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@modernpoacher/sprockets",
3
- "version": "0.0.288",
3
+ "version": "1.0.0",
4
4
  "description": "Sprockets",
5
5
  "keywords": [
6
6
  "Sprockets",
7
7
  "React"
8
8
  ],
9
- "main": "./src/index.cjs",
9
+ "main": "./src/js/index.mjs",
10
10
  "type": "module",
11
11
  "types": "./index.d.mts",
12
12
  "author": {
@@ -23,32 +23,41 @@
23
23
  "url": "git+ssh://git@github.com/modernpoacher/sprockets.git"
24
24
  },
25
25
  "scripts": {
26
- "build": "cross-env DEBUG=@modernpoacher/sprockets* webpack",
26
+ "build": "cross-env DEBUG=@modernpoacher/sprockets* webpack -c .storybook/webpack.config.mjs",
27
27
  "build-storybook": "storybook build",
28
- "build:watch": "cross-env DEBUG=@modernpoacher/sprockets* webpack --watch",
29
- "lint": "eslint",
30
- "lint:fix": "npm run lint -- --fix",
28
+ "build:watch": "npm run build -- -w",
29
+ "lint": "npm run lint:js && npm run lint:sass",
30
+ "lint:fix": "npm run lint:js:fix && npm run lint:sass:fix",
31
+ "lint:js": "eslint",
32
+ "lint:js:fix": "npm run lint:js -- --fix",
33
+ "lint:sass": "stylelint src/sass .storybook/*.scss",
34
+ "lint:sass:fix": "npm run lint:sass -- --fix",
31
35
  "nvm": "bash nvm.sh",
32
36
  "prebuild": "npm run nvm",
33
37
  "prelint": "npm run nvm",
34
38
  "prepare": "husky",
35
- "prestorybook": "npm run build && npm run transform",
39
+ "prestorybook": "npm run build && npm run prettier && npm run transform",
36
40
  "pretest": "npm run nvm",
41
+ "prettier": "prettier src/sass .storybook --write",
37
42
  "storybook": "storybook dev -p 6007",
38
- "test": "cross-env NODE_ENV=test jest",
39
- "transform": "cross-env DEBUG=@modernpoacher/sprockets* ./transform.sh"
43
+ "test": "npm run test:mocha && npm run test:jest",
44
+ "test:jest": "cross-env NODE_ENV=test jest",
45
+ "test:mocha": "cross-env NODE_ENV=test mocha test --recursive",
46
+ "transform": "cross-env DEBUG=@modernpoacher/sprockets* .storybook/transform.sh"
40
47
  },
41
48
  "dependencies": {
42
49
  "classnames": "^2.5.1",
43
- "debug": "^4.4.0"
50
+ "debug": "^4.4.0",
51
+ "fast-deep-equal": "^3.1.3"
44
52
  },
45
53
  "devDependencies": {
46
54
  "@babel/core": "^7.26.10",
47
55
  "@babel/eslint-parser": "^7.27.0",
56
+ "@babel/plugin-syntax-import-attributes": "^7.26.0",
48
57
  "@babel/preset-env": "^7.26.9",
49
58
  "@babel/preset-react": "^7.26.3",
50
59
  "@babel/register": "^7.25.9",
51
- "@modernpoacher/design-system": "1.2.0",
60
+ "@modernpoacher/design-system": "2.0.2",
52
61
  "@sequencemedia/eslint-config-standard": "^0.2.47",
53
62
  "@sequencemedia/eslint-config-typescript": "^0.1.68",
54
63
  "@storybook/addon-actions": "^8.6.10",
@@ -58,22 +67,33 @@
58
67
  "@storybook/manager-api": "^8.6.10",
59
68
  "@storybook/react": "^8.6.10",
60
69
  "@storybook/react-webpack5": "^8.6.10",
70
+ "@storybook/test": "^8.6.9",
61
71
  "@storybook/theming": "^8.6.10",
62
- "@types/react": "18.3.13",
72
+ "@testing-library/jest-dom": "^6.6.3",
73
+ "@testing-library/react": "^16.2.0",
74
+ "@types/babel__register": "^7.17.3",
75
+ "@types/chai": "^5.2.1",
76
+ "@types/debug": "^4.1.12",
77
+ "@types/jest": "^29.5.14",
78
+ "@types/mocha": "^10.0.10",
79
+ "@types/prop-types": "^15.7.14",
80
+ "@types/react": "^19.0.12",
81
+ "@types/react-dom": "^19.0.4",
63
82
  "@typescript-eslint/eslint-plugin": "^8.28.0",
64
83
  "@typescript-eslint/parser": "^8.28.0",
65
84
  "autoprefixer": "^10.4.21",
66
- "clean-webpack-plugin": "^4.0.0",
85
+ "chai": "^5.2.0",
67
86
  "core-js": "^3.41.0",
68
87
  "cross-env": "^7.0.3",
69
88
  "eslint": "^9.23.0",
70
- "eslint-import-resolver-babel-module": "^5.3.2",
71
89
  "eslint-plugin-react": "^7.37.4",
72
90
  "eslint-plugin-storybook": "^0.12.0",
73
91
  "globals": "^16.0.0",
74
92
  "husky": "^9.1.7",
75
93
  "jest": "^29.7.0",
94
+ "jest-environment-jsdom": "^29.7.0",
76
95
  "mini-css-extract-plugin": "^2.9.2",
96
+ "mocha": "^11.1.0",
77
97
  "perfectionist": "^2.4.0",
78
98
  "postcss": "^8.5.3",
79
99
  "postcss-discard-comments": "^7.0.3",
@@ -81,41 +101,79 @@
81
101
  "postcss-import": "^16.1.0",
82
102
  "postcss-loader": "^8.1.1",
83
103
  "postcss-map": "^0.11.0",
104
+ "prettier": "^3.5.3",
84
105
  "prop-types": "^15.8.1",
85
- "react": "18.3.1",
86
- "react-dom": "18.3.1",
106
+ "react": "^19.0.0",
107
+ "react-component-instance": "^0.0.15",
108
+ "react-component-snapshot": "^0.0.15",
109
+ "react-dom": "^19.0.0",
87
110
  "react-router": "^7.4.0",
88
- "react-test-renderer": "18.3.1",
89
111
  "remove-files-webpack-plugin": "^1.5.0",
90
112
  "sass": "^1.86.0",
91
113
  "sass-loader": "^16.0.5",
92
114
  "storybook": "^8.6.10",
115
+ "stylelint": "^16.16.0",
116
+ "stylelint-config-recommended-scss": "^14.1.0",
117
+ "stylelint-scss": "^6.11.1",
93
118
  "webpack": "^5.98.0",
94
119
  "webpack-cli": "^6.0.1"
95
120
  },
96
121
  "imports": {
97
- "#build/paths": "./build/paths.mjs",
98
- "#sprockets": "./src/index.mjs",
99
- "#sprockets/common": "./src/common/index.mjs",
100
- "#sprockets/components/*": "./src/components/*/index.jsx",
101
- "#sprockets/sprockets": "./src/sprockets/index.jsx",
102
- "#sprockets/sprockets/*": "./src/sprockets/*/index.jsx",
103
- "#sprockets/sprockets/check-answers/group/*": "./src/sprockets/check-answers/group/*.jsx",
104
- "#sprockets/sprockets/error-summary/group/*": "./src/sprockets/error-summary/group/*.jsx",
105
- "#sprockets/transformers/*": "./src/transformers/*/index.mjs",
122
+ "#sprockets": {
123
+ "require": "./src/js/index.cjs",
124
+ "import": "./src/js/index.mjs"
125
+ },
126
+ "#sprockets/components": {
127
+ "require": "./src/js/components/index.cjs",
128
+ "import": "./src/js/components/index.mjs"
129
+ },
130
+ "#sprockets/components/*": "./src/js/components/*/index.cjs",
131
+ "#sprockets/sprockets": "./src/js/sprockets/index.cjs",
132
+ "#sprockets/sprockets/*": "./src/js/sprockets/*/index.cjs",
133
+ "#sprockets/sprockets/check-answers/group/*": "./src/js/sprockets/check-answers/group/*.cjs",
134
+ "#sprockets/sprockets/error-summary/group/*": "./src/js/sprockets/error-summary/group/*.cjs",
135
+ "#sprockets/super": {
136
+ "require": "./src/js/super/index.cjs",
137
+ "import": "./src/js/super/index.mjs"
138
+ },
139
+ "#sprockets/super/components": {
140
+ "require": "./src/js/super/components/index.cjs",
141
+ "import": "./src/js/super/components/index.mjs"
142
+ },
143
+ "#sprockets/super/components/*": "./src/js/super/components/*/index.cjs",
144
+ "#sprockets/super/sprockets": "./src/js/super/sprockets/index.cjs",
145
+ "#sprockets/super/sprockets/*": "./src/js/super/sprockets/*/index.cjs",
146
+ "#sprockets/transformers": "./src/js/transformers/index.mjs",
147
+ "#sprockets/transformers/*": "./src/js/transformers/*/index.mjs",
148
+ "#stories/definitions/*": "./stories/definitions/*.json",
106
149
  "#stories/sprockets/*": "./stories/sprockets/*/index.stories.jsx"
107
150
  },
108
151
  "exports": {
109
152
  ".": {
110
- "require": "./src/index.cjs",
111
- "import": "./src/index.mjs"
153
+ "require": "./src/js/index.cjs",
154
+ "import": "./src/js/index.mjs"
155
+ },
156
+ "./components": {
157
+ "require": "./src/js/components/index.cjs",
158
+ "import": "./src/js/components/index.mjs"
159
+ },
160
+ "./components/*": "./src/js/components/*/index.cjs",
161
+ "./sprockets": "./src/js/sprockets/index.cjs",
162
+ "./sprockets/*": "./src/js/sprockets/*/index.cjs",
163
+ "./sprockets/check-answers/group/*": "./src/js/sprockets/check-answers/group/*.cjs",
164
+ "./sprockets/error-summary/group/*": "./src/js/sprockets/error-summary/group/*.cjs",
165
+ "./super": {
166
+ "require": "./src/js/super/index.cjs",
167
+ "import": "./src/js/super/index.mjs"
168
+ },
169
+ "./super/components": {
170
+ "require": "./src/js/super/components/index.cjs",
171
+ "import": "./src/js/super/components/index.mjs"
112
172
  },
113
- "./common": "./src/common/index.mjs",
114
- "./components/*": "./src/components/*/index.cjs",
115
- "./sprockets": "./src/sprockets/index.cjs",
116
- "./sprockets/*": "./src/sprockets/*/index.cjs",
117
- "./sprockets/check-answers/group/*": "./src/sprockets/check-answers/group/*.cjs",
118
- "./sprockets/error-summary/group/*": "./src/sprockets/error-summary/group/*.cjs",
119
- "./transformers/*": "./src/transformers/*/index.mjs"
173
+ "./super/components/*": "./src/js/super/components/*/index.cjs",
174
+ "./super/sprockets": "./src/js/super/sprockets/index.cjs",
175
+ "./super/sprockets/*": "./src/js/super/sprockets/*/index.cjs",
176
+ "./transformers": "./src/js/transformers/index.mjs",
177
+ "./transformers/*": "./src/js/transformers/*/index.mjs"
120
178
  }
121
179
  }
@@ -0,0 +1,20 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets|@modernpoacher\/gremlins)/
4
+ ]
5
+ })
6
+
7
+ const debug = require('debug')
8
+
9
+ const log = debug('@modernpoacher/sprockets/components/common/text-content')
10
+
11
+ log('`sprockets` is awake')
12
+
13
+ const {
14
+ default: TextContent
15
+ } = require('./index.jsx')
16
+
17
+ /**
18
+ * Exports only default
19
+ */
20
+ module.exports = TextContent
@@ -0,0 +1,2 @@
1
+ export { default } from '#sprockets/components/common/text-content'
2
+ export * from '#sprockets/components/common/text-content'