rw-elements-tools 1.2.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 (185) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +1333 -0
  3. package/bin/cli.js +213 -0
  4. package/build-properties.js +654 -0
  5. package/build-shared-hooks.js +253 -0
  6. package/config.js +148 -0
  7. package/controls/Animations/AnimationEffects.js +111 -0
  8. package/controls/Animations/AnimationSettings.js +437 -0
  9. package/controls/Animations/Reveals.js +168 -0
  10. package/controls/Animations/ScrollAnimation_Opacity.js +15 -0
  11. package/controls/Animations/ScrollAnimation_Rotate.js +17 -0
  12. package/controls/Animations/ScrollAnimation_Scale.js +18 -0
  13. package/controls/Animations/ScrollAnimation_Translate.js +31 -0
  14. package/controls/Background/Background.js +66 -0
  15. package/controls/Background/BackgroundButton.js +69 -0
  16. package/controls/Background/BackgroundColor.js +28 -0
  17. package/controls/Background/BackgroundContainer.js +73 -0
  18. package/controls/Background/BackgroundGradient.js +149 -0
  19. package/controls/Background/BackgroundImage.js +108 -0
  20. package/controls/Background/BackgroundOnlyColor.js +53 -0
  21. package/controls/Background/BackgroundTransparent.js +66 -0
  22. package/controls/Background/BackgroundVideo.js +9 -0
  23. package/controls/Background/Color.js +52 -0
  24. package/controls/Background/Gradient.js +263 -0
  25. package/controls/Background/GradientContainer.js +263 -0
  26. package/controls/Background/Image.js +269 -0
  27. package/controls/Background/Image_CMS.js +305 -0
  28. package/controls/Background/SVG.js +235 -0
  29. package/controls/Background/Video.js +29 -0
  30. package/controls/Borders/Border.js +114 -0
  31. package/controls/Borders/BorderColor.js +25 -0
  32. package/controls/Borders/BorderRadius.js +19 -0
  33. package/controls/Borders/BorderStyle.js +26 -0
  34. package/controls/Borders/BorderWidth.js +20 -0
  35. package/controls/Borders/Borders.js +69 -0
  36. package/controls/Borders/BordersContainer.js +90 -0
  37. package/controls/Borders/BordersInput.js +107 -0
  38. package/controls/Borders/Outline.js +100 -0
  39. package/controls/Borders/OutlineColor.js +25 -0
  40. package/controls/Borders/OutlineOffset.js +13 -0
  41. package/controls/Borders/OutlineStyle.js +26 -0
  42. package/controls/Borders/OutlineWidth.js +13 -0
  43. package/controls/Effects/BackdropBlur.js +11 -0
  44. package/controls/Effects/Blur.js +11 -0
  45. package/controls/Effects/BoxShadow.js +15 -0
  46. package/controls/Effects/Brightness.js +11 -0
  47. package/controls/Effects/DropShadow.js +14 -0
  48. package/controls/Effects/Effects.js +71 -0
  49. package/controls/Effects/Filters.js +114 -0
  50. package/controls/Effects/Opacity.js +14 -0
  51. package/controls/Effects/Saturate.js +11 -0
  52. package/controls/Layout/AspectRatio.js +53 -0
  53. package/controls/Layout/Container.js +24 -0
  54. package/controls/Layout/Hidden.js +9 -0
  55. package/controls/Layout/Inset.js +15 -0
  56. package/controls/Layout/Isolation.js +25 -0
  57. package/controls/Layout/Layout.js +38 -0
  58. package/controls/Layout/Overflow.js +33 -0
  59. package/controls/Layout/Position.js +37 -0
  60. package/controls/Layout/TopRightBottomLeft.js +90 -0
  61. package/controls/Layout/Visibility.js +25 -0
  62. package/controls/Layout/ZIndex.js +36 -0
  63. package/controls/Overlay/Color.js +52 -0
  64. package/controls/Overlay/Gradient.js +298 -0
  65. package/controls/Overlay/Image.js +226 -0
  66. package/controls/Overlay/Overlay.js +66 -0
  67. package/controls/Sizing/Height.js +18 -0
  68. package/controls/Sizing/MaxHeight.js +17 -0
  69. package/controls/Sizing/MaxWidth.js +17 -0
  70. package/controls/Sizing/MinHeight.js +18 -0
  71. package/controls/Sizing/MinWidth.js +18 -0
  72. package/controls/Sizing/Sizing.js +66 -0
  73. package/controls/Sizing/SizingContainer.js +122 -0
  74. package/controls/Sizing/SizingImage.js +75 -0
  75. package/controls/Sizing/SizingInput.js +71 -0
  76. package/controls/Sizing/SizingSVG.js +74 -0
  77. package/controls/Sizing/Width.js +18 -0
  78. package/controls/Spacing/Margin.js +17 -0
  79. package/controls/Spacing/Padding.js +17 -0
  80. package/controls/Spacing/Spacing.js +23 -0
  81. package/controls/Spacing/SpacingButton.js +42 -0
  82. package/controls/Spacing/SpacingContainer.js +32 -0
  83. package/controls/Spacing/SpacingInput.js +42 -0
  84. package/controls/Transforms/Rotate.js +13 -0
  85. package/controls/Transforms/Scale.js +13 -0
  86. package/controls/Transforms/Skew.js +25 -0
  87. package/controls/Transforms/TransformOrigin.js +12 -0
  88. package/controls/Transforms/Transforms.js +98 -0
  89. package/controls/Transforms/Translate.js +26 -0
  90. package/controls/Transitions/Delay.js +13 -0
  91. package/controls/Transitions/Duration.js +13 -0
  92. package/controls/Transitions/Property.js +42 -0
  93. package/controls/Transitions/TimingFunction.js +44 -0
  94. package/controls/Transitions/Transitions.js +20 -0
  95. package/controls/alignment/AlignContent.js +48 -0
  96. package/controls/alignment/AlignItems.js +64 -0
  97. package/controls/alignment/AlignSelf.js +34 -0
  98. package/controls/alignment/JustifyContent.js +44 -0
  99. package/controls/alignment/JustifyItems.js +32 -0
  100. package/controls/alignment/JustifySelf.js +34 -0
  101. package/controls/core/CSSClasses.js +11 -0
  102. package/controls/core/ControlType.js +25 -0
  103. package/controls/core/HTMLTag.js +80 -0
  104. package/controls/core/HoverGroup.js +38 -0
  105. package/controls/core/ID.js +12 -0
  106. package/controls/core/Image.js +95 -0
  107. package/controls/core/MenuItem.js +187 -0
  108. package/controls/core/ObjectFit.js +32 -0
  109. package/controls/core/ObjectPosition.js +65 -0
  110. package/controls/grid-flex/ActAsGridOrFlexItem.js +54 -0
  111. package/controls/grid-flex/ColEnd.js +28 -0
  112. package/controls/grid-flex/ColStart.js +27 -0
  113. package/controls/grid-flex/Columns.js +38 -0
  114. package/controls/grid-flex/FlexDirection.js +27 -0
  115. package/controls/grid-flex/FlexItem.js +106 -0
  116. package/controls/grid-flex/GridItem.js +41 -0
  117. package/controls/grid-flex/Order.js +45 -0
  118. package/controls/grid-flex/RowEnd.js +28 -0
  119. package/controls/grid-flex/RowStart.js +27 -0
  120. package/controls/grid-flex/Rows.js +38 -0
  121. package/controls/index.js +187 -0
  122. package/controls/interactive/ButtonFontAndTextStyles.js +208 -0
  123. package/controls/interactive/Filter.js +54 -0
  124. package/controls/interactive/InputFontAndTextStyles.js +156 -0
  125. package/controls/interactive/Link.js +13 -0
  126. package/controls/typography/HeadingColor.js +112 -0
  127. package/controls/typography/TextColor.js +51 -0
  128. package/controls/typography/TextDecoration.js +99 -0
  129. package/controls/typography/TextFontsAndTextStyles.js +243 -0
  130. package/controls/typography/TextSimple.js +55 -0
  131. package/controls/typography/TextStyles.js +55 -0
  132. package/controls/typography/Typography.js +13 -0
  133. package/index.js +19 -0
  134. package/package.json +55 -0
  135. package/properties/BackgroundType.js +18 -0
  136. package/properties/ButtonSize.js +19 -0
  137. package/properties/ContainerHeights.js +23 -0
  138. package/properties/ContainerWidths.js +27 -0
  139. package/properties/FontWeight.js +16 -0
  140. package/properties/GradientDirection.js +39 -0
  141. package/properties/LetterSpacing.js +13 -0
  142. package/properties/LineHeight.js +13 -0
  143. package/properties/RevealAnimations.js +12 -0
  144. package/properties/Slider.js +10 -0
  145. package/properties/TextAlign.js +23 -0
  146. package/properties/TransformOrigins.js +43 -0
  147. package/properties/TransitionNames.js +20 -0
  148. package/properties/index.js +13 -0
  149. package/shared-hooks/animations/globalAnimations.js +141 -0
  150. package/shared-hooks/animations/globalReveal.js +48 -0
  151. package/shared-hooks/background/globalBackground.js +306 -0
  152. package/shared-hooks/background/globalBgImageFetchPriority.js +34 -0
  153. package/shared-hooks/borders/globalBorders.js +85 -0
  154. package/shared-hooks/borders/globalOutline.js +39 -0
  155. package/shared-hooks/core/addPrefixToTailwindClasses.js +24 -0
  156. package/shared-hooks/core/advancedClasses.js +5 -0
  157. package/shared-hooks/core/classnames.js +92 -0
  158. package/shared-hooks/core/getHoverPrefix.js +21 -0
  159. package/shared-hooks/core/globalHTMLTag.js +17 -0
  160. package/shared-hooks/core/injectPrefixOnDarkModeColors.js +6 -0
  161. package/shared-hooks/effects/globalEffects.js +45 -0
  162. package/shared-hooks/effects/globalFilters.js +80 -0
  163. package/shared-hooks/effects/globalOverlay.js +166 -0
  164. package/shared-hooks/interactive/globalFilter.js +24 -0
  165. package/shared-hooks/interactive/globalLink.js +23 -0
  166. package/shared-hooks/layout/globalActAsGridOrFlexItem.js +66 -0
  167. package/shared-hooks/layout/globalLayout.js +50 -0
  168. package/shared-hooks/navigation/globalMenuItem.js +35 -0
  169. package/shared-hooks/navigation/globalNavItems.js +60 -0
  170. package/shared-hooks/navigation/globalNavTitle.js +23 -0
  171. package/shared-hooks/sizing/aspectRatioClasses.js +20 -0
  172. package/shared-hooks/sizing/globalSizing.js +19 -0
  173. package/shared-hooks/sizing/globalSizingContainer.js +40 -0
  174. package/shared-hooks/sizing/objectClasses.js +9 -0
  175. package/shared-hooks/spacing/globalSpacing.js +13 -0
  176. package/shared-hooks/spacing/globalSpacingMargin.js +11 -0
  177. package/shared-hooks/spacing/globalSpacingPadding.js +11 -0
  178. package/shared-hooks/transforms/globalTransforms.js +78 -0
  179. package/shared-hooks/transitions/getAlpineTransitionAttributesDesktop.js +111 -0
  180. package/shared-hooks/transitions/getAlpineTransitionAttributesMobile.js +110 -0
  181. package/shared-hooks/transitions/globalTransitions.js +48 -0
  182. package/shared-hooks/typography/globalButtonFontAndTextStyles.js +65 -0
  183. package/shared-hooks/typography/globalHeadingColor.js +69 -0
  184. package/shared-hooks/typography/globalInputFontAndTextStyles.js +40 -0
  185. package/shared-hooks/typography/globalTextFontsAndTextStyles.js +47 -0
