jac-client 0.2.3__py3-none-any.whl → 0.2.8__py3-none-any.whl

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 (224) hide show
  1. jac_client/examples/all-in-one/app.jac +494 -347
  2. jac_client/examples/all-in-one/assets/workers/worker.py +5 -0
  3. jac_client/examples/all-in-one/button.jac +1 -1
  4. jac_client/examples/all-in-one/components/CategoryFilter.jac +35 -0
  5. jac_client/examples/all-in-one/components/Header.jac +13 -0
  6. jac_client/examples/all-in-one/components/ProfitOverview.jac +50 -0
  7. jac_client/examples/all-in-one/components/Summary.jac +53 -0
  8. jac_client/examples/all-in-one/components/TransactionForm.jac +158 -0
  9. jac_client/examples/all-in-one/components/TransactionItem.jac +55 -0
  10. jac_client/examples/all-in-one/components/TransactionList.jac +37 -0
  11. jac_client/examples/all-in-one/components/button.jac +1 -1
  12. jac_client/examples/all-in-one/components/navigation.jac +132 -0
  13. jac_client/examples/all-in-one/constants/categories.jac +37 -0
  14. jac_client/examples/all-in-one/constants/clients.jac +13 -0
  15. jac_client/examples/all-in-one/context/BudgetContext.jac +28 -0
  16. jac_client/examples/all-in-one/hooks/useBudget.jac +116 -0
  17. jac_client/examples/all-in-one/hooks/useLocalStorage.jac +36 -0
  18. jac_client/examples/all-in-one/pages/BudgetPlanner.cl.jac +70 -0
  19. jac_client/examples/all-in-one/pages/BudgetPlanner.jac +126 -0
  20. jac_client/examples/all-in-one/pages/FeaturesTest.cl.jac +552 -0
  21. jac_client/examples/all-in-one/pages/FeaturesTest.jac +126 -0
  22. jac_client/examples/all-in-one/pages/LandingPage.jac +101 -0
  23. jac_client/examples/all-in-one/pages/loginPage.jac +132 -0
  24. jac_client/examples/all-in-one/pages/nestedDemo.jac +61 -0
  25. jac_client/examples/all-in-one/pages/notFound.jac +24 -0
  26. jac_client/examples/all-in-one/pages/signupPage.jac +133 -0
  27. jac_client/examples/all-in-one/utils/formatters.jac +52 -0
  28. jac_client/examples/asset-serving/css-with-image/{app.jac → src/app.jac} +4 -4
  29. jac_client/examples/asset-serving/image-asset/{app.jac → src/app.jac} +4 -4
  30. jac_client/examples/asset-serving/import-alias/{app.jac → src/app.jac} +5 -5
  31. jac_client/examples/basic/{app.jac → src/app.jac} +4 -4
  32. jac_client/examples/basic-auth/src/app.jac +371 -0
  33. jac_client/examples/basic-auth-with-router/{app.jac → src/app.jac} +28 -28
  34. jac_client/examples/basic-full-stack/{app.jac → src/app.jac} +166 -127
  35. jac_client/examples/css-styling/js-styling/{app.jac → src/app.jac} +7 -7
  36. jac_client/examples/css-styling/material-ui/{app.jac → src/app.jac} +6 -6
  37. jac_client/examples/css-styling/pure-css/{app.jac → src/app.jac} +7 -7
  38. jac_client/examples/css-styling/sass-example/{app.jac → src/app.jac} +7 -7
  39. jac_client/examples/css-styling/styled-components/{app.jac → src/app.jac} +6 -6
  40. jac_client/examples/css-styling/tailwind-example/{app.jac → src/app.jac} +7 -7
  41. jac_client/examples/full-stack-with-auth/{app.jac → src/app.jac} +47 -47
  42. jac_client/examples/little-x/{app.jac → src/app.jac} +27 -32
  43. jac_client/examples/little-x/src/submit-button.jac +16 -0
  44. jac_client/examples/nested-folders/nested-advance/{ButtonRoot.jac → src/ButtonRoot.jac} +1 -1
  45. jac_client/examples/nested-folders/nested-advance/{app.jac → src/app.jac} +1 -1
  46. jac_client/examples/nested-folders/nested-advance/{level1 → src/level1}/ButtonSecondL.jac +1 -1
  47. jac_client/examples/nested-folders/nested-advance/{level1 → src/level1}/Card.jac +1 -1
  48. jac_client/examples/nested-folders/nested-advance/{level1 → src/level1}/level2/ButtonThirdL.jac +1 -1
  49. jac_client/examples/nested-folders/nested-basic/{app.jac → src/app.jac} +2 -2
  50. jac_client/examples/nested-folders/nested-basic/{button.jac → src/button.jac} +1 -1
  51. jac_client/examples/nested-folders/nested-basic/{components → src/components}/button.jac +1 -1
  52. jac_client/examples/ts-support/src/app.jac +35 -0
  53. jac_client/examples/with-router/{app.jac → src/app.jac} +15 -15
  54. jac_client/plugin/cli.jac +504 -0
  55. jac_client/plugin/client.jac +45 -0
  56. jac_client/plugin/client_runtime.cl.jac +42 -0
  57. jac_client/plugin/impl/client.impl.jac +193 -0
  58. jac_client/plugin/impl/client_runtime.impl.jac +195 -0
  59. jac_client/plugin/impl/vite_client_bundle.impl.jac +72 -0
  60. jac_client/plugin/plugin_config.jac +195 -0
  61. jac_client/plugin/src/__init__.jac +20 -0
  62. jac_client/plugin/src/asset_processor.jac +33 -0
  63. jac_client/plugin/src/babel_processor.jac +18 -0
  64. jac_client/plugin/src/compiler.jac +67 -0
  65. jac_client/plugin/src/config_loader.jac +32 -0
  66. jac_client/plugin/src/impl/asset_processor.impl.jac +127 -0
  67. jac_client/plugin/src/impl/babel_processor.impl.jac +89 -0
  68. jac_client/plugin/src/impl/compiler.impl.jac +288 -0
  69. jac_client/plugin/src/impl/config_loader.impl.jac +119 -0
  70. jac_client/plugin/src/impl/import_processor.impl.jac +33 -0
  71. jac_client/plugin/src/impl/jac_to_js.impl.jac +41 -0
  72. jac_client/plugin/src/impl/package_installer.impl.jac +105 -0
  73. jac_client/plugin/src/impl/vite_bundler.impl.jac +626 -0
  74. jac_client/plugin/src/import_processor.jac +19 -0
  75. jac_client/plugin/src/jac_to_js.jac +35 -0
  76. jac_client/plugin/src/package_installer.jac +26 -0
  77. jac_client/plugin/src/vite_bundler.jac +44 -0
  78. jac_client/plugin/vite_client_bundle.jac +31 -0
  79. jac_client/tests/conftest.py +283 -0
  80. jac_client/tests/fixtures/basic-app/app.jac +2 -2
  81. jac_client/tests/fixtures/cl_file/app.cl.jac +2 -2
  82. jac_client/tests/fixtures/client_app_with_antd/app.jac +1 -1
  83. jac_client/tests/fixtures/js_import/app.jac +5 -5
  84. jac_client/tests/fixtures/spawn_test/app.jac +15 -18
  85. jac_client/tests/fixtures/with-ts/app.jac +35 -0
  86. jac_client/tests/test_cli.py +811 -0
  87. jac_client/tests/test_it.py +592 -97
  88. {jac_client-0.2.3.dist-info → jac_client-0.2.8.dist-info}/METADATA +41 -34
  89. jac_client-0.2.8.dist-info/RECORD +97 -0
  90. {jac_client-0.2.3.dist-info → jac_client-0.2.8.dist-info}/WHEEL +2 -1
  91. jac_client-0.2.8.dist-info/entry_points.txt +4 -0
  92. jac_client-0.2.8.dist-info/top_level.txt +1 -0
  93. jac_client/docs/README.md +0 -689
  94. jac_client/docs/advanced-state.md +0 -1265
  95. jac_client/docs/asset-serving/intro.md +0 -209
  96. jac_client/docs/assets/pipe_line-v2.svg +0 -32
  97. jac_client/docs/assets/pipe_line.png +0 -0
  98. jac_client/docs/file-system/app.jac.md +0 -121
  99. jac_client/docs/file-system/backend-frontend.md +0 -217
  100. jac_client/docs/file-system/intro.md +0 -72
  101. jac_client/docs/file-system/nested-imports.md +0 -348
  102. jac_client/docs/guide-example/intro.md +0 -115
  103. jac_client/docs/guide-example/step-01-setup.md +0 -270
  104. jac_client/docs/guide-example/step-02-components.md +0 -416
  105. jac_client/docs/guide-example/step-03-styling.md +0 -478
  106. jac_client/docs/guide-example/step-04-todo-ui.md +0 -477
  107. jac_client/docs/guide-example/step-05-local-state.md +0 -530
  108. jac_client/docs/guide-example/step-06-events.md +0 -749
  109. jac_client/docs/guide-example/step-07-effects.md +0 -468
  110. jac_client/docs/guide-example/step-08-walkers.md +0 -534
  111. jac_client/docs/guide-example/step-09-authentication.md +0 -586
  112. jac_client/docs/guide-example/step-10-routing.md +0 -539
  113. jac_client/docs/guide-example/step-11-final.md +0 -963
  114. jac_client/docs/imports.md +0 -1141
  115. jac_client/docs/lifecycle-hooks.md +0 -773
  116. jac_client/docs/routing.md +0 -659
  117. jac_client/docs/styling/intro.md +0 -249
  118. jac_client/docs/styling/js-styling.md +0 -367
  119. jac_client/docs/styling/material-ui.md +0 -341
  120. jac_client/docs/styling/pure-css.md +0 -299
  121. jac_client/docs/styling/sass.md +0 -403
  122. jac_client/docs/styling/styled-components.md +0 -395
  123. jac_client/docs/styling/tailwind.md +0 -298
  124. jac_client/examples/all-in-one/.babelrc +0 -9
  125. jac_client/examples/all-in-one/README.md +0 -16
  126. jac_client/examples/all-in-one/assets/burger.png +0 -0
  127. jac_client/examples/all-in-one/package.json +0 -29
  128. jac_client/examples/all-in-one/styles.css +0 -26
  129. jac_client/examples/all-in-one/vite.config.js +0 -28
  130. jac_client/examples/asset-serving/css-with-image/.babelrc +0 -9
  131. jac_client/examples/asset-serving/css-with-image/README.md +0 -91
  132. jac_client/examples/asset-serving/css-with-image/assets/burger.png +0 -0
  133. jac_client/examples/asset-serving/css-with-image/package.json +0 -28
  134. jac_client/examples/asset-serving/css-with-image/styles.css +0 -26
  135. jac_client/examples/asset-serving/css-with-image/vite.config.js +0 -28
  136. jac_client/examples/asset-serving/image-asset/.babelrc +0 -9
  137. jac_client/examples/asset-serving/image-asset/README.md +0 -119
  138. jac_client/examples/asset-serving/image-asset/assets/burger.png +0 -0
  139. jac_client/examples/asset-serving/image-asset/package.json +0 -28
  140. jac_client/examples/asset-serving/image-asset/styles.css +0 -26
  141. jac_client/examples/asset-serving/image-asset/vite.config.js +0 -28
  142. jac_client/examples/asset-serving/import-alias/.babelrc +0 -9
  143. jac_client/examples/asset-serving/import-alias/README.md +0 -83
  144. jac_client/examples/asset-serving/import-alias/assets/burger.png +0 -0
  145. jac_client/examples/asset-serving/import-alias/package.json +0 -28
  146. jac_client/examples/asset-serving/import-alias/vite.config.js +0 -28
  147. jac_client/examples/basic/.babelrc +0 -9
  148. jac_client/examples/basic/README.md +0 -16
  149. jac_client/examples/basic/package.json +0 -27
  150. jac_client/examples/basic/vite.config.js +0 -27
  151. jac_client/examples/basic-auth/.babelrc +0 -9
  152. jac_client/examples/basic-auth/README.md +0 -16
  153. jac_client/examples/basic-auth/app.jac +0 -308
  154. jac_client/examples/basic-auth/package.json +0 -27
  155. jac_client/examples/basic-auth/vite.config.js +0 -27
  156. jac_client/examples/basic-auth-with-router/.babelrc +0 -9
  157. jac_client/examples/basic-auth-with-router/README.md +0 -60
  158. jac_client/examples/basic-auth-with-router/package.json +0 -28
  159. jac_client/examples/basic-auth-with-router/vite.config.js +0 -27
  160. jac_client/examples/basic-full-stack/.babelrc +0 -9
  161. jac_client/examples/basic-full-stack/README.md +0 -18
  162. jac_client/examples/basic-full-stack/package.json +0 -28
  163. jac_client/examples/basic-full-stack/vite.config.js +0 -27
  164. jac_client/examples/css-styling/js-styling/.babelrc +0 -9
  165. jac_client/examples/css-styling/js-styling/README.md +0 -183
  166. jac_client/examples/css-styling/js-styling/package.json +0 -28
  167. jac_client/examples/css-styling/js-styling/styles.js +0 -100
  168. jac_client/examples/css-styling/js-styling/vite.config.js +0 -27
  169. jac_client/examples/css-styling/material-ui/.babelrc +0 -9
  170. jac_client/examples/css-styling/material-ui/README.md +0 -16
  171. jac_client/examples/css-styling/material-ui/package.json +0 -32
  172. jac_client/examples/css-styling/material-ui/vite.config.js +0 -27
  173. jac_client/examples/css-styling/pure-css/.babelrc +0 -9
  174. jac_client/examples/css-styling/pure-css/README.md +0 -16
  175. jac_client/examples/css-styling/pure-css/package.json +0 -28
  176. jac_client/examples/css-styling/pure-css/styles.css +0 -111
  177. jac_client/examples/css-styling/pure-css/vite.config.js +0 -27
  178. jac_client/examples/css-styling/sass-example/.babelrc +0 -9
  179. jac_client/examples/css-styling/sass-example/README.md +0 -16
  180. jac_client/examples/css-styling/sass-example/package.json +0 -29
  181. jac_client/examples/css-styling/sass-example/styles.scss +0 -153
  182. jac_client/examples/css-styling/sass-example/vite.config.js +0 -27
  183. jac_client/examples/css-styling/styled-components/.babelrc +0 -9
  184. jac_client/examples/css-styling/styled-components/README.md +0 -16
  185. jac_client/examples/css-styling/styled-components/package.json +0 -29
  186. jac_client/examples/css-styling/styled-components/styled.js +0 -90
  187. jac_client/examples/css-styling/styled-components/vite.config.js +0 -27
  188. jac_client/examples/css-styling/tailwind-example/.babelrc +0 -9
  189. jac_client/examples/css-styling/tailwind-example/README.md +0 -16
  190. jac_client/examples/css-styling/tailwind-example/global.css +0 -1
  191. jac_client/examples/css-styling/tailwind-example/package.json +0 -30
  192. jac_client/examples/css-styling/tailwind-example/vite.config.js +0 -29
  193. jac_client/examples/full-stack-with-auth/.babelrc +0 -9
  194. jac_client/examples/full-stack-with-auth/README.md +0 -16
  195. jac_client/examples/full-stack-with-auth/package.json +0 -28
  196. jac_client/examples/full-stack-with-auth/vite.config.js +0 -29
  197. jac_client/examples/little-x/package.json +0 -23
  198. jac_client/examples/little-x/submit-button.jac +0 -8
  199. jac_client/examples/nested-folders/nested-advance/.babelrc +0 -9
  200. jac_client/examples/nested-folders/nested-advance/README.md +0 -77
  201. jac_client/examples/nested-folders/nested-advance/package.json +0 -29
  202. jac_client/examples/nested-folders/nested-advance/vite.config.js +0 -28
  203. jac_client/examples/nested-folders/nested-basic/.babelrc +0 -9
  204. jac_client/examples/nested-folders/nested-basic/README.md +0 -183
  205. jac_client/examples/nested-folders/nested-basic/app.js +0 -7
  206. jac_client/examples/nested-folders/nested-basic/package.json +0 -28
  207. jac_client/examples/nested-folders/nested-basic/vite.config.js +0 -27
  208. jac_client/examples/with-router/.babelrc +0 -9
  209. jac_client/examples/with-router/README.md +0 -17
  210. jac_client/examples/with-router/package.json +0 -28
  211. jac_client/examples/with-router/vite.config.js +0 -27
  212. jac_client/plugin/cli.py +0 -244
  213. jac_client/plugin/client.py +0 -152
  214. jac_client/plugin/client_runtime.jac +0 -234
  215. jac_client/plugin/vite_client_bundle.py +0 -503
  216. jac_client/tests/fixtures/js_import/utils.js +0 -21
  217. jac_client/tests/fixtures/package-lock.json +0 -329
  218. jac_client/tests/fixtures/package.json +0 -11
  219. jac_client/tests/test_asset_examples.py +0 -322
  220. jac_client/tests/test_cl.py +0 -530
  221. jac_client/tests/test_create_jac_app.py +0 -131
  222. jac_client/tests/test_nested_file.py +0 -374
  223. jac_client-0.2.3.dist-info/RECORD +0 -171
  224. jac_client-0.2.3.dist-info/entry_points.txt +0 -4
@@ -1,183 +0,0 @@
1
- # JavaScript Styling Example
2
-
3
- This example demonstrates styling a Jac application using JavaScript objects for inline styles.
4
-
5
- ## Overview
6
-
7
- JavaScript styling uses JavaScript objects to define styles, which are then applied via the `style` prop. This approach is perfect for:
8
- - Dynamic styling based on state
9
- - Programmatic style generation
10
- - Component-scoped styles without CSS files
11
- - React-style inline styling
12
-
13
- ## Project Structure
14
-
15
- ```
16
- js-styling/
17
- ├── app.jac # Main application component
18
- ├── styles.js # Style objects exported as default
19
- ├── package.json # Dependencies
20
- └── vite.config.js # Vite configuration
21
- ```
22
-
23
- ## Setup
24
-
25
- 1. Install dependencies:
26
- ```bash
27
- npm install
28
- ```
29
-
30
- 2. Run the application:
31
- ```bash
32
- jac serve app.jac
33
- ```
34
-
35
- ## How It Works
36
-
37
- ### 1. Define Style Objects
38
-
39
- In `styles.js`, export a default object with all styles:
40
-
41
- ```javascript
42
- const countDisplay = {
43
- fontSize: "3.75rem",
44
- fontWeight: "bold",
45
- transition: "color 0.3s ease"
46
- };
47
-
48
- export default {
49
- container: {
50
- minHeight: "100vh",
51
- background: "linear-gradient(to bottom right, #dbeafe, #e0e7ff)",
52
- display: "flex",
53
- alignItems: "center",
54
- justifyContent: "center",
55
- padding: "1rem"
56
- },
57
- card: {
58
- backgroundColor: "#ffffff",
59
- borderRadius: "1rem",
60
- boxShadow: "0 25px 50px -12px rgba(0, 0, 0, 0.25)",
61
- padding: "2rem",
62
- maxWidth: "28rem",
63
- width: "100%"
64
- },
65
- countDisplayZero: {
66
- ...countDisplay,
67
- color: "#1f2937"
68
- },
69
- countDisplayPositive: {
70
- ...countDisplay,
71
- color: "#16a34a"
72
- },
73
- // ... more styles
74
- };
75
- ```
76
-
77
- ### 2. Import Styles
78
-
79
- In your Jac file:
80
-
81
- ```jac
82
- cl import from .styles { default as styles }
83
- ```
84
-
85
- ### 3. Apply Styles
86
-
87
- Use the `style` prop with style objects:
88
-
89
- ```jac
90
- return <div style={styles.container}>
91
- <div style={styles.card}>
92
- <h1 style={styles.title}>Counter Application</h1>
93
- </div>
94
- </div>;
95
- ```
96
-
97
- ### 4. Dynamic Styles
98
-
99
- Select styles based on state:
100
-
101
- ```jac
102
- let countStyle = styles.countDisplayZero if count == 0 else (styles.countDisplayPositive if count > 0 else styles.countDisplayNegative);
103
-
104
- return <div style={countStyle}>{count}</div>;
105
- ```
106
-
107
- ## Style Object Format
108
-
109
- JavaScript style objects use camelCase property names (React convention):
110
-
111
- ```javascript
112
- {
113
- backgroundColor: "#ffffff", // not background-color
114
- fontSize: "1.5rem", // not font-size
115
- marginTop: "10px", // not margin-top
116
- zIndex: 1 // not z-index
117
- }
118
- ```
119
-
120
- ## Best Practices
121
-
122
- 1. **Use object spread**: Share common styles with spread operator
123
- 2. **Organize by component**: Group related styles together
124
- 3. **Use constants**: Define reusable values at the top
125
- 4. **CamelCase properties**: Follow React naming convention
126
- 5. **Extract complex logic**: Move style calculations to functions
127
-
128
- ## Advantages
129
-
130
- - ✅ Dynamic styling based on props/state
131
- - ✅ No CSS file needed
132
- - ✅ Type-safe (with TypeScript)
133
- - ✅ Component-scoped by default
134
- - ✅ Programmatic style generation
135
-
136
- ## Limitations
137
-
138
- - ❌ No pseudo-classes (hover, focus, etc.)
139
- - ❌ No media queries
140
- - ❌ No CSS animations (use JavaScript)
141
- - ❌ Verbose for complex styles
142
- - ❌ No CSS preprocessor features
143
-
144
- ## When to Use
145
-
146
- Choose JavaScript Styling when:
147
- - You need dynamic styles based on state
148
- - You want programmatic style generation
149
- - You prefer keeping styles in JavaScript
150
- - You're building component libraries
151
- - You need runtime style calculations
152
-
153
- ## Advanced Patterns
154
-
155
- ### Style Functions
156
-
157
- Create functions that return styles:
158
-
159
- ```javascript
160
- export const getButtonStyle = (variant) => ({
161
- ...buttonBase,
162
- backgroundColor: variant === 'primary' ? '#007bff' : '#6c757d'
163
- });
164
- ```
165
-
166
- ### Conditional Styles
167
-
168
- Use ternary operators for conditional styles:
169
-
170
- ```javascript
171
- export default {
172
- button: {
173
- backgroundColor: isActive ? '#007bff' : '#6c757d',
174
- opacity: isDisabled ? 0.5 : 1,
175
- }
176
- };
177
- ```
178
-
179
- ## Next Steps
180
-
181
- - Explore [Styled Components](../styled-components/) for CSS-in-JS with more features
182
- - Check out [Emotion](../emotion-example/) for similar CSS-in-JS approach (coming soon)
183
- - Learn about [CSS Modules](../css-modules/) for scoped CSS (coming soon)
@@ -1,28 +0,0 @@
1
- {
2
- "name": "bootstrap-example",
3
- "version": "1.0.0",
4
- "main": "index.js",
5
- "scripts": {
6
- "build": "npm run compile && vite build",
7
- "dev": "vite dev",
8
- "preview": "vite preview",
9
- "compile": "babel src --out-dir build --extensions \".jsx,.js\" --out-file-extension .js"
10
- },
11
- "keywords": [],
12
- "author": "",
13
- "license": "ISC",
14
- "description": "Jac application: bootstrap-example",
15
- "type": "module",
16
- "devDependencies": {
17
- "@babel/cli": "^7.28.3",
18
- "@babel/core": "^7.28.5",
19
- "@babel/preset-env": "^7.28.5",
20
- "@babel/preset-react": "^7.28.5",
21
- "vite": "^6.4.1"
22
- },
23
- "dependencies": {
24
- "react": "^19.2.0",
25
- "react-dom": "^19.2.0",
26
- "react-router-dom": "^6.30.1"
27
- }
28
- }
@@ -1,100 +0,0 @@
1
- // Style objects for the counter app
2
- const countDisplay = {
3
- fontSize: "3.75rem",
4
- fontWeight: "bold",
5
- transition: "color 0.3s ease"
6
- };
7
-
8
- const button = {
9
- color: "#ffffff",
10
- fontWeight: "bold",
11
- padding: "0.75rem 1.5rem",
12
- borderRadius: "0.5rem",
13
- boxShadow: "0 10px 15px -3px rgba(0, 0, 0, 0.1)",
14
- transition: "all 0.2s ease",
15
- fontSize: "1.25rem",
16
- border: "none",
17
- cursor: "pointer"
18
- };
19
-
20
- export default {
21
- container: {
22
- minHeight: "100vh",
23
- background: "linear-gradient(to bottom right, #dbeafe, #e0e7ff)",
24
- display: "flex",
25
- alignItems: "center",
26
- justifyContent: "center",
27
- padding: "1rem"
28
- },
29
- card: {
30
- backgroundColor: "#ffffff",
31
- borderRadius: "1rem",
32
- boxShadow: "0 25px 50px -12px rgba(0, 0, 0, 0.25)",
33
- padding: "2rem",
34
- maxWidth: "28rem",
35
- width: "100%"
36
- },
37
- title: {
38
- fontSize: "1.875rem",
39
- fontWeight: "bold",
40
- color: "#1f2937",
41
- textAlign: "center",
42
- marginBottom: "1.5rem"
43
- },
44
- divider: {
45
- height: "1px",
46
- background: "linear-gradient(to right, transparent, #d1d5db, transparent)",
47
- marginBottom: "1.5rem"
48
- },
49
- counterSection: {
50
- textAlign: "center",
51
- marginBottom: "2rem"
52
- },
53
- label: {
54
- fontSize: "0.875rem",
55
- fontWeight: "600",
56
- color: "#4b5563",
57
- marginBottom: "0.5rem",
58
- textTransform: "uppercase",
59
- letterSpacing: "0.05em"
60
- },
61
- countDisplay: countDisplay,
62
- countDisplayZero: {
63
- ...countDisplay,
64
- color: "#1f2937"
65
- },
66
- countDisplayPositive: {
67
- ...countDisplay,
68
- color: "#16a34a"
69
- },
70
- countDisplayNegative: {
71
- ...countDisplay,
72
- color: "#dc2626"
73
- },
74
- buttonGroup: {
75
- display: "flex",
76
- justifyContent: "center",
77
- alignItems: "center",
78
- gap: "1rem",
79
- marginBottom: "1.5rem"
80
- },
81
- button: button,
82
- buttonDecrement: {
83
- ...button,
84
- backgroundColor: "#ef4444"
85
- },
86
- buttonReset: {
87
- ...button,
88
- backgroundColor: "#6b7280"
89
- },
90
- buttonIncrement: {
91
- ...button,
92
- backgroundColor: "#22c55e"
93
- },
94
- hint: {
95
- textAlign: "center",
96
- fontSize: "0.875rem",
97
- color: "#6b7280",
98
- fontStyle: "italic"
99
- }
100
- };
@@ -1,27 +0,0 @@
1
-
2
- import { defineConfig } from "vite";
3
- import path from "path";
4
- import { fileURLToPath } from "url";
5
-
6
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
7
-
8
- export default defineConfig({
9
- root: ".", // base folder
10
- build: {
11
- rollupOptions: {
12
- input: "build/main.js", // your compiled entry file
13
- output: {
14
- entryFileNames: "client.[hash].js", // name of the final js file
15
- assetFileNames: "[name].[ext]",
16
- },
17
- },
18
- outDir: "dist", // final bundled output
19
- emptyOutDir: true,
20
- },
21
- publicDir: false,
22
- resolve: {
23
- alias: {
24
- "@jac-client/utils": path.resolve(__dirname, "src/client_runtime.js"),
25
- },
26
- },
27
- });
@@ -1,9 +0,0 @@
1
-
2
- {
3
- "presets": [[
4
- "@babel/preset-env",
5
- {
6
- "modules": false
7
- }
8
- ], "@babel/preset-react"]
9
- }
@@ -1,16 +0,0 @@
1
- # my-test-app
2
-
3
- ## Running Jac Code
4
-
5
- make sure node modules are installed:
6
- ```bash
7
- npm install
8
- ```
9
-
10
- To run your Jac code, use the Jac CLI:
11
-
12
- ```bash
13
- jac serve app.jac
14
- ```
15
-
16
- Happy coding with Jac!
@@ -1,32 +0,0 @@
1
- {
2
- "name": "my-test-app",
3
- "version": "1.0.0",
4
- "main": "index.js",
5
- "scripts": {
6
- "build": "npm run compile && vite build",
7
- "dev": "vite dev",
8
- "preview": "vite preview",
9
- "compile": "babel src --out-dir build --extensions \".jsx,.js\" --out-file-extension .js"
10
- },
11
- "keywords": [],
12
- "author": "",
13
- "license": "ISC",
14
- "description": "Jac application: my-test-app",
15
- "type": "module",
16
- "devDependencies": {
17
- "@babel/cli": "^7.28.3",
18
- "@babel/core": "^7.28.5",
19
- "@babel/preset-env": "^7.28.5",
20
- "@babel/preset-react": "^7.28.5",
21
- "vite": "^6.4.1"
22
- },
23
- "dependencies": {
24
- "@emotion/react": "^11.14.0",
25
- "@emotion/styled": "^11.14.1",
26
- "@mui/icons-material": "^7.3.5",
27
- "@mui/material": "^7.3.5",
28
- "react": "^19.2.0",
29
- "react-dom": "^19.2.0",
30
- "react-router-dom": "^6.30.1"
31
- }
32
- }
@@ -1,27 +0,0 @@
1
-
2
- import { defineConfig } from "vite";
3
- import path from "path";
4
- import { fileURLToPath } from "url";
5
-
6
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
7
-
8
- export default defineConfig({
9
- root: ".", // base folder
10
- build: {
11
- rollupOptions: {
12
- input: "build/main.js", // your compiled entry file
13
- output: {
14
- entryFileNames: "client.[hash].js", // name of the final js file
15
- assetFileNames: "[name].[ext]",
16
- },
17
- },
18
- outDir: "dist", // final bundled output
19
- emptyOutDir: true,
20
- },
21
- publicDir: false,
22
- resolve: {
23
- alias: {
24
- "@jac-client/utils": path.resolve(__dirname, "src/client_runtime.js"),
25
- },
26
- },
27
- });
@@ -1,9 +0,0 @@
1
-
2
- {
3
- "presets": [[
4
- "@babel/preset-env",
5
- {
6
- "modules": false
7
- }
8
- ], "@babel/preset-react"]
9
- }
@@ -1,16 +0,0 @@
1
- # my-test-app
2
-
3
- ## Running Jac Code
4
-
5
- make sure node modules are installed:
6
- ```bash
7
- npm install
8
- ```
9
-
10
- To run your Jac code, use the Jac CLI:
11
-
12
- ```bash
13
- jac serve app.jac
14
- ```
15
-
16
- Happy coding with Jac!
@@ -1,28 +0,0 @@
1
- {
2
- "name": "my-test-app",
3
- "version": "1.0.0",
4
- "main": "index.js",
5
- "scripts": {
6
- "build": "npm run compile && vite build",
7
- "dev": "vite dev",
8
- "preview": "vite preview",
9
- "compile": "babel src --out-dir build --extensions \".jsx,.js\" --out-file-extension .js"
10
- },
11
- "keywords": [],
12
- "author": "",
13
- "license": "ISC",
14
- "description": "Jac application: my-test-app",
15
- "type": "module",
16
- "devDependencies": {
17
- "vite": "^6.4.1",
18
- "@babel/cli": "^7.28.3",
19
- "@babel/core": "^7.28.5",
20
- "@babel/preset-env": "^7.28.5",
21
- "@babel/preset-react": "^7.28.5"
22
- },
23
- "dependencies": {
24
- "react": "^19.2.0",
25
- "react-dom": "^19.2.0",
26
- "react-router-dom": "^6.30.1"
27
- }
28
- }
@@ -1,111 +0,0 @@
1
- .container {
2
- display: flex;
3
- justify-content: center;
4
- align-items: center;
5
- min-height: 100vh;
6
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
7
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
8
- }
9
-
10
- .card {
11
- background: white;
12
- border-radius: 20px;
13
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
14
- padding: 40px;
15
- min-width: 400px;
16
- text-align: center;
17
- }
18
-
19
- .title {
20
- font-size: 2rem;
21
- color: #667eea;
22
- margin: 0 0 10px 0;
23
- font-weight: 600;
24
- }
25
-
26
- .divider {
27
- height: 2px;
28
- background: linear-gradient(90deg, transparent, #667eea, transparent);
29
- margin: 20px 0;
30
- }
31
-
32
- .counterSection {
33
- padding: 30px 0;
34
- }
35
-
36
- .label {
37
- font-size: 1.2rem;
38
- color: #666;
39
- margin-bottom: 10px;
40
- }
41
-
42
- .countDisplay {
43
- font-size: 5rem;
44
- font-weight: bold;
45
- margin: 20px 0;
46
- transition: color 0.3s ease;
47
- }
48
-
49
- .positive {
50
- color: #4caf50;
51
- }
52
-
53
- .negative {
54
- color: #f44336;
55
- }
56
-
57
- .zero {
58
- color: #333;
59
- }
60
-
61
- .buttonGroup {
62
- display: flex;
63
- justify-content: space-around;
64
- gap: 15px;
65
- margin-top: 30px;
66
- }
67
-
68
- .btn {
69
- border: none;
70
- border-radius: 50%;
71
- width: 70px;
72
- height: 70px;
73
- font-size: 1.5rem;
74
- cursor: pointer;
75
- transition: all 0.3s ease;
76
- display: flex;
77
- align-items: center;
78
- justify-content: center;
79
- font-weight: bold;
80
- box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
81
- }
82
-
83
- .btn:hover {
84
- transform: translateY(-3px);
85
- box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
86
- }
87
-
88
- .btn:active {
89
- transform: translateY(0);
90
- }
91
-
92
- .btnDecrement {
93
- background: linear-gradient(135deg, #f44336, #e91e63);
94
- color: white;
95
- }
96
-
97
- .btnReset {
98
- background: linear-gradient(135deg, #2196f3, #00bcd4);
99
- color: white;
100
- }
101
-
102
- .btnIncrement {
103
- background: linear-gradient(135deg, #4caf50, #8bc34a);
104
- color: white;
105
- }
106
-
107
- .hint {
108
- margin-top: 20px;
109
- font-size: 0.9rem;
110
- color: #999;
111
- }
@@ -1,27 +0,0 @@
1
-
2
- import { defineConfig } from "vite";
3
- import path from "path";
4
- import { fileURLToPath } from "url";
5
-
6
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
7
-
8
- export default defineConfig({
9
- root: ".", // base folder
10
- build: {
11
- rollupOptions: {
12
- input: "build/main.js", // your compiled entry file
13
- output: {
14
- entryFileNames: "client.[hash].js", // name of the final js file
15
- assetFileNames: "[name].[ext]",
16
- },
17
- },
18
- outDir: "dist", // final bundled output
19
- emptyOutDir: true,
20
- },
21
- publicDir: false,
22
- resolve: {
23
- alias: {
24
- "@jac-client/utils": path.resolve(__dirname, "src/client_runtime.js"),
25
- },
26
- },
27
- });
@@ -1,9 +0,0 @@
1
-
2
- {
3
- "presets": [[
4
- "@babel/preset-env",
5
- {
6
- "modules": false
7
- }
8
- ], "@babel/preset-react"]
9
- }
@@ -1,16 +0,0 @@
1
- # sass-example
2
-
3
- ## Running Jac Code
4
-
5
- make sure node modules are installed:
6
- ```bash
7
- npm install
8
- ```
9
-
10
- To run your Jac code, use the Jac CLI:
11
-
12
- ```bash
13
- jac serve app.jac
14
- ```
15
-
16
- Happy coding with Jac!
@@ -1,29 +0,0 @@
1
- {
2
- "name": "sass-example",
3
- "version": "1.0.0",
4
- "main": "index.js",
5
- "scripts": {
6
- "build": "npm run compile && vite build",
7
- "dev": "vite dev",
8
- "preview": "vite preview",
9
- "compile": "babel src --out-dir build --extensions \".jsx,.js\" --out-file-extension .js"
10
- },
11
- "keywords": [],
12
- "author": "",
13
- "license": "ISC",
14
- "description": "Jac application: sass-example",
15
- "type": "module",
16
- "devDependencies": {
17
- "vite": "^6.4.1",
18
- "@babel/cli": "^7.28.3",
19
- "@babel/core": "^7.28.5",
20
- "@babel/preset-env": "^7.28.5",
21
- "@babel/preset-react": "^7.28.5",
22
- "sass": "^1.77.8"
23
- },
24
- "dependencies": {
25
- "react": "^19.2.0",
26
- "react-dom": "^19.2.0",
27
- "react-router-dom": "^6.30.1"
28
- }
29
- }