@adukiorg/anza 0.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 (349) hide show
  1. package/CHANGELOG.md +137 -0
  2. package/README.md +215 -0
  3. package/bin/anza.js +63 -0
  4. package/bin/create.js +150 -0
  5. package/importmap.json +72 -0
  6. package/package.json +100 -0
  7. package/src/core/animations/index.js +55 -0
  8. package/src/core/animations/play.js +111 -0
  9. package/src/core/animations/registry.js +54 -0
  10. package/src/core/animations/scroll.js +50 -0
  11. package/src/core/animations/tokens.js +58 -0
  12. package/src/core/animations/usage.md +301 -0
  13. package/src/core/animations/waapi.js +86 -0
  14. package/src/core/api/cache.js +120 -0
  15. package/src/core/api/caches/glob.js +24 -0
  16. package/src/core/api/caches/index.js +118 -0
  17. package/src/core/api/events/index.js +75 -0
  18. package/src/core/api/fetch.js +99 -0
  19. package/src/core/api/index.js +158 -0
  20. package/src/core/api/pipeline.js +98 -0
  21. package/src/core/api/plan.md +209 -0
  22. package/src/core/api/prefixes/index.js +66 -0
  23. package/src/core/api/retry.js +69 -0
  24. package/src/core/api/stream.js +127 -0
  25. package/src/core/api/upload.js +180 -0
  26. package/src/core/api/usage.md +206 -0
  27. package/src/core/events/bus.js +38 -0
  28. package/src/core/events/delegate.js +79 -0
  29. package/src/core/events/index.js +26 -0
  30. package/src/core/events/listen.js +50 -0
  31. package/src/core/events/missing.md +103 -0
  32. package/src/core/events/once.js +49 -0
  33. package/src/core/events/plan.md +177 -0
  34. package/src/core/events/types/index.js +34 -0
  35. package/src/core/events/usage.md +107 -0
  36. package/src/core/offline/bridge.js +51 -0
  37. package/src/core/offline/clock.js +100 -0
  38. package/src/core/offline/connectivity.js +116 -0
  39. package/src/core/offline/index.js +41 -0
  40. package/src/core/offline/missing.md +89 -0
  41. package/src/core/offline/plan.md +143 -0
  42. package/src/core/offline/queue.js +168 -0
  43. package/src/core/offline/state.js +18 -0
  44. package/src/core/offline/sync.js +106 -0
  45. package/src/core/offline/usage.md +273 -0
  46. package/src/core/platform/guard.js +104 -0
  47. package/src/core/platform/index.js +42 -0
  48. package/src/core/platform/missing.md +119 -0
  49. package/src/core/platform/platform.d.ts +88 -0
  50. package/src/core/platform/polyfills/anchor.js +79 -0
  51. package/src/core/platform/polyfills/navigation.js +142 -0
  52. package/src/core/platform/polyfills/popover.js +142 -0
  53. package/src/core/platform/polyfills/scheduler.js +194 -0
  54. package/src/core/platform/polyfills/shadow.js +35 -0
  55. package/src/core/platform/polyfills/urlpattern.js +119 -0
  56. package/src/core/platform/supports.js +186 -0
  57. package/src/core/platform/usage.md +287 -0
  58. package/src/core/router/cache.js +95 -0
  59. package/src/core/router/container.js +146 -0
  60. package/src/core/router/handler.js +52 -0
  61. package/src/core/router/history.js +120 -0
  62. package/src/core/router/index.js +158 -0
  63. package/src/core/router/intercept.js +376 -0
  64. package/src/core/router/match.js +145 -0
  65. package/src/core/router/missing.md +716 -0
  66. package/src/core/router/outlet.js +139 -0
  67. package/src/core/router/plan.md +370 -0
  68. package/src/core/router/sync/index.js +16 -0
  69. package/src/core/router/sync/tab.js +115 -0
  70. package/src/core/router/sync/transport.js +139 -0
  71. package/src/core/router/transitions.js +59 -0
  72. package/src/core/router/usage.md +773 -0
  73. package/src/core/security/crypto.js +159 -0
  74. package/src/core/security/index.js +49 -0
  75. package/src/core/security/missing.md +97 -0
  76. package/src/core/security/permissions.js +64 -0
  77. package/src/core/security/sanitize.js +100 -0
  78. package/src/core/security/usage.md +283 -0
  79. package/src/core/state/derived.js +117 -0
  80. package/src/core/state/index.js +23 -0
  81. package/src/core/state/missing.md +165 -0
  82. package/src/core/state/persist.js +284 -0
  83. package/src/core/state/store.js +308 -0
  84. package/src/core/state/sync.js +46 -0
  85. package/src/core/state/usage.md +440 -0
  86. package/src/core/storage/cache.js +83 -0
  87. package/src/core/storage/idb.js +196 -0
  88. package/src/core/storage/index.js +373 -0
  89. package/src/core/storage/lru.js +107 -0
  90. package/src/core/storage/missing.md +165 -0
  91. package/src/core/storage/opfs.js +190 -0
  92. package/src/core/storage/plan.md +69 -0
  93. package/src/core/storage/quota.js +69 -0
  94. package/src/core/storage/usage.md +226 -0
  95. package/src/core/ui/base.js +50 -0
  96. package/src/core/ui/define/container.js +82 -0
  97. package/src/core/ui/define/define.js +12 -0
  98. package/src/core/ui/define/element.js +390 -0
  99. package/src/core/ui/define/index.js +9 -0
  100. package/src/core/ui/define/orchestrator.js +105 -0
  101. package/src/core/ui/define/proxy.js +644 -0
  102. package/src/core/ui/define/state.js +6 -0
  103. package/src/core/ui/define/utils.js +134 -0
  104. package/src/core/ui/implementation.md +170 -0
  105. package/src/core/ui/index.js +41 -0
  106. package/src/core/ui/observe.js +117 -0
  107. package/src/core/ui/plan.md +510 -0
  108. package/src/core/ui/schedule.js +60 -0
  109. package/src/core/ui/template.js +37 -0
  110. package/src/core/ui/transitions.js +37 -0
  111. package/src/core/ui/ui.types.md +890 -0
  112. package/src/core/ui/usage.md +1124 -0
  113. package/src/core/ui/watch.md +346 -0
  114. package/src/core/workers/broadcast.js +138 -0
  115. package/src/core/workers/dedicated.js +153 -0
  116. package/src/core/workers/index.js +169 -0
  117. package/src/core/workers/locks.js +160 -0
  118. package/src/core/workers/offscreen.js +166 -0
  119. package/src/core/workers/plan.md +381 -0
  120. package/src/core/workers/pool.js +267 -0
  121. package/src/core/workers/shared.js +137 -0
  122. package/src/core/workers/usage.md +622 -0
  123. package/src/elements/base.js +12 -0
  124. package/src/elements/data/card/index.html +9 -0
  125. package/src/elements/data/card/index.js +19 -0
  126. package/src/elements/data/card/index.tags.json +1 -0
  127. package/src/elements/data/card/style.css +46 -0
  128. package/src/elements/data/chart/index.html +1 -0
  129. package/src/elements/data/chart/index.js +143 -0
  130. package/src/elements/data/chart/index.tags.json +1 -0
  131. package/src/elements/data/chart/style.css +13 -0
  132. package/src/elements/data/list/index.html +3 -0
  133. package/src/elements/data/list/index.js +19 -0
  134. package/src/elements/data/list/index.tags.json +1 -0
  135. package/src/elements/data/list/style.css +39 -0
  136. package/src/elements/data/stat/index.html +9 -0
  137. package/src/elements/data/stat/index.js +19 -0
  138. package/src/elements/data/stat/index.tags.json +1 -0
  139. package/src/elements/data/stat/style.css +50 -0
  140. package/src/elements/data/table/index.html +1 -0
  141. package/src/elements/data/table/index.js +16 -0
  142. package/src/elements/data/table/index.tags.json +1 -0
  143. package/src/elements/data/table/style.css +50 -0
  144. package/src/elements/feedback/alert/index.html +11 -0
  145. package/src/elements/feedback/alert/index.js +28 -0
  146. package/src/elements/feedback/alert/index.tags.json +1 -0
  147. package/src/elements/feedback/alert/style.css +75 -0
  148. package/src/elements/feedback/empty/index.html +13 -0
  149. package/src/elements/feedback/empty/index.js +34 -0
  150. package/src/elements/feedback/empty/index.tags.json +1 -0
  151. package/src/elements/feedback/empty/style.css +45 -0
  152. package/src/elements/feedback/progress/index.html +7 -0
  153. package/src/elements/feedback/progress/index.js +46 -0
  154. package/src/elements/feedback/progress/index.tags.json +1 -0
  155. package/src/elements/feedback/progress/style.css +36 -0
  156. package/src/elements/feedback/skeleton/index.html +1 -0
  157. package/src/elements/feedback/skeleton/index.js +78 -0
  158. package/src/elements/feedback/skeleton/index.tags.json +1 -0
  159. package/src/elements/feedback/skeleton/style.css +28 -0
  160. package/src/elements/feedback/toast/index.html +3 -0
  161. package/src/elements/feedback/toast/index.js +65 -0
  162. package/src/elements/feedback/toast/index.tags.json +1 -0
  163. package/src/elements/feedback/toast/style.css +36 -0
  164. package/src/elements/forms/checkbox/index.html +7 -0
  165. package/src/elements/forms/checkbox/index.js +104 -0
  166. package/src/elements/forms/checkbox/index.tags.json +1 -0
  167. package/src/elements/forms/checkbox/style.css +86 -0
  168. package/src/elements/forms/field/index.html +13 -0
  169. package/src/elements/forms/field/index.js +42 -0
  170. package/src/elements/forms/field/index.tags.json +1 -0
  171. package/src/elements/forms/field/style.css +42 -0
  172. package/src/elements/forms/form/index.html +3 -0
  173. package/src/elements/forms/form/index.js +122 -0
  174. package/src/elements/forms/form/index.tags.json +1 -0
  175. package/src/elements/forms/form/style.css +11 -0
  176. package/src/elements/forms/input/index.html +4 -0
  177. package/src/elements/forms/input/index.js +103 -0
  178. package/src/elements/forms/input/index.tags.json +1 -0
  179. package/src/elements/forms/input/style.css +39 -0
  180. package/src/elements/forms/radio/index.html +4 -0
  181. package/src/elements/forms/radio/index.js +109 -0
  182. package/src/elements/forms/radio/index.tags.json +1 -0
  183. package/src/elements/forms/radio/style.css +65 -0
  184. package/src/elements/forms/select/index.html +9 -0
  185. package/src/elements/forms/select/index.js +114 -0
  186. package/src/elements/forms/select/index.tags.json +1 -0
  187. package/src/elements/forms/select/style.css +95 -0
  188. package/src/elements/forms/textarea/index.html +4 -0
  189. package/src/elements/forms/textarea/index.js +115 -0
  190. package/src/elements/forms/textarea/index.tags.json +1 -0
  191. package/src/elements/forms/textarea/style.css +46 -0
  192. package/src/elements/forms/toggle/index.html +4 -0
  193. package/src/elements/forms/toggle/index.js +89 -0
  194. package/src/elements/forms/toggle/index.tags.json +1 -0
  195. package/src/elements/forms/toggle/style.css +63 -0
  196. package/src/elements/forms/upload/index.html +13 -0
  197. package/src/elements/forms/upload/index.js +120 -0
  198. package/src/elements/forms/upload/index.tags.json +1 -0
  199. package/src/elements/forms/upload/style.css +61 -0
  200. package/src/elements/index.js +71 -0
  201. package/src/elements/layout/app/index.html +7 -0
  202. package/src/elements/layout/app/index.js +16 -0
  203. package/src/elements/layout/app/index.tags.json +1 -0
  204. package/src/elements/layout/app/style.css +41 -0
  205. package/src/elements/layout/grid/index.html +3 -0
  206. package/src/elements/layout/grid/index.js +41 -0
  207. package/src/elements/layout/grid/index.tags.json +1 -0
  208. package/src/elements/layout/grid/style.css +12 -0
  209. package/src/elements/layout/header/index.html +8 -0
  210. package/src/elements/layout/header/index.js +16 -0
  211. package/src/elements/layout/header/index.tags.json +1 -0
  212. package/src/elements/layout/header/style.css +28 -0
  213. package/src/elements/layout/scroll/index.html +3 -0
  214. package/src/elements/layout/scroll/index.js +19 -0
  215. package/src/elements/layout/scroll/index.tags.json +1 -0
  216. package/src/elements/layout/scroll/style.css +24 -0
  217. package/src/elements/layout/sidebar/index.html +3 -0
  218. package/src/elements/layout/sidebar/index.js +24 -0
  219. package/src/elements/layout/sidebar/index.tags.json +1 -0
  220. package/src/elements/layout/sidebar/style.css +30 -0
  221. package/src/elements/layout/split/index.html +3 -0
  222. package/src/elements/layout/split/index.js +18 -0
  223. package/src/elements/layout/split/index.tags.json +1 -0
  224. package/src/elements/layout/split/style.css +28 -0
  225. package/src/elements/layout/stack/index.html +3 -0
  226. package/src/elements/layout/stack/index.js +31 -0
  227. package/src/elements/layout/stack/index.tags.json +1 -0
  228. package/src/elements/layout/stack/style.css +15 -0
  229. package/src/elements/layout/surface/index.html +3 -0
  230. package/src/elements/layout/surface/index.js +19 -0
  231. package/src/elements/layout/surface/index.tags.json +1 -0
  232. package/src/elements/layout/surface/style.css +29 -0
  233. package/src/elements/navigation/breadcrumb/index.html +5 -0
  234. package/src/elements/navigation/breadcrumb/index.js +16 -0
  235. package/src/elements/navigation/breadcrumb/index.tags.json +1 -0
  236. package/src/elements/navigation/breadcrumb/style.css +36 -0
  237. package/src/elements/navigation/nav/index.html +3 -0
  238. package/src/elements/navigation/nav/index.js +24 -0
  239. package/src/elements/navigation/nav/index.tags.json +1 -0
  240. package/src/elements/navigation/nav/style.css +38 -0
  241. package/src/elements/navigation/pagination/index.html +3 -0
  242. package/src/elements/navigation/pagination/index.js +94 -0
  243. package/src/elements/navigation/pagination/index.tags.json +1 -0
  244. package/src/elements/navigation/pagination/style.css +39 -0
  245. package/src/elements/navigation/steps/index.html +6 -0
  246. package/src/elements/navigation/steps/index.js +64 -0
  247. package/src/elements/navigation/steps/index.tags.json +1 -0
  248. package/src/elements/navigation/steps/style.css +78 -0
  249. package/src/elements/navigation/tabs/index.html +6 -0
  250. package/src/elements/navigation/tabs/index.js +132 -0
  251. package/src/elements/navigation/tabs/index.tags.json +1 -0
  252. package/src/elements/navigation/tabs/style.css +52 -0
  253. package/src/elements/overlay/dialog/index.html +5 -0
  254. package/src/elements/overlay/dialog/index.js +57 -0
  255. package/src/elements/overlay/dialog/index.tags.json +1 -0
  256. package/src/elements/overlay/dialog/style.css +31 -0
  257. package/src/elements/overlay/drawer/index.html +3 -0
  258. package/src/elements/overlay/drawer/index.js +56 -0
  259. package/src/elements/overlay/drawer/index.tags.json +1 -0
  260. package/src/elements/overlay/drawer/style.css +48 -0
  261. package/src/elements/overlay/menu/index.html +3 -0
  262. package/src/elements/overlay/menu/index.js +107 -0
  263. package/src/elements/overlay/menu/index.tags.json +1 -0
  264. package/src/elements/overlay/menu/style.css +43 -0
  265. package/src/elements/overlay/popover/index.html +3 -0
  266. package/src/elements/overlay/popover/index.js +44 -0
  267. package/src/elements/overlay/popover/index.tags.json +1 -0
  268. package/src/elements/overlay/popover/style.css +21 -0
  269. package/src/elements/overlay/sheet/index.html +8 -0
  270. package/src/elements/overlay/sheet/index.js +105 -0
  271. package/src/elements/overlay/sheet/index.tags.json +1 -0
  272. package/src/elements/overlay/sheet/style.css +64 -0
  273. package/src/elements/overlay/tooltip/index.html +6 -0
  274. package/src/elements/overlay/tooltip/index.js +16 -0
  275. package/src/elements/overlay/tooltip/index.tags.json +1 -0
  276. package/src/elements/overlay/tooltip/style.css +41 -0
  277. package/src/elements/primitives/avatar/index.html +2 -0
  278. package/src/elements/primitives/avatar/index.js +79 -0
  279. package/src/elements/primitives/avatar/index.tags.json +1 -0
  280. package/src/elements/primitives/avatar/style.css +36 -0
  281. package/src/elements/primitives/badge/index.html +3 -0
  282. package/src/elements/primitives/badge/index.js +20 -0
  283. package/src/elements/primitives/badge/index.tags.json +1 -0
  284. package/src/elements/primitives/badge/style.css +67 -0
  285. package/src/elements/primitives/button/index.html +3 -0
  286. package/src/elements/primitives/button/index.js +61 -0
  287. package/src/elements/primitives/button/index.tags.json +1 -0
  288. package/src/elements/primitives/button/style.css +66 -0
  289. package/src/elements/primitives/divider/index.html +1 -0
  290. package/src/elements/primitives/divider/index.js +43 -0
  291. package/src/elements/primitives/divider/index.tags.json +1 -0
  292. package/src/elements/primitives/divider/style.css +39 -0
  293. package/src/elements/primitives/icon/index.html +3 -0
  294. package/src/elements/primitives/icon/index.js +66 -0
  295. package/src/elements/primitives/icon/index.tags.json +1 -0
  296. package/src/elements/primitives/icon/style.css +20 -0
  297. package/src/elements/primitives/link/index.html +3 -0
  298. package/src/elements/primitives/link/index.js +129 -0
  299. package/src/elements/primitives/link/index.tags.json +1 -0
  300. package/src/elements/primitives/link/style.css +40 -0
  301. package/src/elements/primitives/spinner/index.html +1 -0
  302. package/src/elements/primitives/spinner/index.js +62 -0
  303. package/src/elements/primitives/spinner/index.tags.json +1 -0
  304. package/src/elements/primitives/spinner/style.css +20 -0
  305. package/src/elements/primitives/text/index.html +1 -0
  306. package/src/elements/primitives/text/index.js +79 -0
  307. package/src/elements/primitives/text/index.tags.json +1 -0
  308. package/src/elements/primitives/text/style.css +25 -0
  309. package/src/index.js +23 -0
  310. package/src/styles/base.css +66 -0
  311. package/src/styles/index.css +10 -0
  312. package/src/styles/layers.css +9 -0
  313. package/src/styles/reset.css +66 -0
  314. package/src/sw/activate.js +51 -0
  315. package/src/sw/expire.js +47 -0
  316. package/src/sw/index.js +28 -0
  317. package/src/sw/install.js +35 -0
  318. package/src/sw/push.js +58 -0
  319. package/src/sw/queue.js +60 -0
  320. package/src/sw/routes.js +71 -0
  321. package/src/sw/strategies.js +247 -0
  322. package/src/sw/sync.js +80 -0
  323. package/src/tokens/index.css +26 -0
  324. package/src/tokens/primitives/colors.css +54 -0
  325. package/src/tokens/primitives/motion.css +34 -0
  326. package/src/tokens/primitives/radius.css +16 -0
  327. package/src/tokens/primitives/shadow.css +34 -0
  328. package/src/tokens/primitives/spacing.css +27 -0
  329. package/src/tokens/primitives/typography.css +46 -0
  330. package/src/tokens/primitives/zindex.css +18 -0
  331. package/src/tokens/registered/colors.css +133 -0
  332. package/src/tokens/registered/dimensions.css +31 -0
  333. package/src/tokens/semantic/components.css +125 -0
  334. package/src/tokens/semantic/contrast.css +33 -0
  335. package/src/tokens/semantic/dark.css +61 -0
  336. package/src/tokens/semantic/light.css +64 -0
  337. package/types/core/animations/index.d.ts +52 -0
  338. package/types/core/api/index.d.ts +68 -0
  339. package/types/core/events/index.d.ts +50 -0
  340. package/types/core/offline/index.d.ts +68 -0
  341. package/types/core/platform/index.d.ts +60 -0
  342. package/types/core/router/index.d.ts +203 -0
  343. package/types/core/security/index.d.ts +33 -0
  344. package/types/core/state/index.d.ts +68 -0
  345. package/types/core/storage/index.d.ts +40 -0
  346. package/types/core/ui/index.d.ts +446 -0
  347. package/types/core/workers/index.d.ts +221 -0
  348. package/types/elements/index.d.ts +150 -0
  349. package/types/index.d.ts +18 -0
@@ -0,0 +1,79 @@
1
+ /**
2
+ * src/elements/primitives/text/index.js
3
+ *
4
+ * Primitive Element: <ui-text>
5
+ * Typography primitive dynamically rendering semantic tag configurations
6
+ * and binding typography design scales.
7
+ *
8
+ * Source: doc 04 — Web Components §3, doc 05 — Native UI Primitives §3
9
+ */
10
+
11
+ import { ui } from '../../../core/ui/index.js';
12
+
13
+ ui.element('ui-text', {
14
+ style: './style.css',
15
+ template: './index.html',
16
+ props: {
17
+ as: { type: String, reflect: true, default: 'span' },
18
+ size: { type: String, reflect: true },
19
+ weight: { type: String, reflect: true },
20
+ color: { type: String, reflect: true },
21
+ family: { type: String, reflect: true },
22
+ block: { type: Boolean, reflect: true }
23
+ },
24
+ mount({ el }) {
25
+ el._update();
26
+ },
27
+ update({ el }) {
28
+ el._update();
29
+ },
30
+ methods: {
31
+ _update() {
32
+ const asAttr = this.as || 'span';
33
+ const root = this.shadowRoot.querySelector('#root');
34
+ const size = this.size;
35
+ const weight = this.weight;
36
+ const color = this.color;
37
+ const family = this.family;
38
+
39
+ // Dynamic tag swapping
40
+ if (root.tagName.toLowerCase() !== asAttr.toLowerCase()) {
41
+ const nextRoot = document.createElement(asAttr);
42
+ nextRoot.id = 'root';
43
+ nextRoot.part = 'text';
44
+ while (root.firstChild) {
45
+ nextRoot.appendChild(root.firstChild);
46
+ }
47
+ root.replaceWith(nextRoot);
48
+ }
49
+
50
+ // Size mappings
51
+ if (size) {
52
+ this.style.setProperty('--text-size', `var(--font-size-${size})`);
53
+ } else {
54
+ this.style.removeProperty('--text-size');
55
+ }
56
+
57
+ // Weight mappings
58
+ if (weight) {
59
+ this.style.setProperty('--text-weight', `var(--font-weight-${weight})`);
60
+ } else {
61
+ this.style.removeProperty('--text-weight');
62
+ }
63
+
64
+ // Color mappings
65
+ if (color) {
66
+ this.style.setProperty('--text-color', `var(--color-content-${color})`);
67
+ } else {
68
+ this.style.removeProperty('--text-color');
69
+ }
70
+
71
+ // Family mappings
72
+ if (family) {
73
+ this.style.setProperty('--text-family', `var(--font-family-${family})`);
74
+ } else {
75
+ this.style.removeProperty('--text-family');
76
+ }
77
+ }
78
+ }
79
+ }, import.meta.url);
@@ -0,0 +1 @@
1
+ {"version":1,"refs":[],"ids":["root"],"classes":[],"tags":["slot","span"],"compound":[],"attrs":["id","part"],"refTypes":{}}
@@ -0,0 +1,25 @@
1
+ /* src/elements/primitives/text/style.css */
2
+
3
+ :host {
4
+ display: inline;
5
+ /* Component Tokens — Semantic Reference Only */
6
+ --text-size: var(--font-size-base);
7
+ --text-weight: var(--font-weight-regular);
8
+ --text-family: var(--font-family-sans);
9
+ --text-height: var(--line-height-normal);
10
+ --text-color: var(--color-content-primary);
11
+ }
12
+
13
+ :host([block]) {
14
+ display: block;
15
+ }
16
+
17
+ #root {
18
+ font-size: var(--text-size);
19
+ font-weight: var(--text-weight);
20
+ font-family: var(--text-family);
21
+ line-height: var(--text-height);
22
+ color: var(--text-color);
23
+ margin: 0;
24
+ padding: 0;
25
+ }
package/src/index.js ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * src/index.js
3
+ *
4
+ * Root public API entry point for the "antigravity" npm package.
5
+ * Re-exports every core module and the elements registry.
6
+ *
7
+ * Usage (after npm install antigravity):
8
+ * import { ReactiveStore } from 'antigravity/state';
9
+ * import { api } from 'antigravity/api';
10
+ * import { animate } from 'antigravity/animations';
11
+ */
12
+
13
+ export * from './core/api/index.js';
14
+ export * from './core/state/index.js';
15
+ export * from './core/events/index.js';
16
+ export * from './core/router/index.js';
17
+ export * from './core/storage/index.js';
18
+ export * from './core/offline/index.js';
19
+ export * from './core/animations/index.js';
20
+ export * from './core/workers/index.js';
21
+ export * from './core/security/index.js';
22
+ export * from './core/ui/index.js';
23
+ export * from './core/platform/index.js';
@@ -0,0 +1,66 @@
1
+ /**
2
+ * styles/base.css
3
+ *
4
+ * Core base elements default styles in the "base" cascade layer.
5
+ * Sets root background, typographical scales, text selections, and focus outlines using tokens.
6
+ * Source: doc 3 §1.3, library2.md §Phase 1-C
7
+ */
8
+
9
+ @layer base {
10
+ :root {
11
+ font-family: var(--font-family-sans);
12
+ font-size: var(--font-size-base);
13
+ color-scheme: light dark;
14
+ }
15
+
16
+ body {
17
+ background-color: var(--color-surface-page);
18
+ color: var(--color-content-primary);
19
+ min-height: 100vh;
20
+ font-weight: var(--font-weight-regular);
21
+ line-height: var(--line-height-normal);
22
+ transition: background-color 220ms var(--ease-out), color 180ms var(--ease-out);
23
+ }
24
+
25
+ /* Typography Defaults */
26
+ h1, h2, h3, h4, h5, h6 {
27
+ font-family: var(--font-family-sans);
28
+ color: var(--color-content-primary);
29
+ font-weight: var(--font-weight-semibold);
30
+ line-height: var(--line-height-tight);
31
+ letter-spacing: var(--letter-spacing-tight);
32
+ }
33
+
34
+ h1 { font-size: var(--font-size-3xl); margin-bottom: var(--space-4); }
35
+ h2 { font-size: var(--font-size-2xl); margin-bottom: var(--space-3); }
36
+ h3 { font-size: var(--font-size-xl); margin-bottom: var(--space-2); }
37
+ h4 { font-size: var(--font-size-lg); }
38
+
39
+ p {
40
+ margin-bottom: var(--space-4);
41
+ color: var(--color-content-secondary);
42
+ }
43
+
44
+ a {
45
+ color: var(--color-content-link);
46
+ text-decoration: none;
47
+ transition: color var(--duration-fast) var(--ease-out);
48
+ }
49
+
50
+ a:hover {
51
+ color: var(--color-interactive-hover);
52
+ text-decoration: underline;
53
+ }
54
+
55
+ /* Selection highlight styles */
56
+ ::selection {
57
+ background-color: var(--color-interactive);
58
+ color: var(--color-content-inverse);
59
+ }
60
+
61
+ /* Custom high-contrast visual focus-ring */
62
+ :focus-visible {
63
+ outline: 2px solid var(--color-border-focus);
64
+ outline-offset: 2px;
65
+ }
66
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * styles/index.css
3
+ *
4
+ * Master entry stylesheet for cascade layer configurations and element resets.
5
+ * Source: doc 3 §1.3, library2.md §Phase 1-C
6
+ */
7
+
8
+ @import './layers.css';
9
+ @import './reset.css';
10
+ @import './base.css';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * styles/layers.css
3
+ *
4
+ * Establishes the explicit order of CSS cascade layers.
5
+ * Lower priority layers sit earlier in the declaration list.
6
+ * Source: doc 3 §1.3
7
+ */
8
+
9
+ @layer reset, tokens, base, components, layouts, utilities, themes, overrides;
@@ -0,0 +1,66 @@
1
+ /**
2
+ * styles/reset.css
3
+ *
4
+ * CSS Normalization and Reset inside the "reset" cascade layer.
5
+ * Strips default browser margins, sets box-sizing, and normalizes block displays.
6
+ * Source: doc 3 §1.3, library2.md §Phase 1-C
7
+ */
8
+
9
+ @layer reset {
10
+ *,
11
+ *::before,
12
+ *::after {
13
+ box-sizing: border-box;
14
+ margin: 0;
15
+ padding: 0;
16
+ }
17
+
18
+ html,
19
+ body {
20
+ height: 100%;
21
+ -webkit-text-size-adjust: 100%;
22
+ }
23
+
24
+ body {
25
+ line-height: 1.5;
26
+ -webkit-font-smoothing: antialiased;
27
+ -moz-osx-font-smoothing: grayscale;
28
+ }
29
+
30
+ /* Block displays for visual elements */
31
+ img,
32
+ picture,
33
+ video,
34
+ canvas,
35
+ svg {
36
+ display: block;
37
+ max-width: 100%;
38
+ }
39
+
40
+ /* Inherit form element typography */
41
+ input,
42
+ button,
43
+ textarea,
44
+ select {
45
+ font: inherit;
46
+ color: inherit;
47
+ background: none;
48
+ border: none;
49
+ }
50
+
51
+ button,
52
+ [role="button"] {
53
+ cursor: pointer;
54
+ }
55
+
56
+ /* Reset lists */
57
+ ol,
58
+ ul {
59
+ list-style: none;
60
+ }
61
+
62
+ /* Accessible media wrapper */
63
+ [hidden] {
64
+ display: none !important;
65
+ }
66
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * src/sw/activate.js
3
+ *
4
+ * Activation Lifecycle Helpers.
5
+ * Coordinates stale cache eviction pruning, controlled browsing context claims,
6
+ * and standard navigation preloads.
7
+ *
8
+ * Source: doc 13 — Offline and Background §3
9
+ */
10
+
11
+ /**
12
+ * Prunes all cached storage buckets except for the active version and fallback cache.
13
+ */
14
+ export async function pruneStale(currentCacheName) {
15
+ try {
16
+ const keys = await caches.keys();
17
+ const whitelist = new Set([currentCacheName, 'platform-offline-fallback']);
18
+
19
+ for (const key of keys) {
20
+ if (!whitelist.has(key)) {
21
+ await caches.delete(key);
22
+ }
23
+ }
24
+ } catch (err) {
25
+ console.warn('Pruning stale caches failed:', err);
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Instructs the Service Worker to take immediate control of all controlled tabs.
31
+ */
32
+ export async function claim() {
33
+ if (typeof self !== 'undefined' && self.clients?.claim) {
34
+ await self.clients.claim();
35
+ }
36
+ }
37
+
38
+ /**
39
+ * Enables standard native Navigation Preload.
40
+ */
41
+ export async function enableNavPreload(registration) {
42
+ const targetReg = registration || (typeof self !== 'undefined' ? self.registration : null);
43
+
44
+ if (targetReg && targetReg.navigationPreload) {
45
+ try {
46
+ await targetReg.navigationPreload.enable();
47
+ } catch (err) {
48
+ console.warn('Failed to enable navigation preload:', err);
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * src/sw/expire.js
3
+ *
4
+ * Cache Expiration Pruner.
5
+ * Checks Cache API records, extracts custom x-expires-at response headers,
6
+ * and deletes expired cache records dynamically to conserve storage quota.
7
+ *
8
+ * Source: doc 13 — Offline and Background §3, doc 22 — Storage Architecture §2
9
+ */
10
+
11
+ /**
12
+ * Iterates over a specific cache, parsing expires headers and deleting expired entries.
13
+ */
14
+ export async function pruneExpired(cacheName) {
15
+ try {
16
+ const cache = await caches.open(cacheName);
17
+ const requests = await cache.keys();
18
+ const now = Date.now();
19
+
20
+ for (const request of requests) {
21
+ const response = await cache.match(request);
22
+ if (response) {
23
+ const expiresAtStr = response.headers.get('x-expires-at');
24
+ if (expiresAtStr) {
25
+ const expiresAt = parseInt(expiresAtStr, 10);
26
+ if (expiresAt && expiresAt < now) {
27
+ await cache.delete(request);
28
+ }
29
+ }
30
+ }
31
+ }
32
+ } catch (err) {
33
+ console.warn(`Prune expired failed for cache "${cacheName}":`, err);
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Sets up a periodic automatic pruning interval.
39
+ */
40
+ export function setupAutoPrune(cacheName, intervalMs = 60000) {
41
+ if (typeof setInterval !== 'undefined') {
42
+ return setInterval(() => {
43
+ pruneExpired(cacheName).catch(() => {});
44
+ }, intervalMs);
45
+ }
46
+ return null;
47
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * src/sw/index.js
3
+ *
4
+ * Public Service Worker entry point.
5
+ * Aggregates and re-exports all modular service worker strategies, URLPattern
6
+ * routing interceptors, TTL cache expiration pruners, install/activate lifecycle helpers,
7
+ * Background Sync task replay buffers, and Web Push notifications.
8
+ *
9
+ * Source: doc 13 — Offline and Background §3
10
+ */
11
+
12
+ export {
13
+ CacheFirst,
14
+ NetworkFirst,
15
+ StaleRevalidate,
16
+ CacheThenNetwork,
17
+ NetworkOnly,
18
+ CacheOnly,
19
+ OfflineFallback
20
+ } from './strategies.js';
21
+
22
+ export { router, Router } from './routes.js';
23
+ export { serializeRequest, deserializeRequest } from './queue.js';
24
+ export { pruneExpired, setupAutoPrune } from './expire.js';
25
+ export { precache, prefetchFallback } from './install.js';
26
+ export { pruneStale, claim, enableNavPreload } from './activate.js';
27
+ export { replayQueue, requeueFailed } from './sync.js';
28
+ export { subscribe, notify } from './push.js';
@@ -0,0 +1,35 @@
1
+ /**
2
+ * src/sw/install.js
3
+ *
4
+ * Installation Lifecycle Helpers.
5
+ * Handles precaching of core application shell resources and offline fallback
6
+ * pages during the Service Worker installation phase.
7
+ *
8
+ * Source: doc 13 — Offline and Background §3, §4
9
+ */
10
+
11
+ /**
12
+ * Pre-caches critical shell and script assets.
13
+ */
14
+ export async function precache(cacheName, urls) {
15
+ try {
16
+ const cache = await caches.open(cacheName);
17
+ await cache.addAll(urls);
18
+ } catch (err) {
19
+ console.error(`Precache failed for cache "${cacheName}":`, err);
20
+ throw err;
21
+ }
22
+ }
23
+
24
+ /**
25
+ * Explicitly pre-caches the offline fallback page document.
26
+ */
27
+ export async function prefetchFallback(fallbackUrl) {
28
+ try {
29
+ const cache = await caches.open('platform-offline-fallback');
30
+ await cache.add(fallbackUrl);
31
+ } catch (err) {
32
+ console.error(`Prefetch fallback failed for "${fallbackUrl}":`, err);
33
+ throw err;
34
+ }
35
+ }
package/src/sw/push.js ADDED
@@ -0,0 +1,58 @@
1
+ /**
2
+ * src/sw/push.js
3
+ *
4
+ * Web Push API Facade.
5
+ * Manages Web Push client subscriptions using standard VAPID credentials
6
+ * and encapsulates standard notification prompts.
7
+ *
8
+ * Source: doc 13 — Offline and Background §6
9
+ */
10
+
11
+ /**
12
+ * Decodes a base64 VAPID public key into a standard Uint8Array key.
13
+ */
14
+ function urlBase64ToUint8Array(base64String) {
15
+ const padding = '='.repeat((4 - (base64String.length % 4)) % 4);
16
+ const base64 = (base64String + padding)
17
+ .replace(/\-/g, '+')
18
+ .replace(/_/g, '/');
19
+
20
+ const rawData = atob(base64);
21
+ const outputArray = new Uint8Array(rawData.length);
22
+
23
+ for (let i = 0; i < rawData.length; ++i) {
24
+ outputArray[i] = rawData.charCodeAt(i);
25
+ }
26
+ return outputArray;
27
+ }
28
+
29
+ /**
30
+ * Registers a Web Push subscription.
31
+ */
32
+ export async function subscribe(registration, vapidKey) {
33
+ const activeReg = registration || (typeof self !== 'undefined' ? self.registration : null);
34
+
35
+ if (!activeReg || !activeReg.pushManager) {
36
+ throw new Error('Web Push subscriptions are not supported in this context.');
37
+ }
38
+
39
+ const keyBytes = typeof vapidKey === 'string'
40
+ ? urlBase64ToUint8Array(vapidKey)
41
+ : vapidKey;
42
+
43
+ return activeReg.pushManager.subscribe({
44
+ userVisibleOnly: true,
45
+ applicationServerKey: keyBytes
46
+ });
47
+ }
48
+
49
+ /**
50
+ * Triggers a standard visual Notification popup.
51
+ */
52
+ export async function notify(title, options = {}, registration) {
53
+ const activeReg = registration || (typeof self !== 'undefined' ? self.registration : null);
54
+
55
+ if (activeReg && activeReg.showNotification) {
56
+ return activeReg.showNotification(title, options);
57
+ }
58
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * src/sw/queue.js
3
+ *
4
+ * Request Serialization Utilities.
5
+ * Serializes standard browser Request objects into structured-cloneable,
6
+ * IndexedDB-friendly payloads and deserializes them back into standard Requests
7
+ * during background replay loops.
8
+ *
9
+ * Source: doc 13 — Offline and Background §5
10
+ */
11
+
12
+ /**
13
+ * Converts a standard Request into a serializable object.
14
+ */
15
+ export async function serializeRequest(request) {
16
+ const headers = {};
17
+ for (const [key, value] of request.headers.entries()) {
18
+ headers[key] = value;
19
+ }
20
+
21
+ const cloned = request.clone();
22
+ let body = null;
23
+
24
+ // GET and HEAD requests cannot hold bodies
25
+ if (request.method !== 'GET' && request.method !== 'HEAD') {
26
+ try {
27
+ body = await cloned.arrayBuffer();
28
+ } catch (err) {
29
+ console.warn('Unable to serialize request body:', err);
30
+ }
31
+ }
32
+
33
+ return {
34
+ url: request.url,
35
+ method: request.method,
36
+ headers,
37
+ body
38
+ };
39
+ }
40
+
41
+ /**
42
+ * Reconstructs a standard Request object from a serialized descriptor.
43
+ */
44
+ export function deserializeRequest(serialized) {
45
+ const options = {
46
+ method: serialized.method,
47
+ headers: new Headers(serialized.headers)
48
+ };
49
+
50
+ if (serialized.body) {
51
+ const isJson = options.headers.get('content-type')?.includes('application/json');
52
+ if (isJson && typeof serialized.body === 'object' && !(serialized.body instanceof ArrayBuffer) && !(serialized.body instanceof Blob)) {
53
+ options.body = JSON.stringify(serialized.body);
54
+ } else {
55
+ options.body = serialized.body;
56
+ }
57
+ }
58
+
59
+ return new Request(serialized.url, options);
60
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * src/sw/routes.js
3
+ *
4
+ * Service Worker Pattern Router.
5
+ * Implements URLPattern matching, intercepting incoming SW fetch events
6
+ * and routing them to their declared caching strategy synchronously.
7
+ *
8
+ * Source: doc 09 — Routing §3, doc 13 — Offline and Background §3
9
+ */
10
+
11
+ /**
12
+ * Normalizes an input pattern descriptor into a standard URLPattern instance.
13
+ */
14
+ function normalize(pattern) {
15
+ if (pattern instanceof URLPattern) {
16
+ return pattern;
17
+ }
18
+
19
+ if (typeof pattern === 'string') {
20
+ // Explicit wildcard string maps to match-all pathnames
21
+ if (pattern === '*') {
22
+ return new URLPattern({ pathname: '*' });
23
+ }
24
+ // Simple string route compiles to a pathname match
25
+ return new URLPattern({ pathname: pattern });
26
+ }
27
+
28
+ // Object-based pattern parameters
29
+ return new URLPattern(pattern);
30
+ }
31
+
32
+ export class Router {
33
+ constructor() {
34
+ this.routes = [];
35
+ }
36
+
37
+ /**
38
+ * Registers a URLPattern and a matching caching strategy.
39
+ */
40
+ register(pattern, strategy) {
41
+ this.routes.push({
42
+ pattern: normalize(pattern),
43
+ strategy
44
+ });
45
+ }
46
+
47
+ /**
48
+ * Handles an incoming fetch event, matching registered patterns sequentially
49
+ * and intercepting matches.
50
+ */
51
+ handle(event) {
52
+ const { request } = event;
53
+
54
+ for (const route of this.routes) {
55
+ if (route.pattern.test(request.url)) {
56
+ // Intercept synchronously in fetch event tick
57
+ event.respondWith(route.strategy.handle(request));
58
+ return true;
59
+ }
60
+ }
61
+
62
+ return false;
63
+ }
64
+ }
65
+
66
+ /**
67
+ * Factory wrapper to construct a Router instance.
68
+ */
69
+ export function router() {
70
+ return new Router();
71
+ }