From fc0080d4c8c5d2f645fd151ac4d6ceaf50e03024 Mon Sep 17 00:00:00 2001 From: Alexander Harding Date: Fri, 15 Nov 2024 11:01:58 -0600 Subject: [PATCH] more experiment --- package.json | 1 + pnpm-lock.yaml | 479 ++++++++++++++++-- src/features/post/new/PhotoPreview.tsx | 19 +- src/features/post/new/PostEditorRoot.tsx | 62 +-- src/features/post/new/photoPreview.module.css | 13 + .../post/new/postEditorRoot.module.css | 40 ++ tsconfig.json | 2 + vite.config.ts | 1 + 8 files changed, 526 insertions(+), 91 deletions(-) create mode 100644 src/features/post/new/photoPreview.module.css create mode 100644 src/features/post/new/postEditorRoot.module.css diff --git a/package.json b/package.json index ff3c01cf9e..a5e0e78624 100644 --- a/package.json +++ b/package.json @@ -156,6 +156,7 @@ "typescript-eslint": "^8.14.0", "vite": "^5.4.11", "vite-plugin-pwa": "^0.21.0", + "typescript-plugin-css-modules": "^5.1.0", "vite-css-modules": "^1.5.2", "vite-plugin-svgr": "^4.3.0", "vite-tsconfig-paths": "^5.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2222beda74..dcd808c763 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -283,13 +283,13 @@ importers: version: 0.7.39 '@vitejs/plugin-legacy': specifier: ^5.4.3 - version: 5.4.3(terser@5.36.0)(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0)) + version: 5.4.3(terser@5.36.0)(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)) '@vitejs/plugin-react': specifier: ^4.3.3 - version: 4.3.3(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0)) + version: 4.3.3(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)) '@wyw-in-js/vite': specifier: ^0.5.5 - version: 0.5.5(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0)) + version: 0.5.5(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)) babel-plugin-react-compiler: specifier: 0.0.0-experimental-19c7e06-20241113 version: 0.0.0-experimental-19c7e06-20241113 @@ -310,7 +310,7 @@ importers: version: 0.0.0-experimental-b01722d5-20241114(eslint@9.14.0) eslint-plugin-vitest: specifier: ^0.5.4 - version: 0.5.4(eslint@9.14.0)(typescript@5.6.3)(vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)(jsdom@25.0.1)(terser@5.36.0)) + version: 0.5.4(eslint@9.14.0)(typescript@5.6.3)(vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)(jsdom@25.0.1)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)) jsdom: specifier: ^25.0.1 version: 25.0.1 @@ -332,27 +332,33 @@ importers: typescript-eslint: specifier: ^8.14.0 version: 8.14.0(eslint@9.14.0)(typescript@5.6.3) + typescript-plugin-css-modules: + specifier: ^5.1.0 + version: 5.1.0(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))(typescript@5.6.3) vite: specifier: ^5.4.11 - version: 5.4.11(@types/node@22.9.0)(terser@5.36.0) + version: 5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) vite-css-modules: specifier: ^1.5.2 - version: 1.6.0(postcss@8.4.49)(rollup@2.79.2)(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0)) + version: 1.6.0(postcss@8.4.49)(rollup@2.79.2)(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)) vite-plugin-pwa: specifier: ^0.21.0 - version: 0.21.0(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.3.0) + version: 0.21.0(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.3.0) vite-plugin-svgr: specifier: ^4.3.0 - version: 4.3.0(rollup@2.79.2)(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0)) + version: 4.3.0(rollup@2.79.2)(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)) vite-tsconfig-paths: specifier: ^5.1.2 - version: 5.1.2(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0)) + version: 5.1.2(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)) vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)(jsdom@25.0.1)(terser@5.36.0) + version: 2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)(jsdom@25.0.1)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) packages: + '@adobe/css-tools@4.3.3': + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + '@aeharding/remark-lemmy-spoiler@2.0.0': resolution: {integrity: sha512-Kw2LDXIeNyV2Ks1QXKYISEdwn4ufPev5gb4RzoSNSEUb1iL6aQmOUQvcuA7ePzXChNe6bmerkvJ2KKYXYaLYlQ==} @@ -1436,6 +1442,88 @@ packages: '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + '@parcel/watcher-android-arm64@2.5.0': + resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.0': + resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.0': + resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.0': + resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.0': + resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.0': + resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.0': + resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.0': + resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.0': + resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.0': + resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.0': + resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.0': + resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.0': + resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.0': + resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==} + engines: {node: '>= 10.0.0'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1789,6 +1877,12 @@ packages: '@types/plist@3.0.5': resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} + '@types/postcss-modules-local-by-default@4.0.2': + resolution: {integrity: sha512-CtYCcD+L+trB3reJPny+bKWKMzPfxEyQpKIwit7kErnOexf5/faaGpkFy4I5AwbV4hp1sk7/aTg0tt0B67VkLQ==} + + '@types/postcss-modules-scope@3.0.4': + resolution: {integrity: sha512-//ygSisVq9kVI0sqx3UPLzWIMCmtSVrzdljtuaAEJtGoGnpjBikZ2sXO5MpH9SnWX9HRfXxHifDAXcQjupWnIQ==} + '@types/prompts@2.4.9': resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} @@ -2374,6 +2468,10 @@ packages: chevrotain@7.1.1: resolution: {integrity: sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -2569,6 +2667,9 @@ packages: cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + core-js-compat@3.39.0: resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} @@ -2764,6 +2865,11 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -2825,6 +2931,10 @@ packages: resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} engines: {node: '>=18'} + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} @@ -2872,6 +2982,10 @@ packages: resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -3544,9 +3658,17 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + immer@10.1.1: resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} + immutable@5.0.2: + resolution: {integrity: sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw==} + import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -3846,6 +3968,9 @@ packages: resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} engines: {node: '>= 0.4'} + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + is-whitespace@0.3.0: resolution: {integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==} engines: {node: '>=0.10.0'} @@ -4012,6 +4137,11 @@ packages: lemmy-js-client@0.20.0-alpha.18: resolution: {integrity: sha512-oZy8DboTWfUar4mPWpi7SYrOEjTBJxkvd1e6QaVwoA5UhqQV1WhxEYbzrpi/gXnEokaVQ0i5sjtL/Y2PHMO3MQ==} + less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} + engines: {node: '>=6'} + hasBin: true + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -4023,6 +4153,10 @@ packages: lighthouse-logger@1.4.2: resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -4067,6 +4201,9 @@ packages: lodash.assign@3.2.0: resolution: {integrity: sha512-/VVxzgGBmbphasTg51FrztxQJ/VgAUpol6zmJuSVSGcNg4g7FA4z7rQV8Ovr9V3vFBNWZhvKWHfpAytjTVUfFA==} + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.capitalize@4.2.1: resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} @@ -4167,6 +4304,10 @@ packages: magic-string@0.30.12: resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -4336,6 +4477,11 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} @@ -4453,6 +4599,11 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -4467,6 +4618,9 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} @@ -4654,6 +4808,10 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + parse-path@7.0.0: resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} @@ -4741,6 +4899,10 @@ packages: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -4763,6 +4925,18 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + postcss-modules-extract-imports@3.1.0: resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} engines: {node: ^10 || ^12 || >= 14} @@ -4858,6 +5032,9 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} @@ -5016,6 +5193,10 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} @@ -5126,6 +5307,9 @@ packages: reselect@5.1.1: resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} + reserved-words@0.1.2: + resolution: {integrity: sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -5223,9 +5407,17 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sass@1.81.0: + resolution: {integrity: sha512-Q4fOxRfhmv3sqCLoGfvrC9pRV8btc0UtqL9mN6Yrv6Qi9ScL55CVH1vlPP863ISLEEMNLLuu9P+enCeGHlnzhA==} + engines: {node: '>=14.0.0'} + hasBin: true + sax@1.1.4: resolution: {integrity: sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==} + sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -5485,6 +5677,10 @@ packages: stylis@4.3.4: resolution: {integrity: sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==} + stylus@0.62.0: + resolution: {integrity: sha512-v3YCf31atbwJQIMtPNX8hcQ+okD4NQaTuKGUWfII8eaqn+3otrbttGL1zSMZAAtiPsBztQnujVBugg/cXFUpyg==} + hasBin: true + superagent@8.1.2: resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} engines: {node: '>=6.4.0 <13 || >=14'} @@ -5667,6 +5863,10 @@ packages: typescript: optional: true + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -5733,6 +5933,11 @@ packages: typescript: optional: true + typescript-plugin-css-modules@5.1.0: + resolution: {integrity: sha512-6h+sLBa4l+XYSTn/31vZHd/1c3SvAbLpobY6FxDiUOHJQG1eD9Gh3eCs12+Eqc+TCOAdxcO+zAPvUq0jBfdciw==} + peerDependencies: + typescript: '>=4.0.0' + typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} @@ -6343,6 +6548,8 @@ packages: snapshots: + '@adobe/css-tools@4.3.3': {} + '@aeharding/remark-lemmy-spoiler@2.0.0': dependencies: '@types/mdast': 4.0.4 @@ -7741,6 +7948,67 @@ snapshots: '@one-ini/wasm@0.1.1': {} + '@parcel/watcher-android-arm64@2.5.0': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.0': + optional: true + + '@parcel/watcher-darwin-x64@2.5.0': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.0': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.0': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.0': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.0': + optional: true + + '@parcel/watcher-win32-arm64@2.5.0': + optional: true + + '@parcel/watcher-win32-ia32@2.5.0': + optional: true + + '@parcel/watcher-win32-x64@2.5.0': + optional: true + + '@parcel/watcher@2.5.0': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.0 + '@parcel/watcher-darwin-arm64': 2.5.0 + '@parcel/watcher-darwin-x64': 2.5.0 + '@parcel/watcher-freebsd-x64': 2.5.0 + '@parcel/watcher-linux-arm-glibc': 2.5.0 + '@parcel/watcher-linux-arm-musl': 2.5.0 + '@parcel/watcher-linux-arm64-glibc': 2.5.0 + '@parcel/watcher-linux-arm64-musl': 2.5.0 + '@parcel/watcher-linux-x64-glibc': 2.5.0 + '@parcel/watcher-linux-x64-musl': 2.5.0 + '@parcel/watcher-win32-arm64': 2.5.0 + '@parcel/watcher-win32-ia32': 2.5.0 + '@parcel/watcher-win32-x64': 2.5.0 + optional: true + '@pkgjs/parseargs@0.11.0': optional: true @@ -8125,6 +8393,14 @@ snapshots: '@types/node': 22.9.0 xmlbuilder: 15.1.1 + '@types/postcss-modules-local-by-default@4.0.2': + dependencies: + postcss: 8.4.49 + + '@types/postcss-modules-scope@3.0.4': + dependencies: + postcss: 8.4.49 + '@types/prompts@2.4.9': dependencies: '@types/node': 22.9.0 @@ -8296,7 +8572,7 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-legacy@5.4.3(terser@5.36.0)(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0))': + '@vitejs/plugin-legacy@5.4.3(terser@5.36.0)(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0))': dependencies: '@babel/core': 7.26.0 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) @@ -8307,18 +8583,18 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.36.0 - vite: 5.4.11(@types/node@22.9.0)(terser@5.36.0) + vite: 5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.3.3(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0))': + '@vitejs/plugin-react@4.3.3(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.11(@types/node@22.9.0)(terser@5.36.0) + vite: 5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) transitivePeerDependencies: - supports-color @@ -8329,13 +8605,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0))': + '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0))': dependencies: '@vitest/spy': 2.1.5 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.11(@types/node@22.9.0)(terser@5.36.0) + vite: 5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) '@vitest/pretty-format@2.1.5': dependencies: @@ -8398,11 +8674,11 @@ snapshots: - supports-color - typescript - '@wyw-in-js/vite@0.5.5(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0))': + '@wyw-in-js/vite@0.5.5(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0))': dependencies: '@wyw-in-js/shared': 0.5.5 '@wyw-in-js/transform': 0.5.5(typescript@5.6.3) - vite: 5.4.11(@types/node@22.9.0)(terser@5.36.0) + vite: 5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) transitivePeerDependencies: - supports-color - typescript @@ -8819,6 +9095,10 @@ snapshots: dependencies: regexp-to-ast: 0.5.0 + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 + chownr@1.1.4: {} chownr@2.0.0: {} @@ -9036,6 +9316,10 @@ snapshots: cookiejar@2.1.4: {} + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + core-js-compat@3.39.0: dependencies: browserslist: 4.24.2 @@ -9212,6 +9496,9 @@ snapshots: dequal@2.0.3: {} + detect-libc@1.0.3: + optional: true + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -9274,6 +9561,8 @@ snapshots: dependencies: type-fest: 4.26.1 + dotenv@16.4.5: {} + duplexer2@0.1.4: dependencies: readable-stream: 2.3.8 @@ -9313,6 +9602,11 @@ snapshots: env-paths@3.0.0: {} + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -9511,12 +9805,12 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - eslint-plugin-vitest@0.5.4(eslint@9.14.0)(typescript@5.6.3)(vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)(jsdom@25.0.1)(terser@5.36.0)): + eslint-plugin-vitest@0.5.4(eslint@9.14.0)(typescript@5.6.3)(vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)(jsdom@25.0.1)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)): dependencies: '@typescript-eslint/utils': 7.18.0(eslint@9.14.0)(typescript@5.6.3) eslint: 9.14.0 optionalDependencies: - vitest: 2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)(jsdom@25.0.1)(terser@5.36.0) + vitest: 2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)(jsdom@25.0.1)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) transitivePeerDependencies: - supports-color - typescript @@ -10239,8 +10533,13 @@ snapshots: ignore@5.3.2: {} + image-size@0.5.5: + optional: true + immer@10.1.1: {} + immutable@5.0.2: {} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 @@ -10495,6 +10794,8 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 + is-what@3.14.1: {} + is-whitespace@0.3.0: {} is-wsl@2.2.0: @@ -10673,6 +10974,20 @@ snapshots: lemmy-js-client@0.20.0-alpha.18: {} + less@4.2.0: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + leven@3.1.0: {} levn@0.4.1: @@ -10687,6 +11002,8 @@ snapshots: transitivePeerDependencies: - supports-color + lilconfig@2.1.0: {} + lines-and-columns@1.2.4: {} load-json-file@4.0.0: @@ -10736,6 +11053,8 @@ snapshots: lodash._createassigner: 3.1.1 lodash.keys: 3.1.2 + lodash.camelcase@4.3.0: {} + lodash.capitalize@4.2.1: {} lodash.debounce@4.0.8: {} @@ -10824,6 +11143,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + make-error@1.3.6: {} map-obj@1.0.1: {} @@ -11187,6 +11512,9 @@ snapshots: dependencies: mime-db: 1.52.0 + mime@1.6.0: + optional: true + mime@2.6.0: {} mimic-fn@2.1.0: {} @@ -11284,6 +11612,12 @@ snapshots: natural-compare@1.4.0: {} + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + optional: true + neo-async@2.6.2: {} netmask@2.0.2: {} @@ -11297,6 +11631,9 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 + node-addon-api@7.1.1: + optional: true + node-fetch@2.6.7: dependencies: whatwg-url: 5.0.0 @@ -11536,6 +11873,8 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-node-version@1.0.1: {} + parse-path@7.0.0: dependencies: protocols: 2.0.1 @@ -11600,6 +11939,9 @@ snapshots: pify@3.0.0: {} + pify@4.0.1: + optional: true + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -11620,6 +11962,14 @@ snapshots: possible-typed-array-names@1.0.0: {} + postcss-load-config@3.1.4(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.49 + ts-node: 10.9.2(@types/node@22.9.0)(typescript@5.6.3) + postcss-modules-extract-imports@3.1.0(postcss@8.4.49): dependencies: postcss: 8.4.49 @@ -11712,6 +12062,9 @@ snapshots: proxy-from-env@1.1.0: {} + prr@1.0.1: + optional: true + pump@3.0.2: dependencies: end-of-stream: 1.4.4 @@ -11926,6 +12279,8 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + readdirp@4.0.2: {} + rechoir@0.6.2: dependencies: resolve: 1.22.8 @@ -12099,6 +12454,8 @@ snapshots: reselect@5.1.1: {} + reserved-words@0.1.2: {} + resolve-from@4.0.0: {} resolve-pathname@3.0.0: {} @@ -12206,8 +12563,18 @@ snapshots: safer-buffer@2.1.2: {} + sass@1.81.0: + dependencies: + chokidar: 4.0.1 + immutable: 5.0.2 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.0 + sax@1.1.4: {} + sax@1.3.0: {} + sax@1.4.1: {} saxes@6.0.0: @@ -12477,6 +12844,16 @@ snapshots: stylis@4.3.4: {} + stylus@0.62.0: + dependencies: + '@adobe/css-tools': 4.3.3 + debug: 4.3.7 + glob: 7.2.3 + sax: 1.3.0 + source-map: 0.7.4 + transitivePeerDependencies: + - supports-color + superagent@8.1.2: dependencies: component-emitter: 1.3.1 @@ -12660,6 +13037,12 @@ snapshots: optionalDependencies: typescript: 5.6.3 + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + tslib@1.14.1: {} tslib@2.8.1: {} @@ -12729,6 +13112,29 @@ snapshots: - eslint - supports-color + typescript-plugin-css-modules@5.1.0(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))(typescript@5.6.3): + dependencies: + '@types/postcss-modules-local-by-default': 4.0.2 + '@types/postcss-modules-scope': 3.0.4 + dotenv: 16.4.5 + icss-utils: 5.1.0(postcss@8.4.49) + less: 4.2.0 + lodash.camelcase: 4.3.0 + postcss: 8.4.49 + postcss-load-config: 3.1.4(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)) + postcss-modules-extract-imports: 3.1.0(postcss@8.4.49) + postcss-modules-local-by-default: 4.1.0(postcss@8.4.49) + postcss-modules-scope: 3.2.1(postcss@8.4.49) + reserved-words: 0.1.2 + sass: 1.81.0 + source-map-js: 1.2.1 + stylus: 0.62.0 + tsconfig-paths: 4.2.0 + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + - ts-node + typescript@5.6.3: {} ua-parser-js@1.0.39: {} @@ -12942,7 +13348,7 @@ snapshots: react: 0.0.0-experimental-b01722d5-20241114 react-dom: 0.0.0-experimental-b01722d5-20241114(react@0.0.0-experimental-b01722d5-20241114) - vite-css-modules@1.6.0(postcss@8.4.49)(rollup@2.79.2)(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0)): + vite-css-modules@1.6.0(postcss@8.4.49)(rollup@2.79.2)(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)): dependencies: '@ampproject/remapping': 2.3.0 '@rollup/pluginutils': 5.1.3(rollup@2.79.2) @@ -12954,17 +13360,17 @@ snapshots: postcss-modules-local-by-default: 4.1.0(postcss@8.4.49) postcss-modules-scope: 3.2.1(postcss@8.4.49) postcss-modules-values: 4.0.0(postcss@8.4.49) - vite: 5.4.11(@types/node@22.9.0)(terser@5.36.0) + vite: 5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) transitivePeerDependencies: - rollup - vite-node@2.1.5(@types/node@22.9.0)(terser@5.36.0): + vite-node@2.1.5(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0): dependencies: cac: 6.7.14 debug: 4.3.7 es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.11(@types/node@22.9.0)(terser@5.36.0) + vite: 5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - less @@ -12976,40 +13382,40 @@ snapshots: - supports-color - terser - vite-plugin-pwa@0.21.0(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.3.0): + vite-plugin-pwa@0.21.0(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.3.0): dependencies: debug: 4.3.7 pretty-bytes: 6.1.1 tinyglobby: 0.2.10 - vite: 5.4.11(@types/node@22.9.0)(terser@5.36.0) + vite: 5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) workbox-build: 7.1.1(@types/babel__core@7.20.5) workbox-window: 7.3.0 transitivePeerDependencies: - supports-color - vite-plugin-svgr@4.3.0(rollup@2.79.2)(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0)): + vite-plugin-svgr@4.3.0(rollup@2.79.2)(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)): dependencies: '@rollup/pluginutils': 5.1.3(rollup@2.79.2) '@svgr/core': 8.1.0(typescript@5.6.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3)) - vite: 5.4.11(@types/node@22.9.0)(terser@5.36.0) + vite: 5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite-tsconfig-paths@5.1.2(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0)): + vite-tsconfig-paths@5.1.2(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.4(typescript@5.6.3) optionalDependencies: - vite: 5.4.11(@types/node@22.9.0)(terser@5.36.0) + vite: 5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.11(@types/node@22.9.0)(terser@5.36.0): + vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0): dependencies: esbuild: 0.21.5 postcss: 8.4.49 @@ -13017,12 +13423,15 @@ snapshots: optionalDependencies: '@types/node': 22.9.0 fsevents: 2.3.3 + less: 4.2.0 + sass: 1.81.0 + stylus: 0.62.0 terser: 5.36.0 - vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)(jsdom@25.0.1)(terser@5.36.0): + vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)(jsdom@25.0.1)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0): dependencies: '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.9.0)(terser@5.36.0)) + '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0)) '@vitest/pretty-format': 2.1.5 '@vitest/runner': 2.1.5 '@vitest/snapshot': 2.1.5 @@ -13038,8 +13447,8 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.9.0)(terser@5.36.0) - vite-node: 2.1.5(@types/node@22.9.0)(terser@5.36.0) + vite: 5.4.11(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) + vite-node: 2.1.5(@types/node@22.9.0)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.9.0 diff --git a/src/features/post/new/PhotoPreview.tsx b/src/features/post/new/PhotoPreview.tsx index 348d431827..8cdb527ae6 100644 --- a/src/features/post/new/PhotoPreview.tsx +++ b/src/features/post/new/PhotoPreview.tsx @@ -1,18 +1,14 @@ import { IonSpinner } from "@ionic/react"; +import { cx } from "@linaria/core"; import { styled } from "@linaria/react"; +import styles from "./photoPreview.module.css"; + const Container = styled.div` position: relative; `; -const Img = styled.img<{ loadingImage: boolean }>` - max-width: 100px; - max-height: 100px; - padding: 1rem; - - filter: ${({ loadingImage }) => - loadingImage ? "blur(5px) brightness(0.5)" : "none"}; -`; +const Img = styled.img<{ loadingImage: boolean }>``; const OverlaySpinner = styled(IonSpinner)` position: absolute; @@ -34,7 +30,12 @@ export default function PhotoPreview({ }: PhotoPreviewProps) { return ( - + {loading && } ); diff --git a/src/features/post/new/PostEditorRoot.tsx b/src/features/post/new/PostEditorRoot.tsx index f71235d2f5..5df84b06c8 100644 --- a/src/features/post/new/PostEditorRoot.tsx +++ b/src/features/post/new/PostEditorRoot.tsx @@ -47,47 +47,7 @@ import { receivedPosts } from "../postSlice"; import NewPostText from "./NewPostText"; import PhotoPreview from "./PhotoPreview"; import { PostEditorProps } from "./PostEditor"; - -const Container = styled.div` - position: absolute; - inset: 0; - - display: flex; - flex-direction: column; -`; - -const IonInputTitle = styled(IonInput)` - .input-bottom { - position: absolute; - top: 50%; - transform: translateY(-50%); - right: 0; - border: 0; - padding-top: 0; - } - - .native-wrapper { - margin-right: 2rem; - } -`; - -const PostingIn = styled.div` - font-size: 0.875em; - margin: 0.5rem 0; - text-align: center; - color: var(--ion-color-medium); -`; - -const CameraIcon = styled(IonIcon)` - margin: -0.2em 0; // TODO negative margin, bad alex - font-size: 1.5em; - - margin-right: 0.5rem; -`; - -const HiddenInput = styled.input` - display: none; -`; +import styles from "./postEditorRoot.module.css"; type PostType = "photo" | "link" | "text"; @@ -441,10 +401,11 @@ export default function PostEditorRoot({ - +
- setTitle(e.detail.value ?? "")} @@ -476,13 +437,18 @@ export default function PostEditorRoot({ - Posting in {getRemoteHandle(community)} - +
+ Posting in {getRemoteHandle(community)} +
+
); diff --git a/src/features/post/new/photoPreview.module.css b/src/features/post/new/photoPreview.module.css new file mode 100644 index 0000000000..c07a1d3a26 --- /dev/null +++ b/src/features/post/new/photoPreview.module.css @@ -0,0 +1,13 @@ +.container { + position: relative; +} + +.img { + max-width: 100px; + max-height: 100px; + padding: 1rem; + + &.loadingImage { + filter: blur(5px) brightness(0.5); + } +} diff --git a/src/features/post/new/postEditorRoot.module.css b/src/features/post/new/postEditorRoot.module.css new file mode 100644 index 0000000000..b99dc7f39b --- /dev/null +++ b/src/features/post/new/postEditorRoot.module.css @@ -0,0 +1,40 @@ +.container { + position: absolute; + inset: 0; + + display: flex; + flex-direction: column; +} + +.ionInputTitle { + :global(.input-bottom) { + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 0; + border: 0; + padding-top: 0; + } + + :global(.native-wrapper) { + margin-right: 2rem; + } +} + +.postingIn { + font-size: 0.875em; + margin: 0.5rem 0; + text-align: center; + color: var(--ion-color-medium); +} + +.cameraIcon { + margin: -0.2em 0; /* TODO negative margin, bad alex */ + font-size: 1.5em; + + margin-right: 0.5rem; +} + +.hiddenInput { + display: none; +} diff --git a/tsconfig.json b/tsconfig.json index 9231d7b54d..9d28db276c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,6 +17,8 @@ "jsx": "react-jsx", + "plugins": [{ "name": "typescript-plugin-css-modules" }], + "paths": { // duplicate of package.json[imports] // typescript doesn't support this same syntax in package.json with diff --git a/vite.config.ts b/vite.config.ts index a556a1870b..656be5fbaa 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -73,6 +73,7 @@ export default defineConfig({ // break. This breaks iOS transitions. // Put everything into one chunk for now. build: { + cssMinify: "lightningcss", chunkSizeWarningLimit: 5_000, rollupOptions: { onwarn: (log, handler) => {