package/bin/cli.js ADDED
@@ -0,0 +1,213 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * rw-elements-tools CLI
4
+ *
5
+ * Build tools for RapidWeaver element packs
6
+ *
7
+ * Usage:
8
+ * rw-build <command> [options]
9
+ *
10
+ * Commands:
11
+ * properties Build properties.json files from properties.config.json
12
+ * hooks Build hooks.js files from hooks.source.js
13
+ * all Build both properties and hooks
14
+ *
15
+ * Options:
16
+ * --packs <dir> Override the packs directory
17
+ * --watch, -w Watch for changes
18
+ * --help, -h Show this help message
19
+ * --version, -v Show version number
20
+ */
21
+
22
+ import { fileURLToPath } from 'url';
23
+ import path from 'path';
24
+ import { resolveConfig } from '../config.js';
25
+
26
+ const __filename = fileURLToPath(import.meta.url);
27
+ const __dirname = path.dirname(__filename);
28
+ const packageRoot = path.join(__dirname, '..');
29
+
30
+ /**
31
+ * Parse command line arguments
32
+ */
33
+ function parseArgs(args) {
34
+ const result = {
35
+ command: null,
36
+ packs: null,
37
+ watch: false,
38
+ help: false,
39
+ version: false,
40
+ };
41
+
42
+ for (let i = 0; i < args.length; i++) {
43
+ const arg = args[i];
44
+
45
+ if (arg === '--help' || arg === '-h') {
46
+ result.help = true;
47
+ } else if (arg === '--version' || arg === '-v') {
48
+ result.version = true;
49
+ } else if (arg === '--watch' || arg === '-w') {
50
+ result.watch = true;
51
+ } else if (arg === '--packs') {
52
+ result.packs = args[++i];
53
+ } else if (arg.startsWith('--packs=')) {
54
+ result.packs = arg.split('=')[1];
55
+ } else if (!arg.startsWith('-') && !result.command) {
56
+ result.command = arg;
57
+ }
58
+ }
59
+
60
+ return result;
61
+ }
62
+
63
+ /**
64
+ * Show help message
65
+ */
66
+ function showHelp() {
67
+ console.log(`
68
+ rw-elements-tools - Build tools for RapidWeaver element packs
69
+
70
+ Usage:
71
+ rw-build <command> [options]
72
+
73
+ Commands:
74
+ properties Build properties.json files from properties.config.json
75
+ hooks Build hooks.js files from hooks.source.js
76
+ all Build both properties and hooks
77
+
78
+ Options:
79
+ --packs <dir> Override the packs directory (default: ./packs)
80
+ --watch, -w Watch for changes
81
+ --help, -h Show this help message
82
+ --version, -v Show version number
83
+
84
+ Configuration:
85
+ The packs directory can be configured via (in priority order):
86
+ 1. CLI argument: --packs ./my-elements
87
+ 2. Environment variable: RW_PACKS_DIR=./my-elements
88
+ 3. package.json: { "rw-elements-tools": { "packsDir": "./my-elements" } }
89
+ 4. Config file: rw-elements-tools.config.js
90
+ 5. Default: ./packs
91
+
92
+ Examples:
93
+ rw-build all Build everything
94
+ rw-build properties Build properties only
95
+ rw-build hooks --watch Build and watch hooks
96
+ rw-build properties --watch Build and watch properties
97
+ rw-build all --watch Build and watch both hooks and properties
98
+ rw-build all --packs ./my-elements Build with custom packs directory
99
+ `);
100
+ }
101
+
102
+ /**
103
+ * Show version
104
+ */
105
+ async function showVersion() {
106
+ try {
107
+ const packageJsonPath = path.join(packageRoot, 'package.json');
108
+ const { default: fs } = await import('fs');
109
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
110
+ console.log(`rw-elements-tools v${pkg.version}`);
111
+ } catch {
112
+ console.log('rw-elements-tools (version unknown)');
113
+ }
114
+ }
115
+
116
+ /**
117
+ * Run the properties build
118
+ */
119
+ async function buildProperties(config, watch = false) {
120
+ console.log(`[rw-build] Building properties${watch ? ' (watch mode)' : ''}...`);
121
+ console.log(`[rw-build] Packs directory: ${config.packsDir}`);
122
+
123
+ const buildModule = await import('../build-properties.js');
124
+
125
+ if (watch) {
126
+ await buildModule.startWatch(config);
127
+ } else {
128
+ await buildModule.buildProperties(config);
129
+ }
130
+ }
131
+
132
+ /**
133
+ * Run the hooks build
134
+ */
135
+ async function buildHooks(config, watch = false) {
136
+ console.log(`[rw-build] Building hooks${watch ? ' (watch mode)' : ''}...`);
137
+ console.log(`[rw-build] Packs directory: ${config.packsDir}`);
138
+
139
+ const buildModule = await import('../build-shared-hooks.js');
140
+
141
+ if (watch) {
142
+ await buildModule.startWatch(config);
143
+ } else {
144
+ await buildModule.buildAll(config);
145
+ }
146
+ }
147
+
148
+ /**
149
+ * Main entry point
150
+ */
151
+ async function main() {
152
+ const args = parseArgs(process.argv.slice(2));
153
+
154
+ if (args.help) {
155
+ showHelp();
156
+ process.exit(0);
157
+ }
158
+
159
+ if (args.version) {
160
+ await showVersion();
161
+ process.exit(0);
162
+ }
163
+
164
+ if (!args.command) {
165
+ console.error('Error: No command specified. Use --help for usage information.');
166
+ process.exit(1);
167
+ }
168
+
169
+ // Resolve configuration
170
+ const config = await resolveConfig({
171
+ packs: args.packs,
172
+ });
173
+
174
+ try {
175
+ switch (args.command) {
176
+ case 'properties':
177
+ await buildProperties(config, args.watch);
178
+ break;
179
+
180
+ case 'hooks':
181
+ await buildHooks(config, args.watch);
182
+ break;
183
+
184
+ case 'all':
185
+ if (args.watch) {
186
+ // In watch mode, start both watchers concurrently
187
+ // They will both run indefinitely, watching for changes
188
+ await Promise.all([
189
+ buildProperties(config, true),
190
+ buildHooks(config, true),
191
+ ]);
192
+ } else {
193
+ // One-time build: run sequentially
194
+ await buildProperties(config, false);
195
+ await buildHooks(config, false);
196
+ }
197
+ break;
198
+
199
+ default:
200
+ console.error(`Error: Unknown command '${args.command}'. Use --help for usage information.`);
201
+ process.exit(1);
202
+ }
203
+ } catch (err) {
204
+ console.error(`[rw-build] Build failed: ${err.message}`);
205
+ if (process.env.DEBUG) {
206
+ console.error(err.stack);
207
+ }
208
+ process.exit(1);
209
+ }
210
+ }
211
+
212
+ main();
213
+