rankrunners-cms 0.0.22 → 0.0.24
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.
- package/bun.lock +62 -67
- package/ok +12 -0
- package/package.json +13 -14
- package/src/api/constants.ts +4 -4
- package/src/assets/rankrunners.webp +0 -0
- package/src/captcha/CaptchaBadge.tsx +161 -0
- package/src/captcha/api.ts +261 -0
- package/src/captcha/cap_wasm.js +122 -0
- package/src/captcha/constants.ts +8 -0
- package/src/captcha/index.ts +11 -0
- package/src/captcha/token.ts +93 -0
- package/src/captcha/types.ts +61 -0
- package/src/captcha/use-cap.ts +247 -0
- package/src/captcha/worker.ts +118 -0
- package/src/styles.d.ts +1 -4
- package/src/tanstack/seo/extractors.ts +10 -2
- package/src/tanstack/seo/head.ts +2 -3
- package/src/tanstack/seo/scripts.ts +2 -3
- package/test +1 -0
- package/src/CaptchaBadge.tsx +0 -72
package/bun.lock
CHANGED
|
@@ -6,23 +6,22 @@
|
|
|
6
6
|
"name": "rankrunners-cms",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"classnames": "^2.5.1",
|
|
9
|
-
"tailwindcss": "^4.1.18",
|
|
10
9
|
},
|
|
11
10
|
"devDependencies": {
|
|
12
|
-
"@tanstack/react-router": "^1.
|
|
13
|
-
"@tanstack/router-core": "^1.
|
|
11
|
+
"@tanstack/react-router": "^1.166.6",
|
|
12
|
+
"@tanstack/router-core": "^1.166.6",
|
|
14
13
|
"@types/react": "^19.2.14",
|
|
15
|
-
"bun-types": "^1.3.
|
|
16
|
-
"lucide-react": "^0.
|
|
14
|
+
"bun-types": "^1.3.10",
|
|
15
|
+
"lucide-react": "^0.577.0",
|
|
17
16
|
"next": "^16.1.6",
|
|
18
17
|
"typescript": "^5.9.3",
|
|
19
18
|
"valibot": "^1.2.0",
|
|
20
19
|
},
|
|
21
20
|
"peerDependencies": {
|
|
22
21
|
"@puckeditor/core": "^0.21.1",
|
|
23
|
-
"@tanstack/react-router": "^1.
|
|
24
|
-
"@tanstack/router-core": "^1.
|
|
25
|
-
"lucide-react": "^0.
|
|
22
|
+
"@tanstack/react-router": "^1.166.6",
|
|
23
|
+
"@tanstack/router-core": "^1.166.6",
|
|
24
|
+
"lucide-react": "^0.577.0",
|
|
26
25
|
"next": "^16.1.6",
|
|
27
26
|
"react": "^19.2.4",
|
|
28
27
|
"valibot": "^1.2.0",
|
|
@@ -50,15 +49,15 @@
|
|
|
50
49
|
|
|
51
50
|
"@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="],
|
|
52
51
|
|
|
53
|
-
"@floating-ui/core": ["@floating-ui/core@1.7.
|
|
52
|
+
"@floating-ui/core": ["@floating-ui/core@1.7.5", "", { "dependencies": { "@floating-ui/utils": "^0.2.11" } }, "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ=="],
|
|
54
53
|
|
|
55
|
-
"@floating-ui/dom": ["@floating-ui/dom@1.7.
|
|
54
|
+
"@floating-ui/dom": ["@floating-ui/dom@1.7.6", "", { "dependencies": { "@floating-ui/core": "^1.7.5", "@floating-ui/utils": "^0.2.11" } }, "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ=="],
|
|
56
55
|
|
|
57
|
-
"@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.
|
|
56
|
+
"@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.8", "", { "dependencies": { "@floating-ui/dom": "^1.7.6" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A=="],
|
|
58
57
|
|
|
59
|
-
"@floating-ui/utils": ["@floating-ui/utils@0.2.
|
|
58
|
+
"@floating-ui/utils": ["@floating-ui/utils@0.2.11", "", {}, "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg=="],
|
|
60
59
|
|
|
61
|
-
"@img/colour": ["@img/colour@1.
|
|
60
|
+
"@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="],
|
|
62
61
|
|
|
63
62
|
"@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
|
|
64
63
|
|
|
@@ -126,7 +125,7 @@
|
|
|
126
125
|
|
|
127
126
|
"@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.1.6", "", { "os": "win32", "cpu": "x64" }, "sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A=="],
|
|
128
127
|
|
|
129
|
-
"@preact/signals-core": ["@preact/signals-core@1.
|
|
128
|
+
"@preact/signals-core": ["@preact/signals-core@1.14.0", "", {}, "sha512-AowtCcCU/33lFlh1zRFf/u+12rfrhtNakj7UpaGEsmMwUKpKWMVvcktOGcwBBNiB4lWrZWc01LhiyyzVklJyaQ=="],
|
|
130
129
|
|
|
131
130
|
"@puckeditor/core": ["@puckeditor/core@0.21.1", "", { "dependencies": { "@dnd-kit/helpers": "0.1.18", "@dnd-kit/react": "0.1.18", "@radix-ui/react-popover": "^1.1.15", "@tiptap/core": "^3.11.1", "@tiptap/extension-blockquote": "^3.11.1", "@tiptap/extension-bold": "^3.11.1", "@tiptap/extension-code": "^3.11.1", "@tiptap/extension-code-block": "^3.11.1", "@tiptap/extension-document": "^3.11.1", "@tiptap/extension-hard-break": "^3.11.1", "@tiptap/extension-heading": "^3.11.1", "@tiptap/extension-horizontal-rule": "^3.11.1", "@tiptap/extension-italic": "^3.11.1", "@tiptap/extension-link": "^3.11.1", "@tiptap/extension-list": "^3.11.1", "@tiptap/extension-paragraph": "^3.11.1", "@tiptap/extension-strike": "^3.11.1", "@tiptap/extension-text": "^3.11.1", "@tiptap/extension-text-align": "^3.11.1", "@tiptap/extension-underline": "^3.11.1", "@tiptap/html": "^3.11.1", "@tiptap/pm": "^3.11.1", "@tiptap/react": "^3.11.1", "deep-diff": "^1.0.2", "fast-equals": "5.2.2", "flat": "^5.0.2", "happy-dom": "^20.0.10", "object-hash": "^3.0.0", "react-hotkeys-hook": "^4.6.1", "use-debounce": "^9.0.4", "uuid": "^9.0.1", "zustand": "^5.0.3" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0" } }, "sha512-Mk25WAHR8QLzHk+BtOO4bOu+y3pjzo0GowMHAJKNhrbxGVh3ETJx/bAZHaxA9dv8lKyuqK9a9AeRr7HYgg/sVw=="],
|
|
132
131
|
|
|
@@ -178,59 +177,59 @@
|
|
|
178
177
|
|
|
179
178
|
"@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="],
|
|
180
179
|
|
|
181
|
-
"@tanstack/history": ["@tanstack/history@1.
|
|
180
|
+
"@tanstack/history": ["@tanstack/history@1.161.4", "", {}, "sha512-Kp/WSt411ZWYvgXy6uiv5RmhHrz9cAml05AQPrtdAp7eUqvIDbMGPnML25OKbzR3RJ1q4wgENxDTvlGPa9+Mww=="],
|
|
182
181
|
|
|
183
|
-
"@tanstack/react-router": ["@tanstack/react-router@1.
|
|
182
|
+
"@tanstack/react-router": ["@tanstack/react-router@1.166.6", "", { "dependencies": { "@tanstack/history": "1.161.4", "@tanstack/react-store": "^0.9.1", "@tanstack/router-core": "1.166.6", "isbot": "^5.1.22", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-lfymPCfTkLQaNj/KIPElt+6B9REwPw2/Of3KtMwhNINs7h2xFQMSAOYk+ItCv8i93lBczlg89BRHtRS99qmzyA=="],
|
|
184
183
|
|
|
185
|
-
"@tanstack/react-store": ["@tanstack/react-store@0.
|
|
184
|
+
"@tanstack/react-store": ["@tanstack/react-store@0.9.2", "", { "dependencies": { "@tanstack/store": "0.9.2", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Vt5usJE5sHG/cMechQfmwvwne6ktGCELe89Lmvoxe3LKRoFrhPa8OCKWs0NliG8HTJElEIj7PLtaBQIcux5pAQ=="],
|
|
186
185
|
|
|
187
|
-
"@tanstack/router-core": ["@tanstack/router-core@1.
|
|
186
|
+
"@tanstack/router-core": ["@tanstack/router-core@1.166.6", "", { "dependencies": { "@tanstack/history": "1.161.4", "@tanstack/store": "^0.9.1", "cookie-es": "^2.0.0", "seroval": "^1.4.2", "seroval-plugins": "^1.4.2", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" } }, "sha512-SwVPMQxjoY4jwiNgD9u5kDFp/iSaf3wgf1t93xRCC6qDHmv/xLaawhvwEPNIJaPepWuSYRpywpJWH9hGlBqVbw=="],
|
|
188
187
|
|
|
189
|
-
"@tanstack/store": ["@tanstack/store@0.
|
|
188
|
+
"@tanstack/store": ["@tanstack/store@0.9.2", "", {}, "sha512-K013lUJEFJK2ofFQ/hZKJUmCnpcV00ebLyOyFOWQvyQHUOZp/iYO84BM6aOGiV81JzwbX0APTVmW8YI7yiG5oA=="],
|
|
190
189
|
|
|
191
|
-
"@tiptap/core": ["@tiptap/core@3.
|
|
190
|
+
"@tiptap/core": ["@tiptap/core@3.20.1", "", { "peerDependencies": { "@tiptap/pm": "^3.20.1" } }, "sha512-SwkPEWIfaDEZjC8SEIi4kZjqIYUbRgLUHUuQezo5GbphUNC8kM1pi3C3EtoOPtxXrEbY6e4pWEzW54Pcrd+rVA=="],
|
|
192
191
|
|
|
193
|
-
"@tiptap/extension-blockquote": ["@tiptap/extension-blockquote@3.
|
|
192
|
+
"@tiptap/extension-blockquote": ["@tiptap/extension-blockquote@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-WzNXk/63PQI2fav4Ta6P0GmYRyu8Gap1pV3VUqaVK829iJ6Zt1T21xayATHEHWMK27VT1GLPJkx9Ycr2jfDyQw=="],
|
|
194
193
|
|
|
195
|
-
"@tiptap/extension-bold": ["@tiptap/extension-bold@3.
|
|
194
|
+
"@tiptap/extension-bold": ["@tiptap/extension-bold@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-fz++Qv6Rk/Hov0IYG/r7TJ1Y4zWkuGONe0UN5g0KY32NIMg3HeOHicbi4xsNWTm9uAOl3eawWDkezEMrleObMw=="],
|
|
196
195
|
|
|
197
|
-
"@tiptap/extension-bubble-menu": ["@tiptap/extension-bubble-menu@3.
|
|
196
|
+
"@tiptap/extension-bubble-menu": ["@tiptap/extension-bubble-menu@3.20.1", "", { "dependencies": { "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "@tiptap/core": "^3.20.1", "@tiptap/pm": "^3.20.1" } }, "sha512-XaPvO6aCoWdFnCBus0s88lnj17NR/OopV79i8Qhgz3WMR0vrsL5zsd45l0lZuu9pSvm5VW47SoxakkJiZC1suw=="],
|
|
198
197
|
|
|
199
|
-
"@tiptap/extension-code": ["@tiptap/extension-code@3.
|
|
198
|
+
"@tiptap/extension-code": ["@tiptap/extension-code@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-509DHINIA/Gg+eTG7TEkfsS8RUiPLH5xZNyLRT0A1oaoaJmECKfrV6aAm05IdfTyqDqz6LW5pbnX6DdUC4keug=="],
|
|
200
199
|
|
|
201
|
-
"@tiptap/extension-code-block": ["@tiptap/extension-code-block@3.
|
|
200
|
+
"@tiptap/extension-code-block": ["@tiptap/extension-code-block@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1", "@tiptap/pm": "^3.20.1" } }, "sha512-vKejwBq+Nlj4Ybd3qOyDxIQKzYymdNH+8eXkKwGShk2nfLJIxq69DCyGvmuHgipIO1qcYPJ149UNpGN+YGcdmA=="],
|
|
202
201
|
|
|
203
|
-
"@tiptap/extension-document": ["@tiptap/extension-document@3.
|
|
202
|
+
"@tiptap/extension-document": ["@tiptap/extension-document@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-9vrqdGmRV7bQCSY3NLgu7UhIwgOCDp4sKqMNsoNRX0aZ021QQMTvBQDPkiRkCf7MNsnWrNNnr52PVnULEn3vFQ=="],
|
|
204
203
|
|
|
205
|
-
"@tiptap/extension-floating-menu": ["@tiptap/extension-floating-menu@3.
|
|
204
|
+
"@tiptap/extension-floating-menu": ["@tiptap/extension-floating-menu@3.20.1", "", { "peerDependencies": { "@floating-ui/dom": "^1.0.0", "@tiptap/core": "^3.20.1", "@tiptap/pm": "^3.20.1" } }, "sha512-BeDC6nfOesIMn5pFuUnkEjOxGv80sOJ8uk1mdt9/3Fkvra8cB9NIYYCVtd6PU8oQFmJ8vFqPrRkUWrG5tbqnOg=="],
|
|
206
205
|
|
|
207
|
-
"@tiptap/extension-hard-break": ["@tiptap/extension-hard-break@3.
|
|
206
|
+
"@tiptap/extension-hard-break": ["@tiptap/extension-hard-break@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-9sKpmg/IIdlLXimYWUZ3PplIRcehv4Oc7V1miTqlnAthMzjMqigDkjjgte4JZV67RdnDJTQkRw8TklCAU28Emg=="],
|
|
208
207
|
|
|
209
|
-
"@tiptap/extension-heading": ["@tiptap/extension-heading@3.
|
|
208
|
+
"@tiptap/extension-heading": ["@tiptap/extension-heading@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-unudyfQP6FxnyWinxvPqe/51DG91J6AaJm666RnAubgYMCgym+33kBftx4j4A6qf+ddWYbD00thMNKOnVLjAEQ=="],
|
|
210
209
|
|
|
211
|
-
"@tiptap/extension-horizontal-rule": ["@tiptap/extension-horizontal-rule@3.
|
|
210
|
+
"@tiptap/extension-horizontal-rule": ["@tiptap/extension-horizontal-rule@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1", "@tiptap/pm": "^3.20.1" } }, "sha512-rjFKFXNntdl0jay8oIGFvvykHlpyQTLmrH3Ag2fj3i8yh6MVvqhtaDomYQbw5sxECd5hBkL+T4n2d2DRuVw/QQ=="],
|
|
212
211
|
|
|
213
|
-
"@tiptap/extension-italic": ["@tiptap/extension-italic@3.
|
|
212
|
+
"@tiptap/extension-italic": ["@tiptap/extension-italic@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-ZYRX13Kt8tR8JOzSXirH3pRpi8x30o7LHxZY58uXBdUvr3tFzOkh03qbN523+diidSVeHP/aMd/+IrplHRkQug=="],
|
|
214
213
|
|
|
215
|
-
"@tiptap/extension-link": ["@tiptap/extension-link@3.
|
|
214
|
+
"@tiptap/extension-link": ["@tiptap/extension-link@3.20.1", "", { "dependencies": { "linkifyjs": "^4.3.2" }, "peerDependencies": { "@tiptap/core": "^3.20.1", "@tiptap/pm": "^3.20.1" } }, "sha512-oYTTIgsQMqpkSnJAuAc+UtIKMuI4lv9e1y4LfI1iYm6NkEUHhONppU59smhxHLzb3Ww7YpDffbp5IgDTAiJztA=="],
|
|
216
215
|
|
|
217
|
-
"@tiptap/extension-list": ["@tiptap/extension-list@3.
|
|
216
|
+
"@tiptap/extension-list": ["@tiptap/extension-list@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1", "@tiptap/pm": "^3.20.1" } }, "sha512-euBRAn0mkV7R2VEE+AuOt3R0j9RHEMFXamPFmtvTo8IInxDClusrm6mJoDjS8gCGAXsQCRiAe1SCQBPgGbOOwg=="],
|
|
218
217
|
|
|
219
|
-
"@tiptap/extension-paragraph": ["@tiptap/extension-paragraph@3.
|
|
218
|
+
"@tiptap/extension-paragraph": ["@tiptap/extension-paragraph@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-QFrAtXNyv7JSnomMQc1nx5AnG9mMznfbYJAbdOQYVdbLtAzTfiTuNPNbQrufy5ZGtGaHxDCoaygu2QEfzaKG+Q=="],
|
|
220
219
|
|
|
221
|
-
"@tiptap/extension-strike": ["@tiptap/extension-strike@3.
|
|
220
|
+
"@tiptap/extension-strike": ["@tiptap/extension-strike@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-EYgyma10lpsY+rwbVQL9u+gA7hBlKLSMFH7Zgd37FSxukOjr+HE8iKPQQ+SwbGejyDsPlLT8Z5Jnuxo5Ng90Pg=="],
|
|
222
221
|
|
|
223
|
-
"@tiptap/extension-text": ["@tiptap/extension-text@3.
|
|
222
|
+
"@tiptap/extension-text": ["@tiptap/extension-text@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-7PlIbYW8UenV6NPOXHmv8IcmPGlGx6HFq66RmkJAOJRPXPkTLAiX0N8rQtzUJ6jDEHqoJpaHFEHJw0xzW1yF+A=="],
|
|
224
223
|
|
|
225
|
-
"@tiptap/extension-text-align": ["@tiptap/extension-text-align@3.
|
|
224
|
+
"@tiptap/extension-text-align": ["@tiptap/extension-text-align@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-9816EFiTO7BvACGomYNI0pZIu5EOBVHrgqO33+sFjseQCvq+5FD6OPNLdHSkPzAmRrE0LUBvFZ93sjO4N+kJPg=="],
|
|
226
225
|
|
|
227
|
-
"@tiptap/extension-underline": ["@tiptap/extension-underline@3.
|
|
226
|
+
"@tiptap/extension-underline": ["@tiptap/extension-underline@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1" } }, "sha512-fmHvDKzwCgnZUwRreq8tYkb1YyEwgzZ6QQkAQ0CsCRtvRMqzerr3Duz0Als4i8voZTuGDEL3VR6nAJbLAb/wPg=="],
|
|
228
227
|
|
|
229
|
-
"@tiptap/html": ["@tiptap/html@3.
|
|
228
|
+
"@tiptap/html": ["@tiptap/html@3.20.1", "", { "peerDependencies": { "@tiptap/core": "^3.20.1", "@tiptap/pm": "^3.20.1", "happy-dom": "^20.0.2" } }, "sha512-vElmnCWIqIj8DIS1lIxKKlN8pQEZVNiRfh4RZ2TL4tdZDsfS29US2lbgWEeI8lZdgr5C5JuoC/X1Nv+N8tJn6A=="],
|
|
230
229
|
|
|
231
|
-
"@tiptap/pm": ["@tiptap/pm@3.
|
|
230
|
+
"@tiptap/pm": ["@tiptap/pm@3.20.1", "", { "dependencies": { "prosemirror-changeset": "^2.3.0", "prosemirror-collab": "^1.3.1", "prosemirror-commands": "^1.6.2", "prosemirror-dropcursor": "^1.8.1", "prosemirror-gapcursor": "^1.3.2", "prosemirror-history": "^1.4.1", "prosemirror-inputrules": "^1.4.0", "prosemirror-keymap": "^1.2.2", "prosemirror-markdown": "^1.13.1", "prosemirror-menu": "^1.2.4", "prosemirror-model": "^1.24.1", "prosemirror-schema-basic": "^1.2.3", "prosemirror-schema-list": "^1.5.0", "prosemirror-state": "^1.4.3", "prosemirror-tables": "^1.6.4", "prosemirror-trailing-node": "^3.0.0", "prosemirror-transform": "^1.10.2", "prosemirror-view": "^1.38.1" } }, "sha512-6kCiGLvpES4AxcEuOhb7HR7/xIeJWMjZlb6J7e8zpiIh5BoQc7NoRdctsnmFEjZvC19bIasccshHQ7H2zchWqw=="],
|
|
232
231
|
|
|
233
|
-
"@tiptap/react": ["@tiptap/react@3.
|
|
232
|
+
"@tiptap/react": ["@tiptap/react@3.20.1", "", { "dependencies": { "@types/use-sync-external-store": "^0.0.6", "fast-equals": "^5.3.3", "use-sync-external-store": "^1.4.0" }, "optionalDependencies": { "@tiptap/extension-bubble-menu": "^3.20.1", "@tiptap/extension-floating-menu": "^3.20.1" }, "peerDependencies": { "@tiptap/core": "^3.20.1", "@tiptap/pm": "^3.20.1", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-UH1NpVpCaZBGB3Yr5N6aTS+rsCMDl9wHfrt/w+6+Gz4KHFZ2OILA82hELxZzhNc1Lmjz8vgCArKcsYql9gbzJA=="],
|
|
234
233
|
|
|
235
234
|
"@types/linkify-it": ["@types/linkify-it@5.0.0", "", {}, "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q=="],
|
|
236
235
|
|
|
@@ -238,7 +237,7 @@
|
|
|
238
237
|
|
|
239
238
|
"@types/mdurl": ["@types/mdurl@2.0.0", "", {}, "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg=="],
|
|
240
239
|
|
|
241
|
-
"@types/node": ["@types/node@25.0
|
|
240
|
+
"@types/node": ["@types/node@25.4.0", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw=="],
|
|
242
241
|
|
|
243
242
|
"@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="],
|
|
244
243
|
|
|
@@ -254,11 +253,11 @@
|
|
|
254
253
|
|
|
255
254
|
"aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="],
|
|
256
255
|
|
|
257
|
-
"baseline-browser-mapping": ["baseline-browser-mapping@2.
|
|
256
|
+
"baseline-browser-mapping": ["baseline-browser-mapping@2.10.0", "", { "bin": "dist/cli.cjs" }, "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA=="],
|
|
258
257
|
|
|
259
|
-
"bun-types": ["bun-types@1.3.
|
|
258
|
+
"bun-types": ["bun-types@1.3.10", "", { "dependencies": { "@types/node": "*" } }, "sha512-tcpfCCl6XWo6nCVnpcVrxQ+9AYN1iqMIzgrSKYMB/fjLtV2eyAVEg7AxQJuCq/26R6HpKWykQXuSOq/21RYcbg=="],
|
|
260
259
|
|
|
261
|
-
"caniuse-lite": ["caniuse-lite@1.0.
|
|
260
|
+
"caniuse-lite": ["caniuse-lite@1.0.30001777", "", {}, "sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ=="],
|
|
262
261
|
|
|
263
262
|
"classnames": ["classnames@2.5.1", "", {}, "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="],
|
|
264
263
|
|
|
@@ -276,7 +275,7 @@
|
|
|
276
275
|
|
|
277
276
|
"detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="],
|
|
278
277
|
|
|
279
|
-
"entities": ["entities@
|
|
278
|
+
"entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="],
|
|
280
279
|
|
|
281
280
|
"escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
|
|
282
281
|
|
|
@@ -286,17 +285,17 @@
|
|
|
286
285
|
|
|
287
286
|
"get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="],
|
|
288
287
|
|
|
289
|
-
"happy-dom": ["happy-dom@20.3
|
|
288
|
+
"happy-dom": ["happy-dom@20.8.3", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.18.3" } }, "sha512-lMHQRRwIPyJ70HV0kkFT7jH/gXzSI7yDkQFe07E2flwmNDFoWUTRMKpW2sglsnpeA7b6S2TJPp98EbQxai8eaQ=="],
|
|
290
289
|
|
|
291
|
-
"isbot": ["isbot@5.1.
|
|
290
|
+
"isbot": ["isbot@5.1.35", "", {}, "sha512-waFfC72ZNfwLLuJ2iLaoVaqcNo+CAaLR7xCpAn0Y5WfGzkNHv7ZN39Vbi1y+kb+Zs46XHOX3tZNExroFUPX+Kg=="],
|
|
292
291
|
|
|
293
292
|
"linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="],
|
|
294
293
|
|
|
295
294
|
"linkifyjs": ["linkifyjs@4.3.2", "", {}, "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA=="],
|
|
296
295
|
|
|
297
|
-
"lucide-react": ["lucide-react@0.
|
|
296
|
+
"lucide-react": ["lucide-react@0.577.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-4LjoFv2eEPwYDPg/CUdBJQSDfPyzXCRrVW1X7jrx/trgxnxkHFjnVZINbzvzxjN70dxychOfg+FTYwBiS3pQ5A=="],
|
|
298
297
|
|
|
299
|
-
"markdown-it": ["markdown-it@14.1.
|
|
298
|
+
"markdown-it": ["markdown-it@14.1.1", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": "bin/markdown-it.mjs" }, "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA=="],
|
|
300
299
|
|
|
301
300
|
"mdurl": ["mdurl@2.0.0", "", {}, "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="],
|
|
302
301
|
|
|
@@ -312,7 +311,7 @@
|
|
|
312
311
|
|
|
313
312
|
"postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="],
|
|
314
313
|
|
|
315
|
-
"prosemirror-changeset": ["prosemirror-changeset@2.
|
|
314
|
+
"prosemirror-changeset": ["prosemirror-changeset@2.4.0", "", { "dependencies": { "prosemirror-transform": "^1.0.0" } }, "sha512-LvqH2v7Q2SF6yxatuPP2e8vSUKS/L+xAU7dPDC4RMyHMhZoGDfBC74mYuyYF4gLqOEG758wajtyhNnsTkuhvng=="],
|
|
316
315
|
|
|
317
316
|
"prosemirror-collab": ["prosemirror-collab@1.3.1", "", { "dependencies": { "prosemirror-state": "^1.0.0" } }, "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ=="],
|
|
318
317
|
|
|
@@ -320,7 +319,7 @@
|
|
|
320
319
|
|
|
321
320
|
"prosemirror-dropcursor": ["prosemirror-dropcursor@1.8.2", "", { "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0", "prosemirror-view": "^1.1.0" } }, "sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw=="],
|
|
322
321
|
|
|
323
|
-
"prosemirror-gapcursor": ["prosemirror-gapcursor@1.4.
|
|
322
|
+
"prosemirror-gapcursor": ["prosemirror-gapcursor@1.4.1", "", { "dependencies": { "prosemirror-keymap": "^1.0.0", "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-view": "^1.0.0" } }, "sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw=="],
|
|
324
323
|
|
|
325
324
|
"prosemirror-history": ["prosemirror-history@1.5.0", "", { "dependencies": { "prosemirror-state": "^1.2.2", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.31.0", "rope-sequence": "^1.3.0" } }, "sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg=="],
|
|
326
325
|
|
|
@@ -328,9 +327,9 @@
|
|
|
328
327
|
|
|
329
328
|
"prosemirror-keymap": ["prosemirror-keymap@1.2.3", "", { "dependencies": { "prosemirror-state": "^1.0.0", "w3c-keyname": "^2.2.0" } }, "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw=="],
|
|
330
329
|
|
|
331
|
-
"prosemirror-markdown": ["prosemirror-markdown@1.13.
|
|
330
|
+
"prosemirror-markdown": ["prosemirror-markdown@1.13.4", "", { "dependencies": { "@types/markdown-it": "^14.0.0", "markdown-it": "^14.0.0", "prosemirror-model": "^1.25.0" } }, "sha512-D98dm4cQ3Hs6EmjK500TdAOew4Z03EV71ajEFiWra3Upr7diytJsjF4mPV2dW+eK5uNectiRj0xFxYI9NLXDbw=="],
|
|
332
331
|
|
|
333
|
-
"prosemirror-menu": ["prosemirror-menu@1.
|
|
332
|
+
"prosemirror-menu": ["prosemirror-menu@1.3.0", "", { "dependencies": { "crelt": "^1.0.0", "prosemirror-commands": "^1.0.0", "prosemirror-history": "^1.0.0", "prosemirror-state": "^1.0.0" } }, "sha512-TImyPXCHPcDsSka2/lwJ6WjTASr4re/qWq1yoTTuLOqfXucwF6VcRa2LWCkM/EyTD1UO3CUwiH8qURJoWJRxwg=="],
|
|
334
333
|
|
|
335
334
|
"prosemirror-model": ["prosemirror-model@1.25.4", "", { "dependencies": { "orderedmap": "^2.0.0" } }, "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA=="],
|
|
336
335
|
|
|
@@ -344,15 +343,15 @@
|
|
|
344
343
|
|
|
345
344
|
"prosemirror-trailing-node": ["prosemirror-trailing-node@3.0.0", "", { "dependencies": { "@remirror/core-constants": "3.0.0", "escape-string-regexp": "^4.0.0" }, "peerDependencies": { "prosemirror-model": "^1.22.1", "prosemirror-state": "^1.4.2", "prosemirror-view": "^1.33.8" } }, "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ=="],
|
|
346
345
|
|
|
347
|
-
"prosemirror-transform": ["prosemirror-transform@1.
|
|
346
|
+
"prosemirror-transform": ["prosemirror-transform@1.11.0", "", { "dependencies": { "prosemirror-model": "^1.21.0" } }, "sha512-4I7Ce4KpygXb9bkiPS3hTEk4dSHorfRw8uI0pE8IhxlK2GXsqv5tIA7JUSxtSu7u8APVOTtbUBxTmnHIxVkIJw=="],
|
|
348
347
|
|
|
349
|
-
"prosemirror-view": ["prosemirror-view@1.41.
|
|
348
|
+
"prosemirror-view": ["prosemirror-view@1.41.6", "", { "dependencies": { "prosemirror-model": "^1.20.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0" } }, "sha512-mxpcDG4hNQa/CPtzxjdlir5bJFDlm0/x5nGBbStB2BWX+XOQ9M8ekEG+ojqB5BcVu2Rc80/jssCMZzSstJuSYg=="],
|
|
350
349
|
|
|
351
350
|
"punycode.js": ["punycode.js@2.3.1", "", {}, "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="],
|
|
352
351
|
|
|
353
352
|
"react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="],
|
|
354
353
|
|
|
355
|
-
"react-dom": ["react-dom@19.2.
|
|
354
|
+
"react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="],
|
|
356
355
|
|
|
357
356
|
"react-hotkeys-hook": ["react-hotkeys-hook@4.6.2", "", { "peerDependencies": { "react": ">=16.8.1", "react-dom": ">=16.8.1" } }, "sha512-FmP+ZriY3EG59Ug/lxNfrObCnW9xQShgk7Nb83+CkpfkcCpfS95ydv+E9JuXA5cp8KtskU7LGlIARpkc92X22Q=="],
|
|
358
357
|
|
|
@@ -366,11 +365,11 @@
|
|
|
366
365
|
|
|
367
366
|
"scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="],
|
|
368
367
|
|
|
369
|
-
"semver": ["semver@7.7.
|
|
368
|
+
"semver": ["semver@7.7.4", "", { "bin": "bin/semver.js" }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="],
|
|
370
369
|
|
|
371
|
-
"seroval": ["seroval@1.5.
|
|
370
|
+
"seroval": ["seroval@1.5.1", "", {}, "sha512-OwrZRZAfhHww0WEnKHDY8OM0U/Qs8OTfIDWhUD4BLpNJUfXK4cGmjiagGze086m+mhI+V2nD0gfbHEnJjb9STA=="],
|
|
372
371
|
|
|
373
|
-
"seroval-plugins": ["seroval-plugins@1.5.
|
|
372
|
+
"seroval-plugins": ["seroval-plugins@1.5.1", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-4FbuZ/TMl02sqv0RTFexu0SP6V+ywaIe5bAWCCEik0fk17BhALgwvUDVF7e3Uvf9pxmwCEJsRPmlkUE6HdzLAw=="],
|
|
374
373
|
|
|
375
374
|
"sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
|
|
376
375
|
|
|
@@ -378,8 +377,6 @@
|
|
|
378
377
|
|
|
379
378
|
"styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="],
|
|
380
379
|
|
|
381
|
-
"tailwindcss": ["tailwindcss@4.1.18", "", {}, "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw=="],
|
|
382
|
-
|
|
383
380
|
"tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="],
|
|
384
381
|
|
|
385
382
|
"tiny-warning": ["tiny-warning@1.0.3", "", {}, "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="],
|
|
@@ -390,7 +387,7 @@
|
|
|
390
387
|
|
|
391
388
|
"uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="],
|
|
392
389
|
|
|
393
|
-
"undici-types": ["undici-types@7.
|
|
390
|
+
"undici-types": ["undici-types@7.18.2", "", {}, "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="],
|
|
394
391
|
|
|
395
392
|
"use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="],
|
|
396
393
|
|
|
@@ -410,12 +407,10 @@
|
|
|
410
407
|
|
|
411
408
|
"ws": ["ws@8.19.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="],
|
|
412
409
|
|
|
413
|
-
"zustand": ["zustand@5.0.
|
|
410
|
+
"zustand": ["zustand@5.0.11", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["immer"] }, "sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg=="],
|
|
414
411
|
|
|
415
412
|
"@tiptap/react/fast-equals": ["fast-equals@5.4.0", "", {}, "sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw=="],
|
|
416
413
|
|
|
417
|
-
"
|
|
418
|
-
|
|
419
|
-
"happy-dom/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
|
|
414
|
+
"markdown-it/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
|
|
420
415
|
}
|
|
421
416
|
}
|
package/ok
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logos/dependable-logo.png"/><link rel="preload" as="image" href="https://assets.rankrunners.net/cms-media/f251bdd007efe1f79fba441fbef4a6f5f4c0cdaa115b31002dfba52083f8d5d1.webp"/><link rel="preload" as="image" href="/images/ctas-bg.webp"/><link rel="preload" as="image" href="/images/rankrunners-ico.webp"/><script src="https://www.googletagmanager.com/gtag/js?id=G-Y41LW6NEXR" async=""></script><title>Roofing Company Tucson, AZ | Dependable Roofing</title><meta name="description" content="Dependable Roofing is a trusted roofing company in Tucson, AZ offering residential and commercial roofing, repairs, and installations. Get started today."/><meta name="keywords" content=""/><meta name="google-site-verification" content="googlee257827f1e4930c8.html"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><link rel="icon" href="/favicons/favicon.ico"/><link rel="stylesheet" href="/src/styles.css"/><link rel="stylesheet" href="/@tanstack-start/styles.css?routes=__root__%2C%2F%24" data-tanstack-router-dev-styles="true"/><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
|
2
|
+
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
|
3
|
+
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
|
4
|
+
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
|
5
|
+
})(window,document,'script','dataLayer','GTM-NM2Z2BXL');</script><script>window.dataLayer = window.dataLayer || [];
|
|
6
|
+
function gtag(){dataLayer.push(arguments);}
|
|
7
|
+
gtag('js', new Date());
|
|
8
|
+
gtag('config', 'G-Y41LW6NEXR');</script></head><body><!--$--><header class="fixed top-0 left-0 right-0 z-50 transition-all duration-300 lg:py-0 bg-white shadow-lg"><div class="lg:hidden bg-white flex w-full justify-between pt-md px-lg font-semibold"><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-phone w-3 h-3" aria-hidden="true"><path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"></path></svg><a href="tel:5204443180" class="hover:text-secondary text-sm">(520) 444-3180</a></div><div class="flex items-center gap-2"><svg stroke="currentColor" fill="none" stroke-width="0" viewBox="0 0 24 24" class="w-3 h-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path stroke-width="2" d="M15 19H2V1h16v4m0 0a5 5 0 110 10 5 5 0 010-10zm-3 9v8l3-2 3 2v-8M5 8h6m-6 3h5m-5 3h2M5 5h2"></path></svg><span class="text-sm">ROC #336858 CR-42</span></div></div><div class="bg-sitebg text-primary lg:hidden w-full flex justify-between gap-sm py-sm px-xl"><a href="/" class="relative w-[150px] aspect-video"><img src="/images/logos/dependable-logo.png" alt="dependable logo" class="object-contain w-full h-full"/></a><div class="flex justify-between lg:justify-end lg:w-0"><button class="lg:hidden text-primary" tabindex="0"><div style="opacity:0;transform:rotate(90deg)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu w-7 h-7" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></div></button></div></div><div class="w-full mx-auto py-md hidden lg:block px-sm relative bg-gradient-to-r from-gray-900 to-gray-800 text-white"><div class="absolute inset-0 opacity-5"><div class="absolute inset-0" style="background-image:radial-gradient(circle at 1px 1px, white 1px, transparent 0);background-size:20px 20px"></div></div><div class="mx-auto max-w-7xl flex flex-col md:flex-row justify-between items-center gap-xs relative z-10"><div class="inline-flex gap-md"><div class="flex items-center gap-2 text-md"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-phone w-3 h-3" aria-hidden="true"><path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"></path></svg><a href="tel:5204443180" class="hover:text-secondary">(520) 444-3180</a></div></div><div class="flex gap-md"><div class="hidden lg:flex items-center gap-2"><svg stroke="currentColor" fill="none" stroke-width="0" viewBox="0 0 24 24" class="w-3 h-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path stroke-width="2" d="M15 19H2V1h16v4m0 0a5 5 0 110 10 5 5 0 010-10zm-3 9v8l3-2 3 2v-8M5 8h6m-6 3h5m-5 3h2M5 5h2"></path></svg><span class="text-md">ROC #336858 CR-42</span></div><div><a href="https://www.facebook.com/dependableroofingandsolarcleaning" target="_blank" rel="noreferrer noopener"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="text-xl" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path></svg></a></div><div><a href="https://www.instagram.com/dependable_roofing_solar" target="_blank" rel="noreferrer noopener"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="text-xl" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></a></div><div><a href="https://www.yelp.com/biz/dependable-roofing-and-solar-cleaning-marana-2" target="_blank" rel="noreferrer noopener"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" class="text-xl" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z"></path></svg></a></div><div><a href="https://www.youtube.com/channel/UCE9StKE3YlpOj1TLKWiA_-A" target="_blank" rel="noreferrer noopener"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" class="text-xl" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg></a></div></div></div></div><div class="text-primary max-w-7xl mx-auto hidden lg:block"><div class="flex justify-between items-center max-w-7xl mx-auto px-sm text-primary"><a href="/" class="relative w-[400px] aspect-video"><img src="/images/logos/dependable-logo.png" alt="dependable logo" class="object-contain w-full h-full"/></a><nav class="hidden lg:flex items-center justify-center gap-lg w-full py-lg"><div class="relative"><div style="transform:translateY(-20px)"><a href="/" class="flex items-center space-x-1 hover:text-secondary transition-colors duration-200 font-[500] tracking-wide font-sitebody"><span>Home</span></a></div></div><div class="relative"><div style="transform:translateY(-20px)"><a href="/about-us" class="flex items-center space-x-1 hover:text-secondary transition-colors duration-200 font-[500] tracking-wide font-sitebody"><span>Our Company</span><div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-4 h-4" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></div></a></div></div><div class="relative"><div style="transform:translateY(-20px)"><a href="#" class="flex items-center space-x-1 hover:text-secondary transition-colors duration-200 font-[500] tracking-wide font-sitebody"><span>Services</span><div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-4 h-4" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></div></a></div></div><div class="relative"><div style="transform:translateY(-20px)"><a class="flex items-center space-x-1 hover:text-secondary transition-colors duration-200 font-[500] tracking-wide font-sitebody active" href="/blog" data-status="active" aria-current="page"><span>Blog</span></a></div></div><div class="relative"><div style="transform:translateY(-20px)"><a href="/contact" class="flex items-center space-x-1 hover:text-secondary transition-colors duration-200 font-[500] tracking-wide font-sitebody"><span>Contact Us</span></a></div></div></nav><div><a href="tel:5204443180" class="relative inline-block px-8 py-4 text-lg font-bold overflow-hidden rounded-tl-none rounded-tr-3xl rounded-bl-3xl rounded-br-none bg-secondary text-white transition-all duration-500 shadow-lg border-2 border-transparent"><span class="absolute inset-0 bg-white transition-transform duration-500 ease-out -translate-x-full"><span class="absolute inset-y-0 right-0 w-20 bg-gradient-to-l from-orange-400/40 via-orange-300/20 to-transparent opacity-0" style="filter:blur(10px);animation-timing-function:ease-in-out"></span></span><span class="relative z-10 flex items-center gap-3 whitespace-nowrap"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-phone w-6 h-6 transition-colors duration-500 text-white" aria-hidden="true"><path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"></path></svg><span class="transition-colors duration-500 text-white">Call for a Free Quote!</span></span></a></div></div></div><div class="fixed inset-0 z-40 lg:hidden transition-opacity duration-300 opacity-0 pointer-events-none"></div><div class="fixed top-0 left-0 h-full w-80 bg-white shadow-xl border z-50 lg:hidden overflow-y-auto transform transition-transform duration-300 ease-in-out -translate-x-full"><div class="flex justify-between items-center p-4 border-b"><div class="relative h-[100px] w-full"><img src="/images/logos/dependable-logo.png" alt="dependable roofing logo" class="object-contain w-full h-full"/></div><button class="p-2 hover:bg-gray-100 rounded-lg transition-colors"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x w-6 h-6" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div><nav class="p-4"><div class="mb-2 border-b-2 border-black/5 transform transition-all duration-300 ease-out -translate-x-4 opacity-0" style="transition-delay:0ms"><div class="flex items-center justify-between"><a href="/" class="flex-1 py-3 px-2 hover:bg-gray-100 rounded-lg transition-colors font-medium text-gray-800">Home</a></div></div><div class="mb-2 border-b-2 border-black/5 transform transition-all duration-300 ease-out -translate-x-4 opacity-0" style="transition-delay:0ms"><div class="flex items-center justify-between"><a href="/about-us" class="flex-1 py-3 px-2 hover:bg-gray-100 rounded-lg transition-colors font-medium text-gray-800">Our Company</a><button class="p-2 hover:bg-secondary rounded-lg transition-colors"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-4 h-4 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></div><div class="ml-4 mt-2 space-y-1 overflow-hidden transition-all duration-300 ease-in-out max-h-0 opacity-0"><a href="/about-us" style="transition-delay:0ms" class="block py-2 px-4 text-gray-600 hover:bg-gray-100 hover:text-red-600 rounded-lg transition-all duration-200 transform -translate-x-2 opacity-0">About Us</a><a href="/faq" style="transition-delay:0ms" class="block py-2 px-4 text-gray-600 hover:bg-gray-100 hover:text-red-600 rounded-lg transition-all duration-200 transform -translate-x-2 opacity-0">FAQ</a><a href="/reviews" style="transition-delay:0ms" class="block py-2 px-4 text-gray-600 hover:bg-gray-100 hover:text-red-600 rounded-lg transition-all duration-200 transform -translate-x-2 opacity-0">Testimonials</a></div></div><div class="mb-2 border-b-2 border-black/5 transform transition-all duration-300 ease-out -translate-x-4 opacity-0" style="transition-delay:0ms"><div class="flex items-center justify-between"><a href="#" class="flex-1 py-3 px-2 hover:bg-gray-100 rounded-lg transition-colors font-medium text-gray-800">Services</a><button class="p-2 hover:bg-secondary rounded-lg transition-colors"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-4 h-4 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></div><div class="ml-4 mt-2 space-y-1 overflow-hidden transition-all duration-300 ease-in-out max-h-0 opacity-0"><a href="/services/tile-roof" style="transition-delay:0ms" class="block py-2 px-4 text-gray-600 hover:bg-gray-100 hover:text-red-600 rounded-lg transition-all duration-200 transform -translate-x-2 opacity-0">Tile Roofing Replacement</a><a href="/services/shingle-roof" style="transition-delay:0ms" class="block py-2 px-4 text-gray-600 hover:bg-gray-100 hover:text-red-600 rounded-lg transition-all duration-200 transform -translate-x-2 opacity-0">Shingle Roof Replacement</a><a href="/services/moonson-maintenance" style="transition-delay:0ms" class="block py-2 px-4 text-gray-600 hover:bg-gray-100 hover:text-red-600 rounded-lg transition-all duration-200 transform -translate-x-2 opacity-0">Monsoon Maintenance & Roof Recovery</a><a href="/services/flat-replacement" style="transition-delay:0ms" class="block py-2 px-4 text-gray-600 hover:bg-gray-100 hover:text-red-600 rounded-lg transition-all duration-200 transform -translate-x-2 opacity-0">Flat Replacements (BUR)</a><a href="/services/roof-repairs" style="transition-delay:0ms" class="block py-2 px-4 text-gray-600 hover:bg-gray-100 hover:text-red-600 rounded-lg transition-all duration-200 transform -translate-x-2 opacity-0">All Minor & Major Roof Repairs</a><a href="/services/roof-rejuvenation" style="transition-delay:0ms" class="block py-2 px-4 text-gray-600 hover:bg-gray-100 hover:text-red-600 rounded-lg transition-all duration-200 transform -translate-x-2 opacity-0">Coatings & Roof Rejuvenation</a><a href="/services/solar-panel-cleaning" style="transition-delay:0ms" class="block py-2 px-4 text-gray-600 hover:bg-gray-100 hover:text-red-600 rounded-lg transition-all duration-200 transform -translate-x-2 opacity-0">Solar Panel Cleaning</a><a href="/services/exterior-pressure-wash" style="transition-delay:0ms" class="block py-2 px-4 text-gray-600 hover:bg-gray-100 hover:text-red-600 rounded-lg transition-all duration-200 transform -translate-x-2 opacity-0">Exterior Pressure Washing</a></div></div><div class="mb-2 border-b-2 border-black/5 transform transition-all duration-300 ease-out -translate-x-4 opacity-0" style="transition-delay:0ms"><div class="flex items-center justify-between"><a class="flex-1 py-3 px-2 hover:bg-gray-100 rounded-lg transition-colors font-medium text-gray-800 active" href="/blog" data-status="active" aria-current="page">Blog</a></div></div><div class="mb-2 border-b-2 border-black/5 transform transition-all duration-300 ease-out -translate-x-4 opacity-0" style="transition-delay:0ms"><div class="flex items-center justify-between"><a href="/contact" class="flex-1 py-3 px-2 hover:bg-gray-100 rounded-lg transition-colors font-medium text-gray-800">Contact Us</a></div></div></nav><div class="flex items-center flex-col" style="transition-delay:0ms"><h5 class="font-sitehead mb-xs">Connect with Us</h5><div class="gap-md flex" style="opacity:0;transform:translateY(20px)"><a target="_blank" href="https://www.facebook.com/dependableroofingandsolarcleaning" class="w-10 h-10 rounded-full flex items-center justify-center text-secondary border border-secondary" rel="noreferrer noopener"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-5 h-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg></a><a target="_blank" href="https://www.instagram.com/dependable_roofing_solar" class="w-10 h-10 rounded-full flex items-center justify-center text-secondary border border-secondary" rel="noreferrer noopener"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-5 h-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line></svg></a><a target="_blank" href="https://www.yelp.com/biz/dependable-roofing-and-solar-cleaning-marana-2" class="w-10 h-10 rounded-full flex items-center justify-center text-secondary border border-secondary" rel="noreferrer noopener"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" class="w-5 h-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z"></path></svg></a><a target="_blank" href="https://www.youtube.com/channel/UCE9StKE3YlpOj1TLKWiA_-A" class="w-10 h-10 rounded-full flex items-center justify-center text-secondary border border-secondary" rel="noreferrer noopener"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-5 h-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z"></path><polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"></polygon></svg></a></div></div></div></header><div class="bg-white pt-[10em] lg:pt-[13em] px-lg"><div class="w-full flex flex-col justify-center gap-sm"><h2 class="text-4xl text-center font-sitehead font-semibold text-primary max-w-3xl mx-auto">Flat Roofing: Is it Time for Maintenance or A Replacement?</h2><h5 class="mx-auto flex-col lg:flex-row inline-flex font-sitehead gap-md items-center"><img src="/images/logos/dependable-logo.png" alt="dependable logo" width="70" height="40"/> <span class="inline-flex">Dependable Roofing<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-dot" aria-hidden="true"><circle cx="12.1" cy="12.1" r="1"></circle></svg> <!-- -->2025-10-21</span></h5></div><section class="mt-md"><div class="max-w-7xl mx-auto"><div class="relative rounded-2xl overflow-hidden shadow-2xl" style="opacity:0;transform:translateY(50px)"><div class="w-full h-96 md:h-[600px] relative"><img src="https://assets.rankrunners.net/cms-media/f251bdd007efe1f79fba441fbef4a6f5f4c0cdaa115b31002dfba52083f8d5d1.webp" alt="Flat Roofing: Is it Time for Maintenance or A Replacement?" class="w-full h-full object-cover"/></div><div class="absolute inset-0 bg-gradient-to-t from-black/50 to-transparent"></div><div class="absolute bottom-8 left-8 text-white"><h3 class="text-2xl font-bold mb-2">Flat Roofing: Is it Time for Maintenance or A Replacement?</h3></div></div></div></section><div class="max-w-7xl text-black mx-auto my-2xl"><div class="relative"><div class="prose max-w-none"><div aria-autocomplete="none" aria-readonly="true" class="focus:outline-none" contentEditable="false" role="textbox" spellCheck="true"></div></div></div></div><section aria-labelledby="cta-heading"><div class="relative w-full flex items-center justify-center text-center overflow-hidden shadow-xl py-2xl" style="opacity:0;transform:translateY(50px)"><div class="absolute inset-0" style="transform:scale(1.2)"><img src="/images/ctas-bg.webp" alt="tucson sky" class="object-cover w-full h-full object-bottom"/></div><div class="absolute inset-0 bg-black/60"></div><div class="relative z-10 flex flex-col items-center justify-center p-8 max-w-4xl mx-auto"><h2 id="cta-heading" class="text-4xl md:text-4xl lg:text-5xl font-bold text-white mb-4 leading-tight">Your Roof Deserves the Best, Get a Free Quote Now!</h2><p class="text-lg md:text-xl text-white/90 mb-8 max-w-2xl">From leaks to full replacements, Dependable Roofing brings lasting protection, reliable service, and local expertise to every roof we touch.</p><div class="grid grid-cols-1 lg:grid-cols-2 justify-evenly gap-md"><span class="inline-flex" tabindex="0"><a href="/contact" class="inline-flex items-center gap-sm px-lg py-md cursor-pointer font-semibold rounded-full text-white bg-primary hover:bg-primaryHover text-center whitespace-nowrap justify-center bg-secondary !text-white hover:bg-secondary/95"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"></path></svg> <!-- -->Request a Free Estimate</a></span><a href="tel:5204443180" type="button" class="inline-flex items-center gap-sm px-lg py-md cursor-pointer font-semibold rounded-full text-white bg-primary hover:bg-primaryHover text-center whitespace-nowrap justify-center bg-white !text-secondary hover:bg-white/95" tabindex="0"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z"></path></svg> <!-- -->Call 520-444-3180</a></div><div class="mt-8 flex flex-wrap justify-center gap-6 text-sm text-white tracking-wide"><div class="flex items-center gap-2"><svg stroke="currentColor" fill="none" stroke-width="0" viewBox="0 0 24 24" class="w-4 h-4 text-secondary" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path stroke-width="2" d="M15 19H2V1h16v4m0 0a5 5 0 110 10 5 5 0 010-10zm-3 9v8l3-2 3 2v-8M5 8h6m-6 3h5m-5 3h2M5 5h2"></path></svg>Licensed & Insured</div><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield w-4 h-4 text-secondary" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path></svg>Warranty Coverage</div><div class="flex items-center gap-2"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4 text-secondary" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>4.9/5 Customer Rating</div></div></div></div></section></div><footer class="w-full bg-gradient-to-br from-gray-900 to-black text-white"><div class="relative overflow-hidden"><div class="absolute inset-0 opacity-5"><div class="absolute inset-0" style="background-image:radial-gradient(circle at 1px 1px, white 1px, transparent 0);background-size:20px 20px"></div></div><div class="relative max-w-7xl mx-auto px-4 py-16"><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8 lg:gap-12"><div style="opacity:0;transform:translateY(20px)"><div class="relative flex items-center gap-3 mb-6 w-full aspect-video"><a href="/"><img src="/images/logos/dependable-logo.png" alt="dependable logo" class="w-full h-full object-contain"/></a></div><p class="text-gray-300 mb-6 leading-relaxed">Dependable Roofing — Tucson's trusted experts for roof repair, replacement, and maintenance. Licensed, bonded, and insured for lasting quality and peace of mind.</p><div class="space-y-3"><div class="flex items-center gap-2 text-sm text-gray-300"><div class="w-2 h-2 bg-green-500 rounded-full"></div>ROC #336858 CR42, <br/>Licensed & Insured</div><div class="flex items-center gap-2 text-sm text-gray-300"><div class="w-2 h-2 bg-green-500 rounded-full"></div>50-Year Warranties</div><div class="flex items-center gap-2 text-sm text-gray-300"><div class="w-2 h-2 bg-green-500 rounded-full"></div>Free Inspections</div></div></div><div style="opacity:0;transform:translateY(20px)"><h4 class="text-lg font-semibold mb-6 text-white">Quick Links</h4><ul class="space-y-3"><li><a href="/about-us" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>About Us</a></li><li><a href="/services" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>Services</a></li><li><a href="/reviews" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>Testimonials</a></li><li><a href="/faq" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>FAQ</a></li><li><a href="/contact" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>Contact</a></li></ul></div><div style="opacity:0;transform:translateY(20px)"><h4 class="text-lg font-semibold mb-6 text-white">Our Services</h4><ul class="space-y-3"><li><a href="/services/tile-roof" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>Tile Roofing Replacement</a></li><li><a href="/services/shingle-roof" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>Shingle Roof Replacement</a></li><li><a href="/services/moonson-maintenance" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>Monsoon Maintenance & Roof Recovery</a></li><li><a href="/services/flat-replacement" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>Flat Replacements (BUR)</a></li><li><a href="/services/roof-repairs" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>All Minor & Major Roof Repairs</a></li><li><a href="/services/roof-rejuvenation" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>Coatings & Roof Rejuvenation</a></li><li><a href="/services/solar-panel-cleaning" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>Solar Panel Cleaning</a></li><li><a href="/services/exterior-pressure-wash" class="text-gray-300 hover:text-amber-400 transition-colors duration-200 flex items-center gap-2 group"><span class="w-1 h-1 bg-amber-500 rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200"></span>Exterior Pressure Washing</a></li></ul></div><div style="opacity:0;transform:translateY(20px)"><h4 class="text-lg font-semibold mb-6 text-white">Contact Info</h4><div class="space-y-sm"><a href="tel:5204443180" class="flex items-center gap-3 text-gray-300 hover:text-amber-400 transition-colors duration-200 group"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path></svg><span class="text-sm">(520) 444-3180</span></a><a href="mailto:dependableroofingandsolar@gmail.com" class="flex items-center gap-3 text-gray-300 hover:text-amber-400 transition-colors duration-200 group"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg><span class="text-sm">dependableroofingandsolar@gmail.com</span></a><a class="flex items-center gap-3 text-gray-300 hover:text-amber-400 transition-colors duration-200 group"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg><span class="text-sm">Tucson, AZ 85701</span></a><a class="flex items-center gap-3 text-gray-300 hover:text-amber-400 transition-colors duration-200 group"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg><span class="text-sm">Mon-Sat: 7:00 AM - 4:00 PM</span></a></div><div class="mt-6"><h5 class="text-sm font-semibold mb-4 text-gray-300">Follow Us</h5><div class="flex gap-3"><a target="_blank" rel="noreferrer noopener" href="https://www.facebook.com/dependableroofingandsolarcleaning" class="w-10 h-10 bg-gray-800 rounded-lg flex items-center justify-center hover:bg-amber-500 transition-colors duration-200" aria-label="Facebook"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg></a><a target="_blank" rel="noreferrer noopener" href="https://www.instagram.com/dependable_roofing_solar" class="w-10 h-10 bg-gray-800 rounded-lg flex items-center justify-center hover:bg-amber-500 transition-colors duration-200" aria-label="Instagram"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line></svg></a><a target="_blank" rel="noreferrer noopener" href="https://www.yelp.com/biz/dependable-roofing-and-solar-cleaning-marana-2" class="w-10 h-10 bg-gray-800 rounded-lg flex items-center justify-center hover:bg-amber-500 transition-colors duration-200" aria-label="Yelp"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" class="w-4 h-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z"></path></svg></a><a target="_blank" rel="noreferrer noopener" href="https://www.youtube.com/channel/UCE9StKE3YlpOj1TLKWiA_-A" class="w-10 h-10 bg-gray-800 rounded-lg flex items-center justify-center hover:bg-amber-500 transition-colors duration-200" aria-label="YouTube"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z"></path><polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"></polygon></svg></a></div></div></div></div></div></div><div class="max-w-7xl mx-auto flex justify-end pb-md px-md"><a href="/privacy-policy" class="mt-6 block text-sm text-white hover:text-amber-400 transition-colors duration-200">Privacy Policy</a></div><div class="border-t border-gray-800"><div class="max-w-7xl mx-auto px-4 py-6"><div class="flex flex-col md:flex-row items-center justify-between gap-4"><div class="text-gray-400 text-sm">© <!-- -->2026<!-- --> Dependable Roofing & Solar Panel Cleaning. All rights reserved.</div><div class="text-sm lg:text-lg"><p class="text-center text-gray-400 text-sm mt-sm flex justify-center items-center"><img class="mr-2" src="/images/rankrunners-ico.webp" alt="RankRunners Logo" width="50" height="70"/>Powered by<!-- --> <a target="_blank" rel="noreferrer noopener" class="text-white tracking-wide hover:font-semibold ml-1" href="https://rankrunners.net/portfolio">RankRunners</a></p></div></div></div></div></footer><script></script><!--/$--><script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};
|
|
9
|
+
;$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={assets:$R[4]=[$R[5]={tag:"link",attrs:$R[6]={rel:"stylesheet",href:"/@tanstack-start/styles.css?routes=__root__%2C%2F%24","data-tanstack-router-dev-styles":"true"}},$R[7]={tag:"script",attrs:$R[8]={type:"module",async:!0},children:"import { injectIntoGlobalHook } from \"/@react-refresh\";\ninjectIntoGlobalHook(window);\nwindow.$RefreshReg$ = () => {};\nwindow.$RefreshSig$ = () => (type) => type;;;import(\"/@id/virtual:tanstack-start-client-entry\")"}]}}},matches:$R[9]=[$R[10]={i:"__root__/",u:1771289281289,s:"success",ssr:!0},$R[11]={i:"/$/blog/flat-roofing-is-it-time-for-maintenance-or-a-replacement{}",u:1771289281290,s:"success",l:$R[12]={pageData:null,preview:void 0,blogMatch:$R[13]={kind:"detail",blogIndex:0,postData:$R[14]={id:"Fiyn0-mYeEqirLHMjXIxG",siteId:"lSrhHRpG5A-t1ui3Xnkos",title:"Flat Roofing: Is it Time for Maintenance or A Replacement?",slug:"flat-roofing-is-it-time-for-maintenance-or-a-replacement",content:"{\"root\":{\"children\":[{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Flat Roofing: Is it Time for Maintenance or A Replacement?\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"\",\"indent\":0,\"type\":\"heading\",\"version\":1,\"tag\":\"h1\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Flat roofs are a popular choice for many commercial and residential buildings because they offer a modern look and practical benefits. But, like all roofs, flat roofs need regular maintenance and occasional repairs to work well. Knowing when to repair or replace your flat roof is key to protecting your investment and keeping your property safe.\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"},{\"children\":[],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Understanding Flat Roofs\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"heading\",\"version\":1,\"tag\":\"h2\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Flat roofs are designed to be mostly level, which sets them apart from traditional sloped roofs. This design helps with water drainage and maximizes rooftop space for things like gardens or HVAC units. In fact, surveys show that around 70% of flat roof users utilize their roofs for some form of extra space, such as green roofs or solar panels.\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"However, flat roofs can face challenges like leaks, membrane damage, and ponding water. For example, a study found that 40% of flat roofs develop some sort of leak within the first 10 years. Spotting these problems early can save you from costly repairs or an entire roof replacement.\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"},{\"children\":[],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Signs Your Flat Roof Needs Repairs\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"heading\",\"version\":1,\"tag\":\"h2\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Recognizing the signs of roof distress is vital for taking action. Here are some common warning signs that your flat roof might need repairs:\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"},{\"children\":[{\"children\":[{\"detail\":0,\"format\":1,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Visible Damage:\",\"type\":\"text\",\"version\":1},{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\" Regularly check your roof for cracks, blisters, or punctures in the membrane. These can let water in and cause leaks. For instance, a small crack can expand and lead to a leak that results in thousands of dollars in interior repairs.\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"\",\"indent\":0,\"type\":\"listitem\",\"version\":1,\"value\":1},{\"children\":[{\"detail\":0,\"format\":1,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Ponding Water:\",\"type\":\"text\",\"version\":1},{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\" If you see standing water on your roof after heavy rain, this indicates your roofing system needs attention. Prolonged exposure to water can weaken materials and lead to leaks. If the ponding doesn't dissipate within 48 hours, it's time to call a professional! Statistics show that roofs with ponding water will fail up to 50% faster than those that drain properly.\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"\",\"indent\":0,\"type\":\"listitem\",\"version\":1,\"value\":2},{\"children\":[{\"detail\":0,\"format\":1,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Interior Water Damage:\",\"type\":\"text\",\"version\":1},{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\" Stains or discoloration on ceilings or walls may indicate a roof leak. If you notice these signs, it’s crucial to check your roof for potential issues.\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"\",\"indent\":0,\"type\":\"listitem\",\"version\":1,\"value\":3},{\"children\":[{\"detail\":0,\"format\":1,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Age of Roof:\",\"type\":\"text\",\"version\":1},{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\" Most flat roofs last between 10 and 20 years, depending on the materials used. If your roof is nearing or exceeding this age, consider having it professionally assessed to avoid unexpected problems.\",\"type\":\"text\",\"version\":1},{\"type\":\"linebreak\",\"version\":1}],\"direction\":null,\"format\":\"\",\"indent\":0,\"type\":\"listitem\",\"version\":1,\"value\":4}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"list\",\"version\":1,\"textFormat\":1,\"listType\":\"bullet\",\"start\":1,\"tag\":\"ul\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"When to Consider a Replacement\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"heading\",\"version\":1,\"tag\":\"h2\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"While repairs can extend your flat roof's life, there comes a time when a full replacement is the best choice. Here are some scenarios where replacement may be necessary:\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"},{\"children\":[{\"children\":[{\"detail\":0,\"format\":1,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Extensive Damage:\",\"type\":\"text\",\"version\":1},{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\" If your roof has significant damage over a large area or repairs frequently lead to new issues, a full replacement may be necessary.\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"\",\"indent\":0,\"type\":\"listitem\",\"version\":1,\"value\":1},{\"children\":[{\"detail\":0,\"format\":1,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Frequent Repairs:\",\"type\":\"text\",\"version\":1},{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\" If you are fixing the same problems multiple times a year, replacing the roof might be more cost-effective than ongoing repairs. Studies show that homeowners can save up to 30% in repair costs with a new roof instead of continuous patchwork.\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"\",\"indent\":0,\"type\":\"listitem\",\"version\":1,\"value\":2},{\"children\":[{\"detail\":0,\"format\":1,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Structural Issues:\",\"type\":\"text\",\"version\":1},{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\" If your flat roof sags or shows signs of structural failure, a complete replacement is vital for the safety of your building. Sagging can indicate the foundation below is decaying, if not corrected can cause extensive damages to your home.\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"\",\"indent\":0,\"type\":\"listitem\",\"version\":1,\"value\":3},{\"children\":[{\"detail\":0,\"format\":1,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Outdated Materials:\",\"type\":\"text\",\"version\":1},{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\" Some older roofing materials do not meet modern energy efficiency standards. Upgrading to contemporary materials can lead to energy savings of up to 20% annually and improve overall roof performance!\",\"type\":\"text\",\"version\":1},{\"type\":\"linebreak\",\"version\":1}],\"direction\":null,\"format\":\"\",\"indent\":0,\"type\":\"listitem\",\"version\":1,\"value\":4}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"list\",\"version\":1,\"textFormat\":1,\"listType\":\"bullet\",\"start\":1,\"tag\":\"ul\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Making the Right Decision\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"heading\",\"version\":1,\"tag\":\"h2\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Deciding whether to repair or replace your flat roof can be tough. Consult with roofing professionals who can provide thorough inspections and tailored advice. Regular maintenance not only extends your roof’s lifespan but also helps you catch issues early, which can save you money in the long run.\",\"type\":\"text\",\"version\":1},{\"type\":\"linebreak\",\"version\":1}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Final Thoughts\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"start\",\"indent\":0,\"type\":\"heading\",\"version\":1,\"tag\":\"h2\"},{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"Taking care of your flat roof is essential for your property’s longevity and stability. Knowing when to repair and when to replace can make a significant difference in costs. By staying alert and proactive, you can protect your flat roof and increase your property value for years to come. Regular inspections and timely maintenance can provide you with peace of mind and save you from larger headaches down the line.\",\"type\":\"text\",\"version\":1}],\"direction\":null,\"format\":\"\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"root\",\"version\":1}}",publishedAt:"2025-10-21T17:00:00.000Z",author:"Dependable Roofing",heroImage:$R[15]={id:"8doE5TenZ2nE7Wds8h6PH",name:"04d053_31c668ea73cf4a8ba46a70893e1a19d8~mv2.webp",altText:"Flat Roofing: Is it Time for Maintenance or A Replacement?",seoKeywords:$R[16]=[],url:"https://assets.rankrunners.net/cms-media/f251bdd007efe1f79fba441fbef4a6f5f4c0cdaa115b31002dfba52083f8d5d1.webp"},metaTitle:"Flat Roofing: Is it Time for Maintenance or A Replacement?",metaDescription:"Flat roofs are a popular choice for many commercial and residential buildings because they offer a modern look and practical benefits. But, like all roofs, flat roofs need regular maintenance and occasional repairs to work well. Knowing when to repair or replace your flat roof is key to protecting your investment and keeping your property safe.",seoKeywords:$R[17]=["flat roofing"],openGraphTitle:"",openGraphDescription:"",openGraphImage:"",googleAnalyticsId:"G-Y41LW6NEXR",googleTagManagerId:"GTM-NM2Z2BXL",headerScripts:"",footerScripts:"",structuredData:"",twitterCardType:"summary_large_image"}}},ssr:!0}],lastMatchId:"/$/blog/flat-roofing-is-it-time-for-maintenance-or-a-replacement{}"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script><script src="//cdn.callrail.com/companies/610726769/0964478d08a46013c25c/12/swap.js"></script><script type="module" async="">import { injectIntoGlobalHook } from "/@react-refresh";
|
|
10
|
+
injectIntoGlobalHook(window);
|
|
11
|
+
window.$RefreshReg$ = () => {};
|
|
12
|
+
window.$RefreshSig$ = () => (type) => type;;;import("/@id/virtual:tanstack-start-client-entry")</script></body></html>
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rankrunners-cms",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.24",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@puckeditor/core": "^0.21.1",
|
|
7
|
+
"@tanstack/react-router": "^1.166.6",
|
|
8
|
+
"@tanstack/router-core": "^1.166.6",
|
|
9
|
+
"lucide-react": "^0.577.0",
|
|
7
10
|
"next": "^16.1.6",
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"valibot": "^1.2.0",
|
|
11
|
-
"lucide-react": "^0.564.0",
|
|
12
|
-
"react": "^19.2.4"
|
|
11
|
+
"react": "^19.2.4",
|
|
12
|
+
"valibot": "^1.2.0"
|
|
13
13
|
},
|
|
14
14
|
"peerDependenciesMeta": {
|
|
15
15
|
"next": {
|
|
@@ -29,17 +29,16 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
+
"@tanstack/react-router": "^1.166.6",
|
|
33
|
+
"@tanstack/router-core": "^1.166.6",
|
|
32
34
|
"@types/react": "^19.2.14",
|
|
33
|
-
"bun-types": "^1.3.
|
|
34
|
-
"
|
|
35
|
-
"@tanstack/router-core": "^1.160.0",
|
|
36
|
-
"@tanstack/react-router": "^1.160.2",
|
|
35
|
+
"bun-types": "^1.3.10",
|
|
36
|
+
"lucide-react": "^0.577.0",
|
|
37
37
|
"next": "^16.1.6",
|
|
38
|
-
"
|
|
39
|
-
"
|
|
38
|
+
"typescript": "^5.9.3",
|
|
39
|
+
"valibot": "^1.2.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"classnames": "^2.5.1"
|
|
43
|
-
"tailwindcss": "^4.1.18"
|
|
42
|
+
"classnames": "^2.5.1"
|
|
44
43
|
}
|
|
45
44
|
}
|