@digo-labs/ui 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/dist/animation/motion-animate-presence.d.ts +15 -0
  2. package/dist/blocks/auth-guard.d.ts +7 -0
  3. package/dist/blocks/card.d.ts +20 -0
  4. package/dist/blocks/chat-thread.d.ts +15 -0
  5. package/dist/blocks/command-button.d.ts +9 -0
  6. package/dist/blocks/copy-paste-button.d.ts +9 -0
  7. package/dist/blocks/dropzone.d.ts +23 -0
  8. package/dist/blocks/font-picker.d.ts +8 -0
  9. package/dist/blocks/google-signin-button.d.ts +8 -0
  10. package/dist/blocks/image-dropzone.d.ts +11 -0
  11. package/dist/blocks/navbar.d.ts +9 -0
  12. package/dist/blocks/palette-picker.d.ts +9 -0
  13. package/dist/blocks/parameter-color-swatch-picker.d.ts +9 -0
  14. package/dist/blocks/parameter-color.d.ts +10 -0
  15. package/dist/blocks/parameter-combobox.d.ts +18 -0
  16. package/dist/blocks/parameter-files.d.ts +9 -0
  17. package/dist/blocks/parameter-font-picker.d.ts +9 -0
  18. package/dist/blocks/parameter-image.d.ts +9 -0
  19. package/dist/blocks/parameter-number.d.ts +10 -0
  20. package/dist/blocks/parameter-palette-picker.d.ts +10 -0
  21. package/dist/blocks/parameter-preset-picker.d.ts +10 -0
  22. package/dist/blocks/parameter-select.d.ts +17 -0
  23. package/dist/blocks/parameter-shadow-group.d.ts +16 -0
  24. package/dist/blocks/parameter-slider.d.ts +10 -0
  25. package/dist/blocks/parameter-switch.d.ts +9 -0
  26. package/dist/blocks/parameter-text-area.d.ts +9 -0
  27. package/dist/blocks/parameter-text.d.ts +9 -0
  28. package/dist/blocks/parameter-toggle-group.d.ts +18 -0
  29. package/dist/blocks/parameter-toggle.d.ts +11 -0
  30. package/dist/blocks/parameter-typography-group.d.ts +16 -0
  31. package/dist/blocks/placeholder.d.ts +13 -0
  32. package/dist/blocks/preset-picker.d.ts +9 -0
  33. package/dist/blocks/prompt-input.d.ts +43 -0
  34. package/dist/blocks/switch-theme.d.ts +7 -0
  35. package/dist/blocks/toggle-theme.d.ts +3 -0
  36. package/dist/blocks/transparent-background.d.ts +6 -0
  37. package/dist/components/accordion.d.ts +9 -0
  38. package/dist/components/alert.d.ts +11 -0
  39. package/dist/components/autocomplete.d.ts +31 -0
  40. package/dist/components/button.d.ts +6 -0
  41. package/dist/components/chart.d.ts +43 -0
  42. package/dist/components/checkbox.d.ts +6 -0
  43. package/dist/components/code-block.d.ts +16 -0
  44. package/dist/components/collapsible.d.ts +20 -0
  45. package/dist/components/color-area.d.ts +7 -0
  46. package/dist/components/color-field.d.ts +7 -0
  47. package/dist/components/color-input.d.ts +11 -0
  48. package/dist/components/color-picker.d.ts +18 -0
  49. package/dist/components/color-slider.d.ts +11 -0
  50. package/dist/components/color-swatch-picker.d.ts +9 -0
  51. package/dist/components/color-swatch.d.ts +8 -0
  52. package/dist/components/combobox.d.ts +44 -0
  53. package/dist/components/command.d.ts +24 -0
  54. package/dist/components/drawer.d.ts +23 -0
  55. package/dist/components/empty.d.ts +18 -0
  56. package/dist/components/field-set.d.ts +7 -0
  57. package/dist/components/field.d.ts +12 -0
  58. package/dist/components/form.d.ts +6 -0
  59. package/dist/components/group.d.ts +12 -0
  60. package/dist/components/icon.d.ts +7 -0
  61. package/dist/components/image.d.ts +9 -0
  62. package/dist/components/input-group.d.ts +15 -0
  63. package/dist/components/input.d.ts +8 -0
  64. package/dist/components/kbd.d.ts +7 -0
  65. package/dist/components/label.d.ts +6 -0
  66. package/dist/components/loader.d.ts +12 -0
  67. package/dist/components/masonry.d.ts +8 -0
  68. package/dist/components/navigation-menu.d.ts +14 -0
  69. package/dist/components/number-field.d.ts +10 -0
  70. package/dist/components/pagination.d.ts +16 -0
  71. package/dist/components/parameter-group.d.ts +12 -0
  72. package/dist/components/parameter.d.ts +21 -0
  73. package/dist/components/popover.d.ts +11 -0
  74. package/dist/components/progress.d.ts +10 -0
  75. package/dist/components/reorder-list.d.ts +1 -0
  76. package/dist/components/scroll-area.d.ts +10 -0
  77. package/dist/components/select.d.ts +23 -0
  78. package/dist/components/separator.d.ts +6 -0
  79. package/dist/components/sidebar.d.ts +21 -0
  80. package/dist/components/slider.d.ts +17 -0
  81. package/dist/components/spacer.d.ts +6 -0
  82. package/dist/components/spinner.d.ts +12 -0
  83. package/dist/components/switch.d.ts +10 -0
  84. package/dist/components/table-of-contents.d.ts +22 -0
  85. package/dist/components/tabs.d.ts +9 -0
  86. package/dist/components/text-area.d.ts +9 -0
  87. package/dist/components/tint-image.d.ts +7 -0
  88. package/dist/components/toast.d.ts +9 -0
  89. package/dist/components/toggle-group.d.ts +10 -0
  90. package/dist/components/toggle.d.ts +6 -0
  91. package/dist/components/tooltip.d.ts +21 -0
  92. package/dist/cursors/cursor-bracket.d.ts +11 -0
  93. package/dist/cursors/cursor-clipping.d.ts +9 -0
  94. package/dist/cursors/cursor-container.d.ts +18 -0
  95. package/dist/effects/border-glow.d.ts +23 -0
  96. package/dist/effects/border-trail.d.ts +10 -0
  97. package/dist/effects/counter.d.ts +14 -0
  98. package/dist/effects/cube-scene.d.ts +11 -0
  99. package/dist/effects/dark-veil.d.ts +12 -0
  100. package/dist/effects/dissolve-overlay.d.ts +15 -0
  101. package/dist/effects/dot-grid.d.ts +19 -0
  102. package/dist/effects/draggable-container.d.ts +10 -0
  103. package/dist/effects/faulty-terminal.d.ts +25 -0
  104. package/dist/effects/floating-lines.d.ts +25 -0
  105. package/dist/effects/glass-container.d.ts +13 -0
  106. package/dist/effects/grainient.d.ts +28 -0
  107. package/dist/effects/image-transition.d.ts +24 -0
  108. package/dist/effects/infinite-menu.d.ts +19 -0
  109. package/dist/effects/iridescence.d.ts +12 -0
  110. package/dist/effects/letter-swap.d.ts +8 -0
  111. package/dist/effects/marquee-bar.d.ts +6 -0
  112. package/dist/effects/marquee.d.ts +26 -0
  113. package/dist/effects/noise.d.ts +10 -0
  114. package/dist/effects/orb.d.ts +15 -0
  115. package/dist/effects/text-morph.d.ts +14 -0
  116. package/dist/effects/text-pressure.d.ts +13 -0
  117. package/dist/effects/text-roll.d.ts +22 -0
  118. package/dist/effects/text-scramble.d.ts +16 -0
  119. package/dist/effects/text-shimmer-wave.d.ts +16 -0
  120. package/dist/effects/text-shimmer.d.ts +13 -0
  121. package/dist/effects/text-swap-letter.d.ts +6 -0
  122. package/dist/effects/text-type.d.ts +27 -0
  123. package/dist/hooks/use-animated-value.d.ts +1 -0
  124. package/dist/hooks/use-element-size.d.ts +5 -0
  125. package/dist/hooks/use-focus-size.d.ts +1 -0
  126. package/dist/hooks/use-fullscreen.d.ts +1 -0
  127. package/dist/hooks/use-preloaded-image.d.ts +1 -0
  128. package/dist/hooks/use-stopwatch.d.ts +9 -0
  129. package/dist/hooks/use-timer.d.ts +15 -0
  130. package/dist/index.css +3 -0
  131. package/dist/index.d.ts +141 -0
  132. package/dist/index.js +13654 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/other/animations.d.ts +7 -0
  135. package/dist/other/image-transition-effects.d.ts +3 -0
  136. package/dist/outdated/lottie.d.ts +8 -0
  137. package/dist/outdated/qr-code.d.ts +8 -0
  138. package/dist/outdated/shape.d.ts +11 -0
  139. package/dist/outdated/tint.d.ts +6 -0
  140. package/dist/presets/curated/default.d.ts +2 -0
  141. package/dist/presets/curated/index.d.ts +3 -0
  142. package/dist/presets/curated/ocean.d.ts +2 -0
  143. package/dist/presets/curated/retro-futuristic.d.ts +2 -0
  144. package/dist/presets/helpers.d.ts +4 -0
  145. package/dist/presets/index.d.ts +6 -0
  146. package/dist/presets/palettes.d.ts +2 -0
  147. package/dist/presets/types.d.ts +40 -0
  148. package/dist/providers/command-provider.d.ts +11 -0
  149. package/dist/providers/component-styles-provider.d.ts +20 -0
  150. package/dist/providers/design-system-provider.d.ts +27 -0
  151. package/dist/styles/accordion.d.ts +85 -0
  152. package/dist/styles/alert.d.ts +253 -0
  153. package/dist/styles/autocomplete.d.ts +141 -0
  154. package/dist/styles/button.d.ts +238 -0
  155. package/dist/styles/card.d.ts +61 -0
  156. package/dist/styles/chart.d.ts +109 -0
  157. package/dist/styles/chat-thread.d.ts +117 -0
  158. package/dist/styles/checkbox.d.ts +45 -0
  159. package/dist/styles/code-block.d.ts +69 -0
  160. package/dist/styles/collapsible.d.ts +69 -0
  161. package/dist/styles/color-area.d.ts +45 -0
  162. package/dist/styles/color-field.d.ts +45 -0
  163. package/dist/styles/color-input.d.ts +85 -0
  164. package/dist/styles/color-picker.d.ts +101 -0
  165. package/dist/styles/color-slider.d.ts +79 -0
  166. package/dist/styles/color-swatch-picker.d.ts +69 -0
  167. package/dist/styles/color-swatch.d.ts +53 -0
  168. package/dist/styles/combobox.d.ts +197 -0
  169. package/dist/styles/command-button.d.ts +45 -0
  170. package/dist/styles/command.d.ts +125 -0
  171. package/dist/styles/counter.d.ts +85 -0
  172. package/dist/styles/drawer.d.ts +192 -0
  173. package/dist/styles/dropzone.d.ts +125 -0
  174. package/dist/styles/empty.d.ts +101 -0
  175. package/dist/styles/field-set.d.ts +45 -0
  176. package/dist/styles/field.d.ts +69 -0
  177. package/dist/styles/font-picker.d.ts +117 -0
  178. package/dist/styles/form.d.ts +37 -0
  179. package/dist/styles/google-signin-button.d.ts +61 -0
  180. package/dist/styles/group.d.ts +83 -0
  181. package/dist/styles/image-dropzone.d.ts +101 -0
  182. package/dist/styles/image.d.ts +53 -0
  183. package/dist/styles/index.d.ts +86 -0
  184. package/dist/styles/input-group.d.ts +61 -0
  185. package/dist/styles/input.d.ts +126 -0
  186. package/dist/styles/kbd.d.ts +45 -0
  187. package/dist/styles/label.d.ts +37 -0
  188. package/dist/styles/masonry.d.ts +45 -0
  189. package/dist/styles/motion-animate-presence.d.ts +45 -0
  190. package/dist/styles/navbar.d.ts +61 -0
  191. package/dist/styles/navigation-menu.d.ts +133 -0
  192. package/dist/styles/number-field.d.ts +69 -0
  193. package/dist/styles/pagination.d.ts +77 -0
  194. package/dist/styles/palette-picker.d.ts +101 -0
  195. package/dist/styles/parameter-color-swatch-picker.d.ts +69 -0
  196. package/dist/styles/parameter-color.d.ts +69 -0
  197. package/dist/styles/parameter-combobox.d.ts +133 -0
  198. package/dist/styles/parameter-files.d.ts +69 -0
  199. package/dist/styles/parameter-font-picker.d.ts +69 -0
  200. package/dist/styles/parameter-group.d.ts +77 -0
  201. package/dist/styles/parameter-image.d.ts +69 -0
  202. package/dist/styles/parameter-number.d.ts +69 -0
  203. package/dist/styles/parameter-palette-picker.d.ts +69 -0
  204. package/dist/styles/parameter-preset-picker.d.ts +69 -0
  205. package/dist/styles/parameter-select.d.ts +85 -0
  206. package/dist/styles/parameter-shadow-group.d.ts +53 -0
  207. package/dist/styles/parameter-slider.d.ts +77 -0
  208. package/dist/styles/parameter-switch.d.ts +69 -0
  209. package/dist/styles/parameter-text-area.d.ts +69 -0
  210. package/dist/styles/parameter-text.d.ts +69 -0
  211. package/dist/styles/parameter-toggle-group.d.ts +77 -0
  212. package/dist/styles/parameter-toggle.d.ts +69 -0
  213. package/dist/styles/parameter-typography-group.d.ts +45 -0
  214. package/dist/styles/parameter.d.ts +85 -0
  215. package/dist/styles/placeholder.d.ts +69 -0
  216. package/dist/styles/popover.d.ts +77 -0
  217. package/dist/styles/preset-picker.d.ts +109 -0
  218. package/dist/styles/progress.d.ts +69 -0
  219. package/dist/styles/prompt-input.d.ts +141 -0
  220. package/dist/styles/properties.d.ts +101 -0
  221. package/dist/styles/scroll-area.d.ts +61 -0
  222. package/dist/styles/select.d.ts +157 -0
  223. package/dist/styles/separator.d.ts +70 -0
  224. package/dist/styles/sidebar.d.ts +109 -0
  225. package/dist/styles/slider.d.ts +167 -0
  226. package/dist/styles/spacer.d.ts +37 -0
  227. package/dist/styles/spinner.d.ts +56 -0
  228. package/dist/styles/switch.d.ts +94 -0
  229. package/dist/styles/table-of-contents.d.ts +85 -0
  230. package/dist/styles/tabs.d.ts +166 -0
  231. package/dist/styles/text-area.d.ts +168 -0
  232. package/dist/styles/text-shimmer.d.ts +37 -0
  233. package/dist/styles/tint-image.d.ts +45 -0
  234. package/dist/styles/toast.d.ts +352 -0
  235. package/dist/styles/toggle-group.d.ts +136 -0
  236. package/dist/styles/toggle.d.ts +91 -0
  237. package/dist/styles/tooltip.d.ts +61 -0
  238. package/dist/utils/code-meta-parser.d.ts +6 -0
  239. package/dist/utils/helpers.d.ts +2 -0
  240. package/dist/utils/motion-presets.d.ts +125 -0
  241. package/dist/utils/shiki-highlighter.d.ts +10 -0
  242. package/dist/utils/styles.d.ts +4 -0
  243. package/package.json +69 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/presets/palettes.ts","../src/presets/types.ts","../src/presets/helpers.ts","../src/providers/design-system-provider.tsx","../src/providers/component-styles-provider.tsx","../src/utils/styles.ts","../src/utils/motion-presets.ts","../src/animation/motion-animate-presence.tsx","../src/other/animations.ts","../src/blocks/auth-guard.tsx","../src/blocks/card.tsx","../src/blocks/chat-thread.tsx","../src/components/icon.tsx","../src/components/kbd.tsx","../src/blocks/command-button.tsx","../src/components/button.tsx","../src/blocks/copy-paste-button.tsx","../src/components/field.tsx","../src/blocks/dropzone.tsx","../src/blocks/font-picker.tsx","../src/blocks/image-dropzone.tsx","../src/blocks/navbar.tsx","../src/blocks/palette-picker.tsx","../src/blocks/parameter-text.tsx","../src/blocks/parameter-palette-picker.tsx","../src/blocks/parameter-text-area.tsx","../src/blocks/parameter-slider.tsx","../src/blocks/parameter-toggle-group.tsx","../src/blocks/parameter-switch.tsx","../src/blocks/parameter-toggle.tsx","../src/blocks/parameter-color.tsx","../src/blocks/parameter-color-swatch-picker.tsx","../src/blocks/parameter-combobox.tsx","../src/blocks/parameter-files.tsx","../src/blocks/parameter-font-picker.tsx","../src/blocks/parameter-image.tsx","../src/blocks/parameter-number.tsx","../src/blocks/parameter-preset-picker.tsx","../src/blocks/parameter-select.tsx","../src/components/parameter-group.tsx","../src/blocks/parameter-typography-group.tsx","../src/blocks/parameter-shadow-group.tsx","../src/blocks/placeholder.tsx","../src/presets/curated/default.ts","../src/presets/curated/ocean.ts","../src/presets/curated/retro-futuristic.ts","../src/presets/index.ts","../src/blocks/preset-picker.tsx","../src/blocks/prompt-input.tsx","../src/blocks/google-signin-button.tsx","../src/blocks/switch-theme.tsx","../src/blocks/toggle-theme.tsx","../src/blocks/transparent-background.tsx","../src/components/accordion.tsx","../src/components/alert.tsx","../src/components/autocomplete.tsx","../src/components/chart.tsx","../src/components/checkbox.tsx","../src/components/code-block.tsx","../src/components/collapsible.tsx","../src/components/color-area.tsx","../src/components/color-field.tsx","../src/components/color-input.tsx","../src/components/color-picker.tsx","../src/components/color-slider.tsx","../src/components/color-swatch.tsx","../src/components/color-swatch-picker.tsx","../src/components/combobox.tsx","../src/components/command.tsx","../src/effects/counter.tsx","../src/components/drawer.tsx","../src/components/empty.tsx","../src/components/field-set.tsx","../src/components/form.tsx","../src/components/group.tsx","../src/components/image.tsx","../src/components/input-group.tsx","../src/components/input.tsx","../src/components/label.tsx","../src/components/masonry.tsx","../src/components/navigation-menu.tsx","../src/components/number-field.tsx","../src/components/pagination.tsx","../src/components/parameter.tsx","../src/components/popover.tsx","../src/components/progress.tsx","../src/components/scroll-area.tsx","../src/components/select.tsx","../src/components/separator.tsx","../src/components/sidebar.tsx","../src/components/spacer.tsx","../src/components/slider.tsx","../src/components/spinner.tsx","../src/components/switch.tsx","../src/components/loader.tsx","../src/components/tabs.tsx","../src/components/toggle.tsx","../src/components/toggle-group.tsx","../src/components/table-of-contents.tsx","../src/components/text-area.tsx","../src/components/tint-image.tsx","../src/components/toast.tsx","../src/components/tooltip.tsx","../src/cursors/cursor-container.tsx","../src/cursors/cursor-clipping.tsx","../src/cursors/cursor-bracket.tsx","../src/effects/border-glow.tsx","../src/effects/border-trail.tsx","../src/effects/dark-veil.tsx","../src/effects/dissolve-overlay.tsx","../src/effects/dot-grid.tsx","../src/effects/draggable-container.tsx","../src/effects/faulty-terminal.tsx","../src/effects/floating-lines.tsx","../src/effects/glass-container.tsx","../src/effects/grainient.tsx","../src/other/image-transition-effects.ts","../src/effects/image-transition.tsx","../src/effects/infinite-menu.tsx","../src/effects/iridescence.tsx","../src/effects/letter-swap.tsx","../src/effects/marquee-bar.tsx","../src/effects/marquee.tsx","../src/effects/noise.tsx","../src/effects/orb.tsx","../src/effects/text-morph.tsx","../src/effects/text-pressure.tsx","../src/effects/text-roll.tsx","../src/effects/text-scramble.tsx","../src/effects/text-shimmer.tsx","../src/effects/text-shimmer-wave.tsx","../src/effects/text-swap-letter.tsx","../src/effects/text-type.tsx","../src/hooks/use-animated-value.tsx","../src/hooks/use-element-size.tsx","../src/hooks/use-focus-size.tsx","../src/hooks/use-preloaded-image.tsx","../src/hooks/use-stopwatch.tsx","../src/hooks/use-timer.tsx","../src/providers/command-provider.tsx","../src/styles/accordion.ts","../src/styles/alert.ts","../src/styles/autocomplete.ts","../src/styles/button.ts","../src/styles/slider.ts","../src/styles/card.ts","../src/styles/chat-thread.ts","../src/styles/chart.ts","../src/styles/checkbox.ts","../src/styles/code-block.ts","../src/styles/collapsible.ts","../src/styles/color-area.ts","../src/styles/color-field.ts","../src/styles/color-input.ts","../src/styles/color-picker.ts","../src/styles/color-slider.ts","../src/styles/color-swatch.ts","../src/styles/color-swatch-picker.ts","../src/styles/combobox.ts","../src/styles/command-button.ts","../src/styles/command.ts","../src/styles/counter.ts","../src/styles/drawer.ts","../src/styles/dropzone.ts","../src/styles/image.ts","../src/styles/image-dropzone.ts","../src/styles/empty.ts","../src/styles/field.ts","../src/styles/field-set.ts","../src/styles/form.ts","../src/styles/group.ts","../src/styles/input-group.ts","../src/styles/input.ts","../src/styles/masonry.ts","../src/styles/kbd.ts","../src/styles/label.ts","../src/styles/motion-animate-presence.ts","../src/styles/navbar.ts","../src/styles/navigation-menu.ts","../src/styles/number-field.ts","../src/styles/pagination.ts","../src/styles/font-picker.ts","../src/styles/google-signin-button.ts","../src/styles/palette-picker.ts","../src/styles/parameter.ts","../src/styles/parameter-color.ts","../src/styles/parameter-color-swatch-picker.ts","../src/styles/parameter-combobox.ts","../src/styles/parameter-font-picker.ts","../src/styles/parameter-group.ts","../src/styles/parameter-palette-picker.ts","../src/styles/parameter-preset-picker.ts","../src/styles/parameter-slider.ts","../src/styles/parameter-switch.ts","../src/styles/parameter-text.ts","../src/styles/parameter-text-area.ts","../src/styles/parameter-toggle.ts","../src/styles/parameter-toggle-group.ts","../src/styles/parameter-typography-group.ts","../src/styles/parameter-files.ts","../src/styles/parameter-image.ts","../src/styles/parameter-number.ts","../src/styles/parameter-select.ts","../src/styles/parameter-shadow-group.ts","../src/styles/placeholder.ts","../src/styles/popover.ts","../src/styles/preset-picker.ts","../src/styles/progress.ts","../src/styles/prompt-input.ts","../src/styles/properties.ts","../src/styles/scroll-area.ts","../src/styles/select.ts","../src/styles/separator.ts","../src/styles/sidebar.ts","../src/styles/spacer.ts","../src/styles/spinner.ts","../src/styles/switch.ts","../src/styles/table-of-contents.ts","../src/styles/tabs.ts","../src/styles/text-area.ts","../src/styles/text-shimmer.ts","../src/styles/tint-image.ts","../src/styles/toast.ts","../src/styles/toggle-group.ts","../src/styles/toggle.ts","../src/styles/tooltip.ts","../src/utils/shiki-highlighter.ts","../src/utils/code-meta-parser.ts","../src/utils/helpers.ts","../src/outdated/lottie.tsx","../src/outdated/qr-code.tsx","../src/shapes/square.svg?react","../src/shapes/circle.svg?react","../src/outdated/shape.tsx","../src/outdated/tint.tsx"],"sourcesContent":["import type { Palettes } from './types';\n\nexport const PALETTES: Palettes = {\n amber: {\n light: {\n 1: '#fefdfb', 2: '#fefbe9', 3: '#fff7c2', 4: '#ffee9c',\n 5: '#fbe577', 6: '#f3d673', 7: '#e9c162', 8: '#e2a336',\n 9: '#ffc53d', 10: '#ffba18', 11: '#ab6400', 12: '#4f3422',\n },\n lightA: {\n 1: '#c0800004', 2: '#f4d10016', 3: '#ffde003d', 4: '#ffd40063',\n 5: '#f8cf0088', 6: '#eab5008c', 7: '#dc9b009d', 8: '#da8a00c9',\n 9: '#ffb300c2', 10: '#ffb300e7', 11: '#ab6400', 12: '#341500dd',\n },\n dark: {\n 1: '#16120c', 2: '#1d180f', 3: '#302008', 4: '#3f2700',\n 5: '#4d3000', 6: '#5c3d05', 7: '#714f19', 8: '#8f6424',\n 9: '#ffc53d', 10: '#ffd60a', 11: '#ffca16', 12: '#ffe7b3',\n },\n darkA: {\n 1: '#e63c0006', 2: '#fd9b000d', 3: '#fa820022', 4: '#fc820032',\n 5: '#fd8b0041', 6: '#fd9b0051', 7: '#ffab2567', 8: '#ffae3587',\n 9: '#ffc53d', 10: '#ffd60a', 11: '#ffca16', 12: '#ffe7b3',\n },\n },\n blue: {\n light: {\n 1: '#fbfdff', 2: '#f4faff', 3: '#e6f4fe', 4: '#d5efff',\n 5: '#c2e5ff', 6: '#acd8fc', 7: '#8ec8f6', 8: '#5eb1ef',\n 9: '#0090ff', 10: '#0588f0', 11: '#0d74ce', 12: '#113264',\n },\n lightA: {\n 1: '#0080ff04', 2: '#008cff0b', 3: '#008ff519', 4: '#009eff2a',\n 5: '#0093ff3d', 6: '#0088f653', 7: '#0083eb71', 8: '#0084e6a1',\n 9: '#0090ff', 10: '#0086f0fa', 11: '#006dcbf2', 12: '#002359ee',\n },\n dark: {\n 1: '#0d1520', 2: '#111927', 3: '#0d2847', 4: '#003362',\n 5: '#004074', 6: '#104d87', 7: '#205d9e', 8: '#2870bd',\n 9: '#0090ff', 10: '#3b9eff', 11: '#70b8ff', 12: '#c2e6ff',\n },\n darkA: {\n 1: '#004df211', 2: '#1166fb18', 3: '#0077ff3a', 4: '#0075ff57',\n 5: '#0081fd6b', 6: '#0f89fd7f', 7: '#2a91fe98', 8: '#3094feb9',\n 9: '#0090ff', 10: '#3b9eff', 11: '#70b8ff', 12: '#c2e6ff',\n },\n },\n bronze: {\n light: {\n 1: '#fdfcfc', 2: '#fdf7f5', 3: '#f6edea', 4: '#efe4df',\n 5: '#e7d9d3', 6: '#dfcdc5', 7: '#d3bcb3', 8: '#c2a499',\n 9: '#a18072', 10: '#957468', 11: '#7d5e54', 12: '#43302b',\n },\n lightA: {\n 1: '#55000003', 2: '#cc33000a', 3: '#92250015', 4: '#80280020',\n 5: '#7423002c', 6: '#7324003a', 7: '#6c1f004c', 8: '#671c0066',\n 9: '#551a008d', 10: '#4c150097', 11: '#3d0f00ab', 12: '#1d0600d4',\n },\n dark: {\n 1: '#141110', 2: '#1c1917', 3: '#262220', 4: '#302a27',\n 5: '#3b3330', 6: '#493e3a', 7: '#5a4c47', 8: '#6f5f58',\n 9: '#a18072', 10: '#ae8c7e', 11: '#d4b3a5', 12: '#ede0d9',\n },\n darkA: {\n 1: '#d1110004', 2: '#fbbc910c', 3: '#faceb817', 4: '#facdb622',\n 5: '#ffd2c12d', 6: '#ffd1c03c', 7: '#fdd0c04f', 8: '#ffd6c565',\n 9: '#fec7b09b', 10: '#fecab5a9', 11: '#ffd7c6d1', 12: '#fff1e9ec',\n },\n },\n brown: {\n light: {\n 1: '#fefdfc', 2: '#fcf9f6', 3: '#f6eee7', 4: '#f0e4d9',\n 5: '#ebdaca', 6: '#e4cdb7', 7: '#dcbc9f', 8: '#cea37e',\n 9: '#ad7f58', 10: '#a07553', 11: '#815e46', 12: '#3e332e',\n },\n lightA: {\n 1: '#aa550003', 2: '#aa550009', 3: '#a04b0018', 4: '#9b4a0026',\n 5: '#9f4d0035', 6: '#a04e0048', 7: '#a34e0060', 8: '#9f4a0081',\n 9: '#823c00a7', 10: '#723300ac', 11: '#522100b9', 12: '#140600d1',\n },\n dark: {\n 1: '#12110f', 2: '#1c1816', 3: '#28211d', 4: '#322922',\n 5: '#3e3128', 6: '#4d3c2f', 7: '#614a39', 8: '#7c5f46',\n 9: '#ad7f58', 10: '#b88c67', 11: '#dbb594', 12: '#f2e1ca',\n },\n darkA: {\n 1: '#91110002', 2: '#fba67c0c', 3: '#fcb58c19', 4: '#fbbb8a24',\n 5: '#fcb88931', 6: '#fdba8741', 7: '#ffbb8856', 8: '#ffbe8773',\n 9: '#feb87da8', 10: '#ffc18cb3', 11: '#fed1aad9', 12: '#feecd4f2',\n },\n },\n crimson: {\n light: {\n 1: '#fffcfd', 2: '#fef7f9', 3: '#ffe9f0', 4: '#fedce7',\n 5: '#facedd', 6: '#f3bed1', 7: '#eaacc3', 8: '#e093b2',\n 9: '#e93d82', 10: '#df3478', 11: '#cb1d63', 12: '#621639',\n },\n lightA: {\n 1: '#ff005503', 2: '#e0004008', 3: '#ff005216', 4: '#f8005123',\n 5: '#e5004f31', 6: '#d0004b41', 7: '#bf004753', 8: '#b6004a6c',\n 9: '#e2005bc2', 10: '#d70056cb', 11: '#c4004fe2', 12: '#530026e9',\n },\n dark: {\n 1: '#191114', 2: '#201318', 3: '#381525', 4: '#4d122f',\n 5: '#5c1839', 6: '#6d2545', 7: '#873356', 8: '#b0436e',\n 9: '#e93d82', 10: '#ee518a', 11: '#ff92ad', 12: '#fdd3e8',\n },\n darkA: {\n 1: '#f4126709', 2: '#f22f7a11', 3: '#fe2a8b2a', 4: '#fd158741',\n 5: '#fd278f51', 6: '#fe459763', 7: '#fd559b7f', 8: '#fe5b9bab',\n 9: '#fe418de8', 10: '#ff5693ed', 11: '#ff92ad', 12: '#ffd5eafd',\n },\n },\n cyan: {\n light: {\n 1: '#fafdfe', 2: '#f2fafb', 3: '#def7f9', 4: '#caf1f6',\n 5: '#b5e9f0', 6: '#9ddde7', 7: '#7dcedc', 8: '#3db9cf',\n 9: '#00a2c7', 10: '#0797b9', 11: '#107d98', 12: '#0d3c48',\n },\n lightA: {\n 1: '#0099cc05', 2: '#009db10d', 3: '#00c2d121', 4: '#00bcd435',\n 5: '#01b4cc4a', 6: '#00a7c162', 7: '#009fbb82', 8: '#00a3c0c2',\n 9: '#00a2c7', 10: '#0094b7f8', 11: '#007491ef', 12: '#00323ef2',\n },\n dark: {\n 1: '#0b161a', 2: '#101b20', 3: '#082c36', 4: '#003848',\n 5: '#004558', 6: '#045468', 7: '#12677e', 8: '#11809c',\n 9: '#00a2c7', 10: '#23afd0', 11: '#4ccce6', 12: '#b6ecf7',\n },\n darkA: {\n 1: '#0091f70a', 2: '#02a7f211', 3: '#00befd28', 4: '#00baff3b',\n 5: '#00befd4d', 6: '#00c7fd5e', 7: '#14cdff75', 8: '#11cfff95',\n 9: '#00cfffc3', 10: '#28d6ffcd', 11: '#52e1fee5', 12: '#bbf3fef7',\n },\n },\n gold: {\n light: {\n 1: '#fdfdfc', 2: '#faf9f2', 3: '#f2f0e7', 4: '#eae6db',\n 5: '#e1dccf', 6: '#d8d0bf', 7: '#cbc0aa', 8: '#b9a88d',\n 9: '#978365', 10: '#8c7a5e', 11: '#71624b', 12: '#3b352b',\n },\n lightA: {\n 1: '#55550003', 2: '#9d8a000d', 3: '#75600018', 4: '#6b4e0024',\n 5: '#60460030', 6: '#64440040', 7: '#63420055', 8: '#633d0072',\n 9: '#5332009a', 10: '#492d00a1', 11: '#362100b4', 12: '#130c00d4',\n },\n dark: {\n 1: '#121211', 2: '#1b1a17', 3: '#24231f', 4: '#2d2b26',\n 5: '#38352e', 6: '#444039', 7: '#544f46', 8: '#696256',\n 9: '#978365', 10: '#a39073', 11: '#cbb99f', 12: '#e8e2d9',\n },\n darkA: {\n 1: '#91911102', 2: '#f9e29d0b', 3: '#f8ecbb15', 4: '#ffeec41e',\n 5: '#feecc22a', 6: '#feebcb37', 7: '#ffedcd48', 8: '#fdeaca5f',\n 9: '#ffdba690', 10: '#fedfb09d', 11: '#fee7c6c8', 12: '#fef7ede7',\n },\n },\n grass: {\n light: {\n 1: '#fbfefb', 2: '#f5fbf5', 3: '#e9f6e9', 4: '#daf1db',\n 5: '#c9e8ca', 6: '#b2ddb5', 7: '#94ce9a', 8: '#65ba74',\n 9: '#46a758', 10: '#3e9b4f', 11: '#2a7e3b', 12: '#203c25',\n },\n lightA: {\n 1: '#00c00004', 2: '#0099000a', 3: '#00970016', 4: '#009f0725',\n 5: '#00930536', 6: '#008f0a4d', 7: '#018b0f6b', 8: '#008d199a',\n 9: '#008619b9', 10: '#007b17c1', 11: '#006514d5', 12: '#002006df',\n },\n dark: {\n 1: '#0e1511', 2: '#141a15', 3: '#1b2a1e', 4: '#1d3a24',\n 5: '#25482d', 6: '#2d5736', 7: '#366740', 8: '#3e7949',\n 9: '#46a758', 10: '#53b365', 11: '#71d083', 12: '#c2f0c2',\n },\n darkA: {\n 1: '#00de1205', 2: '#5ef7780a', 3: '#70fe8c1b', 4: '#57ff802c',\n 5: '#68ff8b3b', 6: '#71ff8f4b', 7: '#77fd925d', 8: '#77fd9070',\n 9: '#65ff82a1', 10: '#72ff8dae', 11: '#89ff9fcd', 12: '#ceffceef',\n },\n },\n gray: {\n light: {\n 1: '#fcfcfc', 2: '#f9f9f9', 3: '#f0f0f0', 4: '#e8e8e8',\n 5: '#e0e0e0', 6: '#d9d9d9', 7: '#cecece', 8: '#bbbbbb',\n 9: '#8d8d8d', 10: '#838383', 11: '#646464', 12: '#202020',\n },\n lightA: {\n 1: '#00000003', 2: '#00000006', 3: '#0000000f', 4: '#00000017',\n 5: '#0000001f', 6: '#00000026', 7: '#00000031', 8: '#00000044',\n 9: '#00000072', 10: '#0000007c', 11: '#0000009b', 12: '#000000df',\n },\n dark: {\n 1: '#111111', 2: '#191919', 3: '#222222', 4: '#2a2a2a',\n 5: '#313131', 6: '#3a3a3a', 7: '#484848', 8: '#606060',\n 9: '#6e6e6e', 10: '#7b7b7b', 11: '#b4b4b4', 12: '#eeeeee',\n },\n darkA: {\n 1: '#00000000', 2: '#ffffff09', 3: '#ffffff12', 4: '#ffffff1b',\n 5: '#ffffff22', 6: '#ffffff2c', 7: '#ffffff3b', 8: '#ffffff55',\n 9: '#ffffff64', 10: '#ffffff72', 11: '#ffffffaf', 12: '#ffffffed',\n },\n },\n green: {\n light: {\n 1: '#fbfefc', 2: '#f4fbf6', 3: '#e6f6eb', 4: '#d6f1df',\n 5: '#c4e8d1', 6: '#adddc0', 7: '#8eceaa', 8: '#5bb98b',\n 9: '#30a46c', 10: '#2b9a66', 11: '#218358', 12: '#193b2d',\n },\n lightA: {\n 1: '#00c04004', 2: '#00a32f0b', 3: '#00a43319', 4: '#00a83829',\n 5: '#019c393b', 6: '#00963c52', 7: '#00914071', 8: '#00924ba4',\n 9: '#008f4acf', 10: '#008647d4', 11: '#00713fde', 12: '#002616e6',\n },\n dark: {\n 1: '#0e1512', 2: '#121b17', 3: '#132d21', 4: '#113b29',\n 5: '#174933', 6: '#20573e', 7: '#28684a', 8: '#2f7c57',\n 9: '#30a46c', 10: '#33b074', 11: '#3dd68c', 12: '#b1f1cb',\n },\n darkA: {\n 1: '#00de4505', 2: '#29f99d0b', 3: '#22ff991e', 4: '#11ff992d',\n 5: '#2bffa23c', 6: '#44ffaa4b', 7: '#50fdac5e', 8: '#54ffad73',\n 9: '#44ffa49e', 10: '#43fea4ab', 11: '#46fea5d4', 12: '#bbffd7f0',\n },\n },\n indigo: {\n light: {\n 1: '#fdfdfe', 2: '#f7f9ff', 3: '#edf2fe', 4: '#e1e9ff',\n 5: '#d2deff', 6: '#c1d0ff', 7: '#abbdf9', 8: '#8da4ef',\n 9: '#3e63dd', 10: '#3358d4', 11: '#3a5bc7', 12: '#1f2d5c',\n },\n lightA: {\n 1: '#00008002', 2: '#0040ff08', 3: '#0047f112', 4: '#0044ff1e',\n 5: '#0044ff2d', 6: '#003eff3e', 7: '#0037ed54', 8: '#0034dc72',\n 9: '#0031d2c1', 10: '#002ec9cc', 11: '#002bb7c5', 12: '#001046e0',\n },\n dark: {\n 1: '#11131f', 2: '#141726', 3: '#182449', 4: '#1d2e62',\n 5: '#253974', 6: '#304384', 7: '#3a4f97', 8: '#435db1',\n 9: '#3e63dd', 10: '#5472e4', 11: '#9eb1ff', 12: '#d6e1ff',\n },\n darkA: {\n 1: '#1133ff0f', 2: '#3354fa17', 3: '#2f62ff3c', 4: '#3566ff57',\n 5: '#4171fd6b', 6: '#5178fd7c', 7: '#5a7fff90', 8: '#5b81feac',\n 9: '#4671ffdb', 10: '#5c7efee3', 11: '#9eb1ff', 12: '#d6e1ff',\n },\n },\n iris: {\n light: {\n 1: '#fdfdff', 2: '#f8f8ff', 3: '#f0f1fe', 4: '#e6e7ff',\n 5: '#dadcff', 6: '#cbcdff', 7: '#b8baf8', 8: '#9b9ef0',\n 9: '#5b5bd6', 10: '#5151cd', 11: '#5753c6', 12: '#272962',\n },\n lightA: {\n 1: '#0000ff02', 2: '#0000ff07', 3: '#0011ee0f', 4: '#000bff19',\n 5: '#000eff25', 6: '#000aff34', 7: '#0008e647', 8: '#0008d964',\n 9: '#0000c0a4', 10: '#0000b6ae', 11: '#0600abac', 12: '#000246d8',\n },\n dark: {\n 1: '#13131e', 2: '#171625', 3: '#202248', 4: '#262a65',\n 5: '#303374', 6: '#3d3e82', 7: '#4a4a95', 8: '#5958b1',\n 9: '#5b5bd6', 10: '#6e6ade', 11: '#b1a9ff', 12: '#e0dffe',\n },\n darkA: {\n 1: '#3636fe0e', 2: '#564bf916', 3: '#525bff3b', 4: '#4d58ff5a',\n 5: '#5b62fd6b', 6: '#6d6ffd7a', 7: '#7777fe8e', 8: '#7b7afeac',\n 9: '#6a6afed4', 10: '#7d79ffdc', 11: '#b1a9ff', 12: '#e1e0fffe',\n },\n },\n jade: {\n light: {\n 1: '#fbfefd', 2: '#f4fbf7', 3: '#e6f7ed', 4: '#d6f1e3',\n 5: '#c3e9d7', 6: '#acdec8', 7: '#8bceb6', 8: '#56ba9f',\n 9: '#29a383', 10: '#26997b', 11: '#208368', 12: '#1d3b31',\n },\n lightA: {\n 1: '#00c08004', 2: '#00a3460b', 3: '#00ae4819', 4: '#00a85129',\n 5: '#00a2553c', 6: '#009a5753', 7: '#00945f74', 8: '#00976ea9',\n 9: '#00916bd6', 10: '#008764d9', 11: '#007152df', 12: '#002217e2',\n },\n dark: {\n 1: '#0d1512', 2: '#121c18', 3: '#0f2e22', 4: '#0b3b2c',\n 5: '#114837', 6: '#1b5745', 7: '#246854', 8: '#2a7e68',\n 9: '#29a383', 10: '#27b08b', 11: '#1fd8a4', 12: '#adf0d4',\n },\n darkA: {\n 1: '#00de4505', 2: '#27fba60c', 3: '#02f99920', 4: '#00ffaa2d',\n 5: '#11ffb63b', 6: '#34ffc24b', 7: '#45fdc75e', 8: '#48ffcf75',\n 9: '#38feca9d', 10: '#31fec7ab', 11: '#21fec0d6', 12: '#b8ffe1ef',\n },\n },\n lime: {\n light: {\n 1: '#fcfdfa', 2: '#f8faf3', 3: '#eef6d6', 4: '#e2f0bd',\n 5: '#d3e7a6', 6: '#c2da91', 7: '#abc978', 8: '#8db654',\n 9: '#bdee63', 10: '#b0e64c', 11: '#5c7c2f', 12: '#37401c',\n },\n lightA: {\n 1: '#66990005', 2: '#6b95000c', 3: '#96c80029', 4: '#8fc60042',\n 5: '#81bb0059', 6: '#72aa006e', 7: '#61990087', 8: '#559200ab',\n 9: '#93e4009c', 10: '#8fdc00b3', 11: '#375f00d0', 12: '#1e2900e3',\n },\n dark: {\n 1: '#11130c', 2: '#151a10', 3: '#1f2917', 4: '#29371d',\n 5: '#334423', 6: '#3d522a', 7: '#496231', 8: '#577538',\n 9: '#bdee63', 10: '#d4ff70', 11: '#bde56c', 12: '#e3f7ba',\n },\n darkA: {\n 1: '#11bb0003', 2: '#78f7000a', 3: '#9bfd4c1a', 4: '#a7fe5c29',\n 5: '#affe6537', 6: '#b2fe6d46', 7: '#b6ff6f57', 8: '#b6fd6d6c',\n 9: '#caff69ed', 10: '#d4ff70', 11: '#d1fe77e4', 12: '#e9febff7',\n },\n },\n mauve: {\n light: {\n 1: '#fdfcfd', 2: '#faf9fb', 3: '#f2eff3', 4: '#eae7ec',\n 5: '#e3dfe6', 6: '#dbd8e0', 7: '#d0cdd7', 8: '#bcbac7',\n 9: '#8e8c99', 10: '#84828e', 11: '#65636d', 12: '#211f26',\n },\n lightA: {\n 1: '#55005503', 2: '#2b005506', 3: '#30004010', 4: '#20003618',\n 5: '#20003820', 6: '#14003527', 7: '#10003332', 8: '#08003145',\n 9: '#05001d73', 10: '#0500197d', 11: '#0400119c', 12: '#020008e0',\n },\n dark: {\n 1: '#121113', 2: '#1a191b', 3: '#232225', 4: '#2b292d',\n 5: '#323035', 6: '#3c393f', 7: '#49474e', 8: '#625f69',\n 9: '#6f6d78', 10: '#7c7a85', 11: '#b5b2bc', 12: '#eeeef0',\n },\n darkA: {\n 1: '#00000000', 2: '#f5f4f609', 3: '#ebeaf814', 4: '#eee5f81d',\n 5: '#efe6fe25', 6: '#f1e6fd30', 7: '#eee9ff40', 8: '#eee7ff5d',\n 9: '#eae6fd6e', 10: '#ece9fd7c', 11: '#f5f1ffb7', 12: '#fdfdffef',\n },\n },\n mint: {\n light: {\n 1: '#f9fefd', 2: '#f2fbf9', 3: '#ddf9f2', 4: '#c8f4e9',\n 5: '#b3ecde', 6: '#9ce0d0', 7: '#7ecfbd', 8: '#4cbba5',\n 9: '#86ead4', 10: '#7de0cb', 11: '#027864', 12: '#16433c',\n },\n lightA: {\n 1: '#00d5aa06', 2: '#00b18a0d', 3: '#00d29e22', 4: '#00cc9937',\n 5: '#00c0914c', 6: '#00b08663', 7: '#00a17d81', 8: '#009e7fb3',\n 9: '#00d3a579', 10: '#00c39982', 11: '#007763fd', 12: '#00312ae9',\n },\n dark: {\n 1: '#0e1515', 2: '#0f1b1b', 3: '#092c2b', 4: '#003a38',\n 5: '#004744', 6: '#105650', 7: '#1e685f', 8: '#277f70',\n 9: '#86ead4', 10: '#a8f5e5', 11: '#58d5ba', 12: '#c4f5e1',\n },\n darkA: {\n 1: '#00dede05', 2: '#00f9f90b', 3: '#00fff61d', 4: '#00fff42c',\n 5: '#00fff23a', 6: '#0effeb4a', 7: '#34fde55e', 8: '#41ffdf76',\n 9: '#92ffe7e9', 10: '#aefeedf5', 11: '#67ffded2', 12: '#cbfee9f5',\n },\n },\n olive: {\n light: {\n 1: '#fcfdfc', 2: '#f8faf8', 3: '#eff1ef', 4: '#e7e9e7',\n 5: '#dfe2df', 6: '#d7dad7', 7: '#cccfcc', 8: '#b9bcb8',\n 9: '#898e87', 10: '#7f847d', 11: '#60655f', 12: '#1d211c',\n },\n lightA: {\n 1: '#00550003', 2: '#00490007', 3: '#00200010', 4: '#00160018',\n 5: '#00180020', 6: '#00140028', 7: '#000f0033', 8: '#040f0047',\n 9: '#050f0078', 10: '#040e0082', 11: '#020a00a0', 12: '#010600e3',\n },\n dark: {\n 1: '#111210', 2: '#181917', 3: '#212220', 4: '#282a27',\n 5: '#2f312e', 6: '#383a36', 7: '#454843', 8: '#5c625b',\n 9: '#687066', 10: '#767d74', 11: '#afb5ad', 12: '#eceeec',\n },\n darkA: {\n 1: '#00000000', 2: '#f1f2f008', 3: '#f4f5f312', 4: '#f3fef21a',\n 5: '#f2fbf122', 6: '#f4faed2c', 7: '#f2fced3b', 8: '#edfdeb57',\n 9: '#ebfde766', 10: '#f0fdec74', 11: '#f6fef4b0', 12: '#fdfffded',\n },\n },\n orange: {\n light: {\n 1: '#fefcfb', 2: '#fff7ed', 3: '#ffefd6', 4: '#ffdfb5',\n 5: '#ffd19a', 6: '#ffc182', 7: '#f5ae73', 8: '#ec9455',\n 9: '#f76b15', 10: '#ef5f00', 11: '#cc4e00', 12: '#582d1d',\n },\n lightA: {\n 1: '#c0400004', 2: '#ff8e0012', 3: '#ff9c0029', 4: '#ff91014a',\n 5: '#ff8b0065', 6: '#ff81007d', 7: '#ed6c008c', 8: '#e35f00aa',\n 9: '#f65e00ea', 10: '#ef5f00', 11: '#cc4e00', 12: '#431200e2',\n },\n dark: {\n 1: '#17120e', 2: '#1e160f', 3: '#331e0b', 4: '#462100',\n 5: '#562800', 6: '#66350c', 7: '#7e451d', 8: '#a35829',\n 9: '#f76b15', 10: '#ff801f', 11: '#ffa057', 12: '#ffe0c2',\n },\n darkA: {\n 1: '#ec360007', 2: '#fe6d000e', 3: '#fb6a0025', 4: '#ff590039',\n 5: '#ff61004a', 6: '#fd75045c', 7: '#ff832c75', 8: '#fe84389d',\n 9: '#fe6d15f7', 10: '#ff801f', 11: '#ffa057', 12: '#ffe0c2',\n },\n },\n pink: {\n light: {\n 1: '#fffcfe', 2: '#fef7fb', 3: '#fee9f5', 4: '#fbdcef',\n 5: '#f6cee7', 6: '#efbfdd', 7: '#e7acd0', 8: '#dd93c2',\n 9: '#d6409f', 10: '#cf3897', 11: '#c2298a', 12: '#651249',\n },\n lightA: {\n 1: '#ff00aa03', 2: '#e0008008', 3: '#f4008c16', 4: '#e2008b23',\n 5: '#d1008331', 6: '#c0007840', 7: '#b6006f53', 8: '#af006f6c',\n 9: '#c8007fbf', 10: '#c2007ac7', 11: '#b60074d6', 12: '#59003bed',\n },\n dark: {\n 1: '#191117', 2: '#21121d', 3: '#37172f', 4: '#4b143d',\n 5: '#591c47', 6: '#692955', 7: '#833869', 8: '#a84885',\n 9: '#d6409f', 10: '#de51a8', 11: '#ff8dcc', 12: '#fdd1ea',\n },\n darkA: {\n 1: '#f412bc09', 2: '#f420bb12', 3: '#fe37cc29', 4: '#fc1ec43f',\n 5: '#fd35c24e', 6: '#fd51c75f', 7: '#fd62c87b', 8: '#ff68c8a2',\n 9: '#fe49bcd4', 10: '#ff5cc0dc', 11: '#ff8dcc', 12: '#ffd3ecfd',\n },\n },\n plum: {\n light: {\n 1: '#fefcff', 2: '#fdf7fd', 3: '#fbebfb', 4: '#f7def8',\n 5: '#f2d1f3', 6: '#e9c2ec', 7: '#deade3', 8: '#cf91d8',\n 9: '#ab4aba', 10: '#a144af', 11: '#953ea3', 12: '#53195d',\n },\n lightA: {\n 1: '#aa00ff03', 2: '#c000c008', 3: '#cc00cc14', 4: '#c200c921',\n 5: '#b700bd2e', 6: '#a400b03d', 7: '#9900a852', 8: '#9000a56e',\n 9: '#89009eb5', 10: '#7f0092bb', 11: '#730086c1', 12: '#40004be6',\n },\n dark: {\n 1: '#181118', 2: '#201320', 3: '#351a35', 4: '#451d47',\n 5: '#512454', 6: '#5e3061', 7: '#734079', 8: '#92549c',\n 9: '#ab4aba', 10: '#b658c4', 11: '#e796f3', 12: '#f4d4f4',\n },\n darkA: {\n 1: '#f112f108', 2: '#f22ff211', 3: '#fd4cfd27', 4: '#f646ff3a',\n 5: '#f455ff48', 6: '#f66dff56', 7: '#f07cfd70', 8: '#ee84ff95',\n 9: '#e961feb6', 10: '#ed70ffc0', 11: '#f19cfef3', 12: '#feddfef4',\n },\n },\n purple: {\n light: {\n 1: '#fefcfe', 2: '#fbf7fe', 3: '#f7edfe', 4: '#f2e2fc',\n 5: '#ead5f9', 6: '#e0c4f4', 7: '#d1afec', 8: '#be93e4',\n 9: '#8e4ec6', 10: '#8347b9', 11: '#8145b5', 12: '#402060',\n },\n lightA: {\n 1: '#aa00aa03', 2: '#8000e008', 3: '#8e00f112', 4: '#8d00e51d',\n 5: '#8000db2a', 6: '#7a01d03b', 7: '#6d00c350', 8: '#6600c06c',\n 9: '#5c00adb1', 10: '#53009eb8', 11: '#52009aba', 12: '#250049df',\n },\n dark: {\n 1: '#18111b', 2: '#1e1523', 3: '#301c3b', 4: '#3d224e',\n 5: '#48295c', 6: '#54346b', 7: '#664282', 8: '#8457aa',\n 9: '#8e4ec6', 10: '#9a5cd0', 11: '#d19dff', 12: '#ecd9fa',\n },\n darkA: {\n 1: '#b412f90b', 2: '#b744f714', 3: '#c150ff2d', 4: '#bb53fd42',\n 5: '#be5cfd51', 6: '#c16dfd61', 7: '#c378fd7a', 8: '#c47effa4',\n 9: '#b661ffc2', 10: '#bc6fffcd', 11: '#d19dff', 12: '#f1ddfffa',\n },\n },\n red: {\n light: {\n 1: '#fffcfc', 2: '#fff7f7', 3: '#feebec', 4: '#ffdbdc',\n 5: '#ffcdce', 6: '#fdbdbe', 7: '#f4a9aa', 8: '#eb8e90',\n 9: '#e5484d', 10: '#dc3e42', 11: '#ce2c31', 12: '#641723',\n },\n lightA: {\n 1: '#ff000003', 2: '#ff000008', 3: '#f3000d14', 4: '#ff000824',\n 5: '#ff000632', 6: '#f8000442', 7: '#df000356', 8: '#d2000571',\n 9: '#db0007b7', 10: '#d10005c1', 11: '#c40006d3', 12: '#55000de8',\n },\n dark: {\n 1: '#191111', 2: '#201314', 3: '#3b1219', 4: '#500f1c',\n 5: '#611623', 6: '#72232d', 7: '#8c333a', 8: '#b54548',\n 9: '#e5484d', 10: '#ec5d5e', 11: '#ff9592', 12: '#ffd1d9',\n },\n darkA: {\n 1: '#f4121209', 2: '#f22f3e11', 3: '#ff173f2d', 4: '#fe0a3b44',\n 5: '#ff204756', 6: '#ff3e5668', 7: '#ff536184', 8: '#ff5d61b0',\n 9: '#fe4e54e4', 10: '#ff6465eb', 11: '#ff9592', 12: '#ffd1d9',\n },\n },\n ruby: {\n light: {\n 1: '#fffcfd', 2: '#fff7f8', 3: '#feeaed', 4: '#ffdce1',\n 5: '#ffced6', 6: '#f8bfc8', 7: '#efacb8', 8: '#e592a3',\n 9: '#e54666', 10: '#dc3b5d', 11: '#ca244d', 12: '#64172b',\n },\n lightA: {\n 1: '#ff005503', 2: '#ff002008', 3: '#f3002515', 4: '#ff002523',\n 5: '#ff002a31', 6: '#e4002440', 7: '#ce002553', 8: '#c300286d',\n 9: '#db002cb9', 10: '#d2002cc4', 11: '#c10030db', 12: '#550016e8',\n },\n dark: {\n 1: '#191113', 2: '#1e1517', 3: '#3a141e', 4: '#4e1325',\n 5: '#5e1a2e', 6: '#6f2539', 7: '#883447', 8: '#b3445a',\n 9: '#e54666', 10: '#ec5a72', 11: '#ff949d', 12: '#fed2e1',\n },\n darkA: {\n 1: '#f4124a09', 2: '#fe5a7f0e', 3: '#ff235d2c', 4: '#fd195e42',\n 5: '#fe2d6b53', 6: '#ff447665', 7: '#ff577d80', 8: '#ff5c7cae',\n 9: '#fe4c70e4', 10: '#ff617beb', 11: '#ff949d', 12: '#ffd3e2fe',\n },\n },\n sage: {\n light: {\n 1: '#fbfdfc', 2: '#f7f9f8', 3: '#eef1f0', 4: '#e6e9e8',\n 5: '#dfe2e0', 6: '#d7dad9', 7: '#cbcfcd', 8: '#b8bcba',\n 9: '#868e8b', 10: '#7c8481', 11: '#5f6563', 12: '#1a211e',\n },\n lightA: {\n 1: '#00804004', 2: '#00402008', 3: '#002d1e11', 4: '#001f1519',\n 5: '#00180820', 6: '#00140d28', 7: '#00140a34', 8: '#000f0847',\n 9: '#00110b79', 10: '#00100a83', 11: '#000a07a0', 12: '#000805e5',\n },\n dark: {\n 1: '#101211', 2: '#171918', 3: '#202221', 4: '#272a29',\n 5: '#2e3130', 6: '#373b39', 7: '#444947', 8: '#5b625f',\n 9: '#63706b', 10: '#717d79', 11: '#adb5b2', 12: '#eceeed',\n },\n darkA: {\n 1: '#00000000', 2: '#f0f2f108', 3: '#f3f5f412', 4: '#f2fefd1a',\n 5: '#f1fbfa22', 6: '#edfbf42d', 7: '#edfcf73c', 8: '#ebfdf657',\n 9: '#dffdf266', 10: '#e5fdf674', 11: '#f4fefbb0', 12: '#fdfffeed',\n },\n },\n sand: {\n light: {\n 1: '#fdfdfc', 2: '#f9f9f8', 3: '#f1f0ef', 4: '#e9e8e6',\n 5: '#e2e1de', 6: '#dad9d6', 7: '#cfceca', 8: '#bcbbb5',\n 9: '#8d8d86', 10: '#82827c', 11: '#63635e', 12: '#21201c',\n },\n lightA: {\n 1: '#55550003', 2: '#25250007', 3: '#20100010', 4: '#1f150019',\n 5: '#1f180021', 6: '#19130029', 7: '#19140035', 8: '#1915014a',\n 9: '#0f0f0079', 10: '#0c0c0083', 11: '#080800a1', 12: '#060500e3',\n },\n dark: {\n 1: '#111110', 2: '#191918', 3: '#222221', 4: '#2a2a28',\n 5: '#31312e', 6: '#3b3a37', 7: '#494844', 8: '#62605b',\n 9: '#6f6d66', 10: '#7c7b74', 11: '#b5b3ad', 12: '#eeeeec',\n },\n darkA: {\n 1: '#00000000', 2: '#f4f4f309', 3: '#f6f6f513', 4: '#fefef31b',\n 5: '#fbfbeb23', 6: '#fffaed2d', 7: '#fffbed3c', 8: '#fff9eb57',\n 9: '#fffae965', 10: '#fffdee73', 11: '#fffcf4b0', 12: '#fffffded',\n },\n },\n sky: {\n light: {\n 1: '#f9feff', 2: '#f1fafd', 3: '#e1f6fd', 4: '#d1f0fa',\n 5: '#bee7f5', 6: '#a9daed', 7: '#8dcae3', 8: '#60b3d7',\n 9: '#7ce2fe', 10: '#74daf8', 11: '#00749e', 12: '#1d3e56',\n },\n lightA: {\n 1: '#00d5ff06', 2: '#00a4db0e', 3: '#00b3ee1e', 4: '#00ace42e',\n 5: '#00a1d841', 6: '#0092ca56', 7: '#0089c172', 8: '#0085bf9f',\n 9: '#00c7fe83', 10: '#00bcf38b', 11: '#00749e', 12: '#002540e2',\n },\n dark: {\n 1: '#0d141f', 2: '#111a27', 3: '#112840', 4: '#113555',\n 5: '#154467', 6: '#1b537b', 7: '#1f6692', 8: '#197cae',\n 9: '#7ce2fe', 10: '#a8eeff', 11: '#75c7f0', 12: '#c2f3ff',\n },\n darkA: {\n 1: '#0044ff0f', 2: '#1171fb18', 3: '#1184fc33', 4: '#128fff49',\n 5: '#1c9dfd5d', 6: '#28a5ff72', 7: '#2badfe8b', 8: '#1db2fea9',\n 9: '#7ce3fffe', 10: '#a8eeff', 11: '#7cd3ffef', 12: '#c2f3ff',\n },\n },\n slate: {\n light: {\n 1: '#fcfcfd', 2: '#f9f9fb', 3: '#f0f0f3', 4: '#e8e8ec',\n 5: '#e0e1e6', 6: '#d9d9e0', 7: '#cdced6', 8: '#b9bbc6',\n 9: '#8b8d98', 10: '#80838d', 11: '#60646c', 12: '#1c2024',\n },\n lightA: {\n 1: '#00005503', 2: '#00005506', 3: '#0000330f', 4: '#00002d17',\n 5: '#0009321f', 6: '#00002f26', 7: '#00062e32', 8: '#00083046',\n 9: '#00051d74', 10: '#00071b7f', 11: '#0007149f', 12: '#000509e3',\n },\n dark: {\n 1: '#111113', 2: '#18191b', 3: '#212225', 4: '#272a2d',\n 5: '#2e3135', 6: '#363a3f', 7: '#43484e', 8: '#5a6169',\n 9: '#696e77', 10: '#777b84', 11: '#b0b4ba', 12: '#edeef0',\n },\n darkA: {\n 1: '#00000000', 2: '#d8f4f609', 3: '#ddeaf814', 4: '#d3edf81d',\n 5: '#d9edfe25', 6: '#d6ebfd30', 7: '#d9edff40', 8: '#d9edff5d',\n 9: '#dfebfd6d', 10: '#e5edfd7b', 11: '#f1f7feb5', 12: '#fcfdffef',\n },\n },\n teal: {\n light: {\n 1: '#fafefd', 2: '#f3fbf9', 3: '#e0f8f3', 4: '#ccf3ea',\n 5: '#b8eae0', 6: '#a1ded2', 7: '#83cdc1', 8: '#53b9ab',\n 9: '#12a594', 10: '#0d9b8a', 11: '#008573', 12: '#0d3d38',\n },\n lightA: {\n 1: '#00cc9905', 2: '#00aa800c', 3: '#00c69d1f', 4: '#00c39633',\n 5: '#00b49047', 6: '#00a6855e', 7: '#0099807c', 8: '#009783ac',\n 9: '#009e8ced', 10: '#009684f2', 11: '#008573', 12: '#00332df2',\n },\n dark: {\n 1: '#0d1514', 2: '#111c1b', 3: '#0d2d2a', 4: '#023b37',\n 5: '#084843', 6: '#145750', 7: '#1c6961', 8: '#207e73',\n 9: '#12a594', 10: '#0eb39e', 11: '#0bd8b6', 12: '#adf0dd',\n },\n darkA: {\n 1: '#00deab05', 2: '#12fbe60c', 3: '#00ffe61e', 4: '#00ffe92d',\n 5: '#00ffea3b', 6: '#1cffe84b', 7: '#2efde85f', 8: '#32ffe775',\n 9: '#13ffe49f', 10: '#0dffe0ae', 11: '#0afed5d6', 12: '#b8ffebef',\n },\n },\n tomato: {\n light: {\n 1: '#fffcfc', 2: '#fff8f7', 3: '#feebe7', 4: '#ffdcd3',\n 5: '#ffcdc2', 6: '#fdbdaf', 7: '#f5a898', 8: '#ec8e7b',\n 9: '#e54d2e', 10: '#dd4425', 11: '#d13415', 12: '#5c271f',\n },\n lightA: {\n 1: '#ff000003', 2: '#ff200008', 3: '#f52b0018', 4: '#ff35002c',\n 5: '#ff2e003d', 6: '#f92d0050', 7: '#e7280067', 8: '#db250084',\n 9: '#df2600d1', 10: '#d72400da', 11: '#cd2200ea', 12: '#460900e0',\n },\n dark: {\n 1: '#181111', 2: '#1f1513', 3: '#391714', 4: '#4e1511',\n 5: '#5e1c16', 6: '#6e2920', 7: '#853a2d', 8: '#ac4d39',\n 9: '#e54d2e', 10: '#ec6142', 11: '#ff977d', 12: '#fbd3cb',\n },\n darkA: {\n 1: '#f1121208', 2: '#ff55330f', 3: '#ff35232b', 4: '#fd201142',\n 5: '#fe332153', 6: '#ff4f3864', 7: '#fd644a7d', 8: '#fe6d4ea7',\n 9: '#fe5431e4', 10: '#ff6847eb', 11: '#ff977d', 12: '#ffd6cefb',\n },\n },\n violet: {\n light: {\n 1: '#fdfcfe', 2: '#faf8ff', 3: '#f4f0fe', 4: '#ebe4ff',\n 5: '#e1d9ff', 6: '#d4cafe', 7: '#c2b5f5', 8: '#aa99ec',\n 9: '#6e56cf', 10: '#654dc4', 11: '#6550b9', 12: '#2f265f',\n },\n lightA: {\n 1: '#5500aa03', 2: '#4900ff07', 3: '#4400ee0f', 4: '#4300ff1b',\n 5: '#3600ff26', 6: '#3100fb35', 7: '#2d01dd4a', 8: '#2b00d066',\n 9: '#2400b7a9', 10: '#2300abb2', 11: '#1f0099af', 12: '#0b0043d9',\n },\n dark: {\n 1: '#14121f', 2: '#1b1525', 3: '#291f43', 4: '#33255b',\n 5: '#3c2e69', 6: '#473876', 7: '#56468b', 8: '#6958ad',\n 9: '#6e56cf', 10: '#7d66d9', 11: '#baa7ff', 12: '#e2ddfe',\n },\n darkA: {\n 1: '#4422ff0f', 2: '#853ff916', 3: '#8354fe36', 4: '#7d51fd50',\n 5: '#845ffd5f', 6: '#8f6cfd6d', 7: '#9879ff83', 8: '#977dfea8',\n 9: '#8668ffcc', 10: '#9176fed7', 11: '#baa7ff', 12: '#e3defffe',\n },\n },\n yellow: {\n light: {\n 1: '#fdfdf9', 2: '#fefce9', 3: '#fffab8', 4: '#fff394',\n 5: '#ffe770', 6: '#f3d768', 7: '#e4c767', 8: '#d5ae39',\n 9: '#ffe629', 10: '#ffdc00', 11: '#9e6c00', 12: '#473b1f',\n },\n lightA: {\n 1: '#aaaa0006', 2: '#f4dd0016', 3: '#ffee0047', 4: '#ffe3016b',\n 5: '#ffd5008f', 6: '#ebbc0097', 7: '#d2a10098', 8: '#c99700c6',\n 9: '#ffe100d6', 10: '#ffdc00', 11: '#9e6c00', 12: '#2e2000e0',\n },\n dark: {\n 1: '#14120b', 2: '#1b180f', 3: '#2d2305', 4: '#362b00',\n 5: '#433500', 6: '#524202', 7: '#665417', 8: '#836a21',\n 9: '#ffe629', 10: '#ffff57', 11: '#f5e147', 12: '#f6eeb4',\n },\n darkA: {\n 1: '#d1510004', 2: '#f9b4000b', 3: '#ffaa001e', 4: '#fdb70028',\n 5: '#febb0036', 6: '#fec40046', 7: '#fdcb225c', 8: '#fdca327b',\n 9: '#ffe629', 10: '#ffff57', 11: '#fee949f5', 12: '#fef6baf6',\n },\n },\n};\n","import type { PALETTES } from './palettes';\n\nimport type { Styles } from '../providers/design-system-provider';\n\nexport type Mode = 'dark' | 'light';\n\nexport type PaletteName = keyof typeof PALETTES;\n\nexport type ColorStep = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\nexport type ColorScale = Record<ColorStep, string>;\n\nexport type ColorVariant = 'light' | 'lightA' | 'dark' | 'darkA';\n\nexport type Palette = Record<ColorVariant, ColorScale>;\n\nexport type Palettes = Record<string, Palette>;\n\nexport interface TypographyProperties {\n font: string;\n weight: string;\n tracking: string;\n leading: string;\n}\n\nexport interface ShadowProperties {\n color: PaletteName;\n offsetX: number;\n offsetY: number;\n blur: number;\n spread: number;\n opacity: number;\n}\n\nexport type ShadowStep = 'xs' | 's' | 'm' | 'l' | 'xl';\n\nexport const SHADOW_STEPS: ShadowStep[] = ['xs', 's', 'm', 'l', 'xl'];\n\nexport type ColorRole = 'neutral' | 'accent' | 'error' | 'success' | 'warning' | 'info';\n\nexport const COLOR_ROLES: ColorRole[] = ['neutral', 'accent', 'error', 'success', 'warning', 'info'];\n\nexport type TypographyRole = 'header' | 'label' | 'body' | 'code';\n\nexport const TYPOGRAPHY_ROLES: TypographyRole[] = ['header', 'label', 'body', 'code'];\n\nexport interface ThemePreset {\n name: string;\n colors: Record<ColorRole, PaletteName>;\n shadows: Record<ShadowStep, ShadowProperties>;\n typography: Record<TypographyRole, TypographyProperties>;\n radius: string;\n spacingFactor: number;\n typographyScaleFactor: number;\n custom?: Record<string, string>;\n overrides?: Partial<Styles>;\n}\n","import { PALETTES } from './palettes';\n\nimport { COLOR_ROLES, SHADOW_STEPS, type Mode, type PaletteName, type ThemePreset } from './types';\n\nexport class PresetHelpers {\n public static resolve(preset: ThemePreset, mode: Mode): Record<string, string> {\n const vars: Record<string, string> = {};\n\n for (const role of COLOR_ROLES) {\n const palette = PALETTES[preset.colors[role] as PaletteName];\n const solid = palette[mode];\n const alpha = palette[`${mode}A`];\n const alphaKey = role === 'neutral' ? 'neutralA' : `${role}A`;\n\n for (let i = 1; i <= 12; i++) {\n vars[`--color-${role}-${i}`] = solid[i as keyof typeof solid];\n vars[`--color-${alphaKey}-${i}`] = alpha[i as keyof typeof alpha];\n }\n }\n\n for (const step of SHADOW_STEPS) {\n const config = preset.shadows[step];\n\n vars[`--shadow-${step}-color`] = PALETTES[config.color as PaletteName][mode][9];\n vars[`--shadow-${step}-offsetX`] = `${config.offsetX}px`;\n vars[`--shadow-${step}-offsetY`] = `${config.offsetY}px`;\n vars[`--shadow-${step}-blur`] = `${config.blur}px`;\n vars[`--shadow-${step}-spread`] = `${config.spread}px`;\n vars[`--shadow-${step}-opacity`] = `${Math.round(config.opacity * 100)}%`;\n }\n\n for (const [role, config] of Object.entries(preset.typography)) {\n vars[`--typo-${role}-font`] = `'${config.font}', sans-serif`;\n vars[`--typo-${role}-weight`] = config.weight;\n vars[`--typo-${role}-tracking`] = config.tracking;\n vars[`--typo-${role}-leading`] = config.leading;\n }\n\n vars['--radius'] = preset.radius;\n vars['--spacing'] = `${0.25 * preset.spacingFactor}rem`;\n vars['--typo-scale-factor'] = `${preset.typographyScaleFactor}`;\n\n if (preset.custom) Object.assign(vars, preset.custom);\n\n return vars;\n }}\n","import { LocalStorage } from '@digo-labs/common';\n\nimport { baseStyles } from '..';\n\nimport { createContext, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState, type ReactNode } from 'react';\n\nimport { PresetHelpers } from '../presets/helpers';\n\nimport type { ColorRole, Mode, PaletteName, ShadowProperties, ShadowStep, ThemePreset, TypographyProperties, TypographyRole } from '../presets/types';\n\nexport type Styles = typeof baseStyles;\n\ntype PartialStyles = Partial<Styles>;\n\nconst LOCAL_STORAGE_KEY = 'mode';\n\ninterface DesignSystemContextType {\n mode: Mode;\n toggleMode: () => void;\n setMode: (mode: Mode) => void;\n preset: ThemePreset;\n setPreset: (preset: ThemePreset) => void;\n updatePreset: (partial: Partial<ThemePreset>) => void;\n setRolePalette: (role: ColorRole, palette: PaletteName) => void;\n updateTypography: (role: TypographyRole, partial: Partial<TypographyProperties>) => void;\n updateShadow: (step: ShadowStep, partial: Partial<ShadowProperties>) => void;\n updateComponentOverrides: (component: string, overrides: Record<string, string>) => void;\n}\n\nconst DesignSystemContext = createContext<DesignSystemContextType | undefined>(undefined);\n\nconst StylesContext = createContext<Styles>(baseStyles);\n\ninterface DesignSystemProviderProps {\n children: ReactNode;\n preset: ThemePreset;\n defaultMode?: Mode;\n overrides?: PartialStyles;\n}\n\nexport function DesignSystemProvider(properties: DesignSystemProviderProps) {\n const {\n children,\n preset,\n defaultMode = 'dark',\n overrides,\n } = properties;\n\n const [mode, setMode] = useState<Mode>(defaultMode);\n const [currentPreset, setCurrentPreset] = useState<ThemePreset>(preset);\n const previousVarsRef = useRef<Record<string, string>>({});\n\n useEffect(() => {\n const savedMode = LocalStorage.loadValue<Mode>(LOCAL_STORAGE_KEY, defaultMode);\n\n setMode(savedMode);\n }, []);\n\n useEffect(() => {\n LocalStorage.setValue<Mode>(LOCAL_STORAGE_KEY, mode);\n }, [mode]);\n\n useLayoutEffect(() => {\n const root = document.documentElement;\n const vars = PresetHelpers.resolve(currentPreset, mode);\n const prevVars = previousVarsRef.current;\n\n for (const key of Object.keys(prevVars)) {\n if (!(key in vars)) root.style.removeProperty(key);\n }\n\n for (const [key, value] of Object.entries(vars)) {\n if (prevVars[key] !== value) root.style.setProperty(key, value);\n }\n\n previousVarsRef.current = vars;\n }, [mode, currentPreset]);\n\n function toggleMode(): void {\n setMode(current => current === 'light' ? 'dark' : 'light');\n }\n\n function updatePreset(partial: Partial<ThemePreset>): void {\n setCurrentPreset(prev => ({ ...prev, ...partial }));\n }\n\n function setRolePalette(role: ColorRole, palette: PaletteName): void {\n setCurrentPreset(prev => ({ ...prev, colors: { ...prev.colors, [role]: palette } }));\n }\n\n function updateTypography(role: TypographyRole, partial: Partial<TypographyProperties>): void {\n setCurrentPreset(prev => ({\n ...prev,\n typography: {\n ...prev.typography,\n [role]: { ...prev.typography[role], ...partial },\n },\n }));\n }\n\n function updateShadow(step: ShadowStep, partial: Partial<ShadowProperties>): void {\n setCurrentPreset(prev => ({\n ...prev,\n shadows: {\n ...prev.shadows,\n [step]: { ...prev.shadows[step], ...partial },\n },\n }));\n }\n\n function updateComponentOverrides(component: string, componentOverrides: Record<string, string>): void {\n setCurrentPreset(prev => ({\n ...prev,\n overrides: {\n ...(prev.overrides ?? {}),\n [component]: componentOverrides,\n } as PartialStyles,\n }));\n }\n\n const styles = useMemo(() => {\n const presetOverrides = currentPreset.overrides ?? {};\n\n return { ...baseStyles, ...presetOverrides, ...overrides } as Styles;\n }, [currentPreset, overrides]);\n\n const contextValue = useMemo(() => ({\n mode,\n toggleMode,\n setMode,\n preset: currentPreset,\n setPreset: setCurrentPreset,\n updatePreset,\n setRolePalette,\n updateTypography,\n updateShadow,\n updateComponentOverrides,\n }), [mode, currentPreset]);\n\n return (\n <DesignSystemContext.Provider value={contextValue}>\n <StylesContext.Provider value={styles}>\n {children}\n </StylesContext.Provider>\n </DesignSystemContext.Provider>\n );\n}\n\nexport function useDesignSystem(): DesignSystemContextType {\n const context = useContext(DesignSystemContext);\n\n if (!context) {\n throw new Error('useDesignSystem must be used within a DesignSystemProvider');\n }\n\n return context;\n}\n\nexport function useStyles(): Styles {\n const context = useContext(StylesContext);\n\n if (!context) {\n throw new Error('useStyles must be used within a DesignSystemProvider');\n }\n\n return context;\n}\n","import { cn } from '@digo-labs/common';\n\nimport { createContext, useContext, useMemo, type ReactNode } from 'react';\n\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { Styles, useStyles } from './design-system-provider';\n\ntype StyleKey = keyof Styles;\n\ntype ReturnOf<T> = T extends (...args: any[]) => infer R ? R : never;\n\ntype SlotNames<T> = keyof ReturnOf<T> & string;\n\ntype ResolvedSlots<T> = Record<SlotNames<T>, string>;\n\ntype SlotsClassNames<T extends (...args: any[]) => any> = Partial<Record<SlotNames<T>, string>>;\n\nexport type ComponentStylesProps<K extends StyleKey> = VariantProps<Styles[K]> & { classNames?: SlotsClassNames<Styles[K]>; };\n\nexport function createComponentStyles<K extends StyleKey>(styleKey: K) {\n type StyleFn = Styles[K];\n type Slots = SlotNames<StyleFn>;\n type Resolved = ResolvedSlots<StyleFn>;\n type Variants = VariantProps<StyleFn>;\n\n type ContextValue = {\n styles: Resolved;\n variants: Variants;\n };\n\n const Context = createContext<ContextValue | null>(null);\n\n type ProviderProperties = Variants & {\n classNames?: Partial<Record<Slots, string>>;\n children: ReactNode;\n };\n\n function ComponentStylesProvider(props: ProviderProperties) {\n const { classNames, children, ...variants } = props;\n\n const styleFn = useStyles()[styleKey];\n const variantKey = JSON.stringify(variants);\n const classNamesKey = JSON.stringify(classNames);\n\n const value = useMemo(() => {\n const slots = (styleFn as any)(variants);\n const styles = {} as Resolved;\n\n for (const name of Object.keys(slots) as Slots[]) {\n const base = slots[name]();\n styles[name] = classNames?.[name] ? cn(base, classNames[name]) : base;\n }\n\n return { styles, variants: variants as unknown as Variants };\n }, [styleFn, variantKey, classNamesKey]);\n\n return (\n <Context.Provider value={value}>\n {children}\n </Context.Provider>\n );\n }\n\n function useComponentStyles(): Resolved {\n const context = useContext(Context);\n\n if (!context) {\n throw new Error(`useComponentStyles must be used within a ComponentStylesProvider for \"${String(styleKey)}\"`);\n }\n\n return context.styles;\n }\n\n function useComponentVariants(): Variants {\n const context = useContext(Context);\n\n if (!context) {\n throw new Error(`useComponentVariants must be used within a ComponentStylesProvider for \"${String(styleKey)}\"`);\n }\n\n return context.variants;\n }\n\n return { ComponentStylesProvider, useComponentStyles, useComponentVariants };\n}\n","import { createTV } from 'tailwind-variants';\n\nimport type * as BaseStyles from '../styles';\n\nexport const styles = createTV({\n twMergeConfig: {\n classGroups: {\n 'font-size': [{ typo: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] }],\n 'font-weight': [{ 'typo-weight': ['100', '200', '300', '400', '500', '600', '700', '800', '900'] }],\n },\n },\n});\n\nexport { createComponentStyles, type ComponentStylesProps } from '../providers/component-styles-provider';\n\nexport function defineOverrides<T extends Partial<Record<keyof typeof BaseStyles, any>>>(overrides: T) {\n return overrides as Partial<typeof BaseStyles>;\n}\n","import type { ComponentProps } from 'react';\nimport type { Inertia, motion, Spring, Tween } from 'motion/react';\n\nexport const motionTransitionPresets = {\n spring1: { type: 'spring', stiffness: 400, damping: 40 },\n spring2: { type: 'spring', stiffness: 150, damping: 20 },\n spring3: { type: 'spring', stiffness: 200, damping: 10 },\n spring4: { type: 'spring', stiffness: 200, damping: 10 },\n spring5: { type: 'spring', stiffness: 300, damping: 10 },\n spring6: { type: 'spring', stiffness: 400, damping: 10 },\n} satisfies Record<string, Spring | Tween | Inertia>;\n\ntype MotionDivProps = ComponentProps<typeof motion.div>;\n\nexport const motionComponentPresets = {\n dragSnapBack: {\n drag: true,\n dragElastic: 0.3,\n dragConstraints: { left: 0, right: 0, top: 0, bottom: 0 },\n dragTransition: { bounceStiffness: 600, bounceDamping: 10, power: 0.3 },\n transition: motionTransitionPresets.spring3,\n },\n\n} satisfies Record<string, MotionDivProps>;\n\nexport const motionPresencePresets = {\n variant1: {\n initial: { opacity: 0, y: 20 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: -20 },\n transition: motionTransitionPresets.spring5,\n },\n variant2: {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.95, height: 0, padding: 0, margin: 0, overflow: 'hidden', transition: { duration: 0.25, ease: 'easeOut' } },\n transition: motionTransitionPresets.spring1,\n },\n variant3: {\n initial: { opacity: 0, scale: 0.75 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.75, transition: { duration: 0.2, ease: 'easeOut' } },\n transition: motionTransitionPresets.spring3,\n },\n} satisfies Record<string, MotionDivProps>;\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentProps, ReactNode } from 'react';\nimport { Transition } from 'motion';\nimport { AnimatePresence, motion, Variants } from 'motion/react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\nimport { motionPresencePresets } from '../utils/motion-presets';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('motionAnimatePresence');\n\ninterface Properties extends ComponentProps<typeof AnimatePresence>, ComponentStylesProps<'motionAnimatePresence'> {\n children: ReactNode[];\n activeIndex: number;\n preset?: keyof typeof motionPresencePresets;\n transition?: Transition;\n variants?: Variants;\n className?: string;\n}\n\nexport function MotionAnimatePresence(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <MotionAnimatePresenceRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\nfunction MotionAnimatePresenceRoot(properties: Omit<Properties, 'classNames'>) {\n const {\n children,\n activeIndex,\n preset = 'variant3',\n transition,\n variants,\n mode = 'wait',\n className,\n ...props\n } = properties;\n\n const styles = useComponentStyles();\n\n const resolved = motionPresencePresets[preset];\n\n const finalVariants: Variants = variants ?? {\n initial: resolved.initial,\n animate: resolved.animate,\n exit: resolved.exit,\n };\n\n const finalTransition = transition ?? resolved.transition;\n\n return (\n\n <div data-slot=\"motion-animate-presence\" className={cn(styles.root, className)}>\n <AnimatePresence mode={mode} {...props}>\n <motion.div\n data-slot=\"motion-animate-presence-content\"\n key={activeIndex}\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={finalVariants}\n transition={finalTransition}\n className={styles.content}\n >\n {children[activeIndex]}\n </motion.div>\n </AnimatePresence>\n </div>\n\n );\n}\n","export const ANIMATIONS = {\n default: 'https://cdn.digo-labs.com/animations/default-animation.json',\n empty: 'https://cdn.digo-labs.com/animations/empty-animation.json',\n error: 'https://cdn.digo-labs.com/animations/error-animation.json',\n score: 'https://cdn.digo-labs.com/animations/score-animation.json',\n heart: 'https://cdn.digo-labs.com/animations/heart-animation.json',\n};\n","import { useAuth } from '@digo-labs/services';\n\nimport { Navigate, Outlet, useLocation } from 'react-router-dom';\n\nimport { ReactNode } from 'react';\n\ninterface Properties {\n loginPath?: string;\n fallback?: ReactNode;\n}\n\nexport function AuthGuard(properties: Properties) {\n const { loginPath = '/login', fallback } = properties;\n\n const { isAuthenticated, isLoading } = useAuth();\n const location = useLocation();\n\n if (isLoading) return fallback ?? null;\n\n if (!isAuthenticated) {\n return (\n <Navigate\n to={loginPath}\n state={{ from: location }}\n replace={true}\n />);\n }\n\n return <Outlet />;\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentProps, createContext, ReactNode, useContext, useMemo, useRef, useState } from 'react';\nimport { HTMLMotionProps, motion, TargetAndTransition } from 'motion/react';\n\nimport { motionTransitionPresets } from 'src/utils/motion-presets';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('card');\n\nconst DEFAULT_HOVERED: TargetAndTransition = { translateX: 6 };\nconst DEFAULT_TAPPED: TargetAndTransition = { translateX: 0 };\n\ntype ContextProperties = {\n showFeedback: boolean;\n delay: number;\n getNextIndex: () => number;\n};\n\nconst Context = createContext<ContextProperties>({\n showFeedback: false,\n delay: 0.03,\n getNextIndex: () => 0,\n});\n\ninterface Properties extends RootProperties, ComponentStylesProps<'card'> {\n children: ReactNode;\n delay?: number;\n}\n\nexport function Card(properties: Properties) {\n const { classNames, children, onClick, delay = 0.03, className, ...props } = properties;\n\n const [showFeedback, setShowFeedback] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>(null);\n const indexRef = useRef(0);\n\n indexRef.current = 0;\n\n function handleClick() {\n clearTimeout(timeoutRef.current!);\n setShowFeedback(true);\n timeoutRef.current = setTimeout(() => setShowFeedback(false), 1000);\n }\n\n function getNextIndex() {\n return indexRef.current++;\n }\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <Context.Provider value={{ showFeedback, delay, getNextIndex }}>\n <CardRoot\n className={className}\n onHoverEnd={() => setShowFeedback(false)}\n onClick={(e) => {\n handleClick();\n onClick?.(e);\n }}\n {...props}\n >\n {children}\n </CardRoot>\n </Context.Provider>\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = HTMLMotionProps<'div'>;\n\nfunction CardRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <motion.div\n data-slot=\"card\"\n className={cn(styles.root, className)}\n whileHover=\"hovered\"\n whileTap=\"tapped\"\n {...props}\n />\n );\n}\n\nexport function CardContent(properties: ComponentProps<'div'>) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"card-content\"\n className={cn(styles.content, className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\ninterface ItemProperties extends HTMLMotionProps<'div'> {\n hovered?: TargetAndTransition | false;\n tapped?: TargetAndTransition | false;\n}\n\nexport function CardItem(properties: ItemProperties) {\n const { className, children, hovered = DEFAULT_HOVERED, tapped = DEFAULT_TAPPED, ...props } = properties;\n\n const { delay, getNextIndex } = useContext(Context);\n\n const index = useMemo(() => getNextIndex(), []);\n\n return (\n <motion.div\n data-slot=\"card-item\"\n variants={{ hovered: hovered || {}, tapped: tapped || {} }}\n transition={{ ...motionTransitionPresets.spring1, delay: index * delay }}\n className={className}\n {...props}\n >\n {children}\n </motion.div>\n );\n}\n\ninterface FeedbackProperties extends ComponentProps<'div'> {\n label?: string;\n}\n\nexport function CardFeedback(properties: FeedbackProperties) {\n const { className, label = 'Copied!', ...props } = properties;\n\n const { showFeedback } = useContext(Context);\n const styles = useComponentStyles();\n\n return (\n <motion.div\n data-slot=\"card-feedback\"\n className={styles.feedbackWrapper}\n initial={false}\n hidden={undefined}\n animate={{\n height: showFeedback ? 'auto' : 0,\n opacity: showFeedback ? 1 : 0,\n }}\n transition={motionTransitionPresets.spring1}\n >\n <div className={cn(styles.feedback, className)} {...props}>\n {label}\n </div>\n </motion.div>\n );\n}\n","import { cn, TextMessage } from '@digo-labs/common';\nimport { Image } from '..';\n\nimport { ComponentProps, useEffect, useRef } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('chatThread');\n\nexport interface ChatThreadMessage {\n role: 'user' | 'assistant' | 'error';\n content: TextMessage['content'];\n stopReason?: string;\n}\n\ntype Properties = RootProperties & ComponentStylesProps<'chatThread'>;\n\nexport function ChatThread(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ChatThreadRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<'div'> {\n messages: ChatThreadMessage[];\n streamingText?: string;\n}\n\nfunction ChatThreadRoot(properties: RootProperties) {\n const { messages, streamingText, className, ...props } = properties;\n\n const styles = useComponentStyles();\n const bottomRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n // bottomRef.current?.scrollIntoView({ behavior: 'smooth' });\n }, [messages.length, streamingText]);\n\n return (\n <div\n data-slot=\"chat-thread\"\n className={cn(styles.root, className)}\n {...props}\n >\n {messages.map((message, index) => (\n <ChatThreadBubble key={index} message={message} />\n ))}\n\n {streamingText !== undefined && (\n <ChatThreadStreamingBubble text={streamingText} />\n )}\n\n <div ref={bottomRef} />\n </div>\n );\n}\n\ninterface ChatThreadBubbleProperties {\n message: ChatThreadMessage;\n}\n\nfunction ChatThreadBubble(properties: ChatThreadBubbleProperties) {\n const { message } = properties;\n\n const styles = useComponentStyles();\n\n const variantSlot = message.role === 'user'\n ? styles.userMessage\n : message.role === 'error'\n ? styles.errorMessage\n : styles.assistantMessage;\n\n const showStopReason = message.role === 'assistant' && !!message.stopReason;\n\n return (\n <div\n data-slot=\"chat-thread-message\"\n data-role={message.role}\n className={cn(styles.message, variantSlot)}\n >\n {message.role === 'error' && (\n <span data-slot=\"chat-thread-error-tag\" className={styles.errorTag}>\n Error\n </span>\n )}\n\n <ChatThreadMessageContent content={message.content} />\n\n {showStopReason && (\n <span data-slot=\"chat-thread-stop-reason\" className={styles.stopReason}>\n {message.stopReason}\n </span>\n )}\n </div>\n );\n}\n\ninterface ChatThreadStreamingBubbleProperties {\n text: string;\n}\n\nfunction ChatThreadStreamingBubble(properties: ChatThreadStreamingBubbleProperties) {\n const { text } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"chat-thread-message\"\n data-role=\"assistant\"\n data-streaming=\"true\"\n className={cn(styles.message, styles.assistantMessage)}\n >\n <span data-slot=\"chat-thread-message-content\" className={styles.messageContent}>\n {text}\n <span data-slot=\"chat-thread-cursor\" aria-hidden=\"true\" className={styles.cursor} />\n </span>\n </div>\n );\n}\n\ninterface ChatThreadMessageContentProperties {\n content: TextMessage['content'];\n}\n\nfunction ChatThreadMessageContent(properties: ChatThreadMessageContentProperties) {\n const { content } = properties;\n\n const styles = useComponentStyles();\n\n if (typeof content === 'string') {\n return (\n <span data-slot=\"chat-thread-message-content\" className={styles.messageContent}>\n {content}\n </span>\n );\n }\n\n const textParts = content.filter(part => part.type === 'text');\n const imageParts = content.filter(part => part.type === 'image');\n\n const joinedText = textParts.map(part => part.text).join('\\n');\n\n return (\n <>\n {joinedText.length > 0 && (\n <span data-slot=\"chat-thread-message-content\" className={styles.messageContent}>\n {joinedText}\n </span>\n )}\n\n {imageParts.length > 0 && (\n <div data-slot=\"chat-thread-message-images\" className={styles.contentImages}>\n {imageParts.map((part, index) => (\n <Image key={index} src={part.source} classNames={{ root: styles.contentImage }} />\n ))}\n </div>\n )}\n </>\n );\n}\n","import { ComponentPropsWithoutRef } from 'react';\n\nimport { cn, CuratedIcons, IconHelpers } from '@digo-labs/common';\n\ninterface Properties extends ComponentPropsWithoutRef<'div'> {\n icon?: CuratedIcons | (string & {}); // (string & {}) preserves autocomplete\n}\n\nexport function Icon(properties: Properties) {\n const {\n icon = 'favorite',\n className = '',\n } = properties;\n\n const iconClass = IconHelpers.getIcon(icon);\n\n return (\n <span className={cn(iconClass, className)} />\n );\n}\n\nexport { Icon as IconifyIcon } from '@iconify-icon/react';\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('kbd');\n\ntype Properties = RootProperties & ComponentStylesProps<'kbd'>;\n\nexport function Kbd(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <KbdRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'kbd'>;\n\nfunction KbdRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function KbdGroup(properties: RootProperties & ComponentStylesProps<'kbd'>) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <KbdGroupRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\nfunction KbdGroupRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(styles.group, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentProps } from 'react';\n\nimport { Icon } from 'src/components/icon';\nimport { Kbd, KbdGroup } from 'src/components/kbd';\nimport { Button } from '..';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('commandButton');\n\ntype Properties = RootProperties & ComponentStylesProps<'commandButton'>;\n\nexport function CommandButton(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <CommandButtonRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends Omit<ComponentProps<typeof Button>, 'classNames'> {\n placeholder?: string;\n}\n\nfunction CommandButtonRoot(properties: RootProperties) {\n const { placeholder, className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Button\n data-slot=\"command-button\"\n className={cn(styles.root, className)}\n {...props}\n >\n <Icon icon=\"search\" />\n\n {placeholder && <span data-slot=\"command-button-placeholder\" className={styles.placeholder}>{placeholder}</span>}\n\n <KbdGroup>\n <Kbd>⌘</Kbd>\n <Kbd>K</Kbd>\n </KbdGroup>\n </Button>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('button');\n\ntype Properties = RootProperties & ComponentStylesProps<'button'>;\n\nexport function Button(properties: Properties) {\n const { classNames, variant, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} variant={variant}>\n <ButtonRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ButtonPrimitive.Props;\n\nfunction ButtonRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n","import { CommonHelpers } from '@digo-labs/common';\n\nimport { ComponentProps, useState } from 'react';\n\nimport { Button } from 'src/components/button';\nimport { Icon } from 'src/components/icon';\nimport { MotionAnimatePresence } from 'src/animation/motion-animate-presence';\nimport { motionTransitionPresets } from 'src/utils/motion-presets';\n\ninterface Properties extends ComponentProps<typeof Button> {\n text: string;\n onCopy?: () => void;\n timeout?: number;\n}\n\nexport function CopyPasteButton(properties: Properties) {\n const { text, children, className, onClick, variant = 'icon', onCopy, timeout = 2000, ...props } = properties;\n\n const [copied, setCopied] = useState(false);\n\n async function handleCopy() {\n CommonHelpers.copyToClipboard(text);\n\n setCopied(true);\n\n onCopy?.();\n\n setTimeout(() => setCopied(false), timeout);\n };\n return (\n\n <Button\n variant={variant}\n onClick={(e) => {\n handleCopy();\n onClick?.(e);\n }}\n disabled={!text}\n className={className}\n {...props}\n >\n <MotionAnimatePresence\n activeIndex={copied ? 1 : 0}\n className=\"relative\"\n classNames={{ content: 'static typo-2' }}\n mode=\"popLayout\"\n transition={motionTransitionPresets.spring1}\n >\n <Icon icon=\"copy\" />\n <Icon icon=\"check\" />\n </MotionAnimatePresence>\n </Button>\n\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Field as FieldPrimitive } from '@base-ui/react/field';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('field');\n\nexport const FieldControl = FieldPrimitive.Control;\nexport const FieldValidity = FieldPrimitive.Validity;\n\ntype Properties = RootProperties & ComponentStylesProps<'field'>;\n\nexport function Field(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <FieldRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = FieldPrimitive.Root.Props;\n\nfunction FieldRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <FieldPrimitive.Root\n data-slot=\"field\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function FieldLabel(properties: FieldPrimitive.Label.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <FieldPrimitive.Label\n data-slot=\"field-label\"\n className={cn(styles.label, className)}\n {...props}\n />\n );\n}\n\nexport function FieldItem(properties: FieldPrimitive.Item.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <FieldPrimitive.Item\n data-slot=\"field-item\"\n className={cn(styles.item, className)}\n {...props}\n />\n );\n}\n\nexport function FieldDescription(properties: FieldPrimitive.Description.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <FieldPrimitive.Description\n data-slot=\"field-description\"\n className={cn(styles.description, className)}\n {...props}\n />\n );\n}\n\nexport function FieldError(properties: FieldPrimitive.Error.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <FieldPrimitive.Error\n data-slot=\"field-error\"\n className={cn(styles.error, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { ReorderList } from '..';\n\nimport { ComponentProps, createContext, ReactNode, useContext, useEffect, useMemo } from 'react';\nimport { AnimatePresence } from 'motion/react';\nimport { useDropzone, DropzoneOptions, FileRejection } from 'react-dropzone';\n\nimport { FieldControl } from 'src/components/field';\nimport { Button } from 'src/components/button';\nimport { Icon } from 'src/components/icon';\nimport { motionPresencePresets } from 'src/utils/motion-presets';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('dropzone');\n\nexport type { FileRejection };\n\ninterface ContextProperties extends\n Pick<Properties, 'id' | 'name' | 'required' | 'multiple' | 'disabled'>,\n Pick<ReturnType<typeof useDropzone>, 'isDragActive' | 'getRootProps' | 'getInputProps' | 'inputRef' | 'open'> {\n files: File[];\n onRemove: (file: File) => void;\n onReorder: (files: File[]) => void;\n}\n\nconst Context = createContext<ContextProperties | undefined>(undefined);\n\ninterface Properties extends DropzoneOptions, ComponentStylesProps<'dropzone'> {\n value: File[];\n onChange: (files: File[]) => void;\n className?: string;\n children?: ReactNode;\n id?: string;\n name?: string;\n required?: boolean;\n}\n\nexport function Dropzone(properties: Properties) {\n const {\n classNames,\n value: files,\n onChange,\n multiple = true,\n accept,\n maxSize,\n disabled = false,\n onDropRejected,\n children,\n id,\n name,\n required,\n className,\n } = properties;\n\n const { getRootProps, getInputProps, inputRef, isDragActive, open } = useDropzone({\n accept,\n maxSize,\n multiple,\n disabled,\n noClick: true,\n noKeyboard: true,\n onDropRejected,\n onDropAccepted: (acceptedFiles) => {\n const next = multiple === false ? acceptedFiles.slice(0, 1) : [...files, ...acceptedFiles];\n onChange(next);\n },\n });\n\n function handleRemove(file: File) {\n onChange(files.filter(f => f !== file));\n }\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <Context.Provider value={{ files, multiple, isDragActive, disabled, onRemove: handleRemove, onReorder: onChange, getRootProps, getInputProps, inputRef, open, id, name, required }}>\n <DropzoneRoot className={className}>\n {children ?? (\n <DropzoneArea>\n <DropzoneCTA>\n <p className=\"truncate\">Upload File</p>\n <Icon icon=\"upload\" />\n </DropzoneCTA>\n <DropzoneFileList />\n </DropzoneArea>\n )}\n </DropzoneRoot>\n </Context.Provider>\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'div'>;\n\nfunction DropzoneRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"dropzone\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function DropzoneArea(properties: ComponentProps<'div'>) {\n const { className, children, ...props } = properties;\n\n const { getRootProps, getInputProps, inputRef, isDragActive, disabled, id, name, required, files } = useContext(Context)!;\n\n useEffect(() => {\n if (!inputRef.current) return;\n\n const dataTransfer = new DataTransfer();\n\n files.forEach(file => dataTransfer.items.add(file));\n\n inputRef.current.files = dataTransfer.files;\n\n inputRef.current.required = !!required && files.length === 0;\n }, [files, required]);\n\n const styles = useComponentStyles();\n\n return (\n <div\n {...getRootProps({\n ...props,\n 'className': cn(styles.area, className),\n 'data-slot': 'dropzone-area',\n 'data-drag-over': isDragActive || undefined,\n 'data-disabled': disabled || undefined,\n })}\n >\n <FieldControl\n render={<input />}\n {...getInputProps({ id, name })}\n />\n {children}\n </div>\n );\n}\n\nexport function DropzoneCTA(properties: ComponentProps<'button'>) {\n const { className, children, ...props } = properties;\n\n const { open, disabled } = useContext(Context)!;\n\n const styles = useComponentStyles();\n\n return (\n <button\n type=\"button\"\n data-slot=\"dropzone-cta\"\n disabled={disabled}\n className={cn(styles.cta, className)}\n onClick={(event) => {\n event.stopPropagation();\n open();\n }}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nexport function DropzoneFileList(properties: ComponentProps<'div'>) {\n const { className, children, ...props } = properties;\n\n const { files, onReorder } = useContext(Context)!;\n\n const styles = useComponentStyles();\n\n if (files.length === 0) return null;\n\n return (\n <ReorderList.Group\n axis=\"y\"\n values={files}\n onReorder={onReorder}\n data-slot=\"dropzone-file-list\"\n className={cn(styles.fileList, className)}\n {...props}\n >\n <AnimatePresence>\n {children ?? files.map(file => (\n <DropzoneFileItem\n key={`${file.name}-${file.size}-${file.lastModified}`}\n file={file}\n />\n ))}\n </AnimatePresence>\n </ReorderList.Group>\n );\n}\n\ninterface FileItemProperties extends Omit<ComponentProps<typeof ReorderList.Item>, 'value'> {\n file: File;\n onDeleteFile?: (file: File) => void;\n}\n\nexport function DropzoneFileItem(properties: FileItemProperties) {\n const { file, onDeleteFile, className, ...props } = properties;\n\n const { onRemove, files } = useContext(Context)!;\n\n const styles = useComponentStyles();\n\n const handleDelete = onDeleteFile ?? onRemove;\n\n const previewUrl = useMemo(\n () => file.type.startsWith('image/') ? URL.createObjectURL(file) : undefined,\n [file],\n );\n\n useEffect(() => {\n return () => {\n if (previewUrl) URL.revokeObjectURL(previewUrl);\n };\n }, [previewUrl]);\n\n return (\n <ReorderList.Item\n value={file}\n data-slot=\"dropzone-file-item\"\n className={cn(styles.fileItem, className)}\n {...motionPresencePresets.variant2}\n layout\n {...props}\n >\n\n <div data-slot=\"dropzone-thumbnail\" className={styles.thumbnailContainer}>\n { previewUrl\n ? <img src={previewUrl} alt={file.name} className={styles.thumbnail} />\n : <Icon icon=\"file\" className=\"size-7\" />}\n </div>\n\n <div data-slot=\"dropzone-info\" className={styles.info}>\n <span data-slot=\"dropzone-name\" className={styles.name}>{file.name}</span>\n <span data-slot=\"dropzone-type\" className={styles.type}>{file.type}</span>\n </div>\n\n {files.length > 1 && <Icon icon=\"dragHandle\" className={styles.grab} />}\n\n <Button\n data-slot=\"dropzone-remove\"\n variant=\"default\"\n className={styles.remove}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n handleDelete(file);\n }}\n >\n <Icon icon=\"delete\" className=\"size-3\" />\n </Button>\n\n </ReorderList.Item>\n );\n}\n","import { useRef } from 'react';\n\nimport { FONT_FACES } from '@digo-labs/common';\n\nimport { Button, Combobox, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxTrigger, ComboboxValue, Icon } from '..';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('fontPicker');\n\ninterface Font {\n label: string;\n value: string;\n}\n\nconst fonts: Font[] = FONT_FACES.map(f => ({ label: f.family, value: f.family }));\n\ntype Properties = RootProperties & ComponentStylesProps<'fontPicker'>;\n\nexport function FontPicker(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <FontPickerRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties {\n value: string;\n onValueChange: (font: string) => void;\n}\n\nfunction FontPickerRoot(properties: RootProperties) {\n const { value, onValueChange } = properties;\n\n const styles = useComponentStyles();\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n return (\n <Combobox\n items={fonts}\n value={fonts.find(font => font.value === value) ?? fonts[0]}\n onValueChange={font => font && onValueChange(font.value)}\n classNames={{\n itemIndicator: styles.itemIndicator,\n }}\n >\n <ComboboxTrigger\n className={styles.trigger}\n ref={triggerRef}\n render={<Button variant=\"default\" />}\n >\n <ComboboxValue placeholder=\"Select a font…\" />\n <span className={styles.fontPreview} style={{ fontFamily: `'${value}', sans-serif` }}>\n Aa\n </span>\n </ComboboxTrigger>\n\n <ComboboxPopup anchor={triggerRef} className={styles.popup}>\n <div className={styles.inputContainer}>\n <ComboboxInput\n className={styles.input}\n placeholder=\"Search font...\"\n showTrigger={false}\n startAddon={<Icon icon=\"search\" />}\n />\n </div>\n\n <ComboboxEmpty className={styles.empty}>\n No fonts found.\n </ComboboxEmpty>\n\n <ComboboxList className={styles.list}>\n {(font: Font) => (\n <ComboboxItem\n key={font.value}\n value={font}\n className={styles.item}\n >\n <span\n style={{ fontFamily: `'${font.value}', sans-serif` }}\n className={styles.itemPreview}\n >\n Aa\n </span>\n\n <div className={styles.itemlabel}>\n {font.label}\n </div>\n\n </ComboboxItem>\n )}\n </ComboboxList>\n </ComboboxPopup>\n </Combobox>\n );\n}\n","import { cn, CommonHelpers, ImagePayload } from '@digo-labs/common';\nimport { Icon, Image, Button, Dropzone, DropzoneArea, DropzoneCTA, MotionAnimatePresence } from '..';\n\nimport { ComponentProps, useMemo, useState } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('imageDropzone');\n\ntype Properties = RootProperties & ComponentStylesProps<'imageDropzone'>;\n\nexport function ImageDropzone(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ImageDropzoneRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends Omit<ComponentProps<typeof Dropzone>, 'value' | 'onChange' | 'children' | 'multiple'> {\n value: ImagePayload | undefined;\n onChange: (image: ImagePayload | undefined) => void;\n}\n\nfunction ImageDropzoneRoot(properties: RootProperties) {\n const {\n value,\n onChange,\n accept = { 'image/*': [] },\n className,\n ...dropzoneProps\n } = properties;\n\n const styles = useComponentStyles();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const files = useMemo(() => (value ? [CommonHelpers.getFileFromImagePayload(value)] : []), [value]);\n\n async function handleChange(nextFiles: File[]) {\n const file = nextFiles[0];\n\n if (!file) return onChange(undefined);\n\n setIsLoading(true);\n\n const [image, error] = await CommonHelpers.getImagePayloadFromFile(file);\n\n setIsLoading(false);\n\n if (error) return;\n\n onChange(image);\n }\n\n return (\n <Dropzone\n {...dropzoneProps}\n value={files}\n onChange={handleChange}\n multiple={false}\n accept={accept}\n className={cn(styles.root, className)}\n >\n <DropzoneArea\n data-has-image={!!value || undefined}\n className={styles.area}\n >\n\n <MotionAnimatePresence\n activeIndex={value ? 1 : 0}\n classNames={{ root: 'h-auto', content: 'relative' }}\n >\n <ImageDropzonePlaceHolder />\n <Image src={value!} classNames={{ root: styles.image }} />\n </MotionAnimatePresence>\n\n {isLoading && <ImageDropzoneLoader />}\n\n {value && (\n <Button variant=\"default\" className={styles.deleteButton} onClick={() => onChange(undefined)}>\n <Icon icon=\"trash\" />\n </Button>\n )}\n\n <DropzoneCTA className={styles.cta} />\n </DropzoneArea>\n </Dropzone>\n );\n}\n\nfunction ImageDropzoneLoader() {\n const styles = useComponentStyles();\n\n return (\n <div className={styles.loader}>\n <Icon icon=\"loading\" className={styles.loaderIcon} />\n </div>\n );\n}\n\nfunction ImageDropzonePlaceHolder() {\n const styles = useComponentStyles();\n\n return (\n <div className={styles.placeholder}>\n <Icon icon=\"upload\" className={styles.placeholderIcon} />\n <span>\n Upload Image\n </span>\n </div>\n );\n}\n","import { cn, CommonHelpers } from '@digo-labs/common';\n\nimport { ComponentProps, useLayoutEffect, useRef } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('navbar');\n\ntype Properties = RootProperties & ComponentStylesProps<'navbar'>;\n\nexport function Navbar(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <NavbarRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'nav'>;\n\nfunction NavbarRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n const ref = useRef<HTMLElement>(null);\n\n useLayoutEffect(() => {\n const element = ref.current;\n\n if (!element) return;\n\n CommonHelpers.setCssVariable('--navbar-h', element);\n\n const resizeObserver = new ResizeObserver(() => CommonHelpers.setCssVariable('--navbar-h', element));\n\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, []);\n\n return (\n <nav\n ref={ref}\n data-slot=\"navbar\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function NavbarLogo(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"navbar-logo\"\n className={cn(styles.logo, className)}\n {...props}\n />\n );\n}\n\nexport function NavbarContent(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"navbar-content\"\n className={cn(styles.content, className)}\n {...props}\n />\n );\n}\n\nexport function NavbarActions(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"navbar-actions\"\n className={cn(styles.actions, className)}\n {...props}\n />\n );\n}\n","import { useRef } from 'react';\n\nimport { Button, ColorSwatch, Combobox, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxTrigger, ComboboxValue, Icon, PaletteName, PALETTES, useDesignSystem } from '..';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('palettePicker');\n\ninterface Palette {\n label: string;\n value: PaletteName;\n}\n\nconst paletteNames: PaletteName[] = Object.keys(PALETTES);\n\nconst palettes: Palette[] = paletteNames.map(name => ({ label: name, value: name }));\n\ntype Properties = RootProperties & ComponentStylesProps<'palettePicker'>;\n\nexport function PalettePicker(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <PalettePickerRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties {\n value: PaletteName;\n onValueChange: (palette: PaletteName) => void;\n}\n\nfunction PalettePickerRoot(properties: RootProperties) {\n const { value, onValueChange } = properties;\n\n const { mode } = useDesignSystem();\n const styles = useComponentStyles();\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n return (\n <Combobox\n items={palettes}\n value={palettes.find(palette => palette.value === value) ?? palettes[0]}\n onValueChange={palette => palette && onValueChange(palette.value)}\n >\n <ComboboxTrigger\n className={styles.trigger}\n ref={triggerRef}\n render={<Button variant=\"default\" />}\n >\n <ComboboxValue placeholder=\"Select a palette…\" />\n <div className={styles.paletteContainer}>\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value][mode][1]} />\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value][mode][3]} />\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value][mode][5]} />\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value][mode][7]} />\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value][mode][9]} />\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value][mode][11]} />\n </div>\n </ComboboxTrigger>\n\n <ComboboxPopup anchor={triggerRef} className={styles.popup}>\n <div className={styles.inputContainer}>\n <ComboboxInput\n className={styles.input}\n placeholder=\"Search palette...\"\n showTrigger={false}\n startAddon={<Icon icon=\"search\" />}\n />\n </div>\n\n <ComboboxEmpty className={styles.empty}>\n No palettes found.\n </ComboboxEmpty>\n\n <ComboboxList className={styles.list}>\n {(palette: Palette) => (\n <ComboboxItem\n key={palette.value}\n value={palette}\n >\n <div className={styles.item}>\n <ColorSwatch className={styles.colorBlock} color={PALETTES[palette.value][mode][9]} />\n <span>\n {palette.label}\n </span>\n </div>\n </ComboboxItem>\n )}\n </ComboboxList>\n </ComboboxPopup>\n </Combobox>\n );\n}\n","import { Parameter, Input, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nexport type { Properties as ParameterTextProperties };\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterText');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterText'>;\n\nexport function ParameterText(properties: Properties) {\n const { classNames, label, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterTextRoot label={label} {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof Input> {\n label: string;\n}\n\nfunction ParameterTextRoot(properties: RootProperties) {\n const { label, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-text\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n </ParameterRow>\n <ParameterInput className={styles.input}>\n <Input {...props} />\n </ParameterInput>\n </Parameter>\n );\n}\n","import { Parameter, PalettePicker, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator } from '..';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nimport type { PaletteName } from 'src/presets';\n\nexport type { Properties as ParameterPalettePickerProperties };\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterPalettePicker');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterPalettePicker'>;\n\nexport function ParameterPalettePicker(properties: Properties) {\n const { classNames, label, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterPalettePickerRoot label={label} {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties {\n label: string;\n value: PaletteName;\n onValueChange: (palette: PaletteName) => void;\n}\n\nfunction ParameterPalettePickerRoot(properties: RootProperties) {\n const { label, value, onValueChange } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-palette-picker\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n </ParameterRow>\n <ParameterInput className={styles.input}>\n <PalettePicker value={value} onValueChange={onValueChange} />\n </ParameterInput>\n </Parameter>\n );\n}\n","import { Parameter, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator, TextArea } from '..';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nimport { ComponentProps } from 'react';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterTextArea');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterTextArea'>;\n\nexport function ParameterTextArea(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterTextAreaRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof TextArea> {\n label: string;\n}\n\nfunction ParameterTextAreaRoot(properties: RootProperties) {\n const { label, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-text-area\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n </ParameterRow>\n <ParameterInput className={styles.input}>\n <TextArea {...props} />\n </ParameterInput>\n </Parameter>\n );\n}\n","import { Parameter, Slider, ParameterLabel, ParameterMeasure, ParameterRow, ParameterSeparator, ParameterValue } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nexport type { Properties as ParameterSliderProperties };\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterSlider');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterSlider'>;\n\nexport function ParameterSlider(properties: Properties) {\n const { classNames, label, measure, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterSliderRoot label={label} measure={measure} {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof Slider> {\n label: string;\n measure?: string;\n}\n\nfunction ParameterSliderRoot(properties: RootProperties) {\n const { label, measure, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-slider\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n {props.value && <ParameterValue value={props.value.toString()} className={styles.value} />}\n\n {measure && <ParameterMeasure measure={measure} className={styles.measure} />}\n </ParameterRow>\n <Slider {...props} />\n </Parameter>\n );\n}\n","import { cn, CuratedIcons } from '@digo-labs/common';\nimport { Icon, ToggleGroup, ToggleGroupItem, Parameter, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterToggleGroup');\n\nexport type { Properties as ParameterToggleGroupProperties };\n\nexport interface ToggleGroupItemData {\n value: string;\n label: string;\n icon?: CuratedIcons;\n}\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterToggleGroup'>;\n\nexport function ParameterToggleGroup(properties: Properties) {\n const { classNames, label, items, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterToggleGroupRoot label={label} items={items} {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof ToggleGroup> {\n label: string;\n items: ToggleGroupItemData[];\n inline?: boolean;\n itemVariant?: ComponentProps<typeof ToggleGroupItem>['variant'];\n}\n\nfunction ParameterToggleGroupRoot(properties: RootProperties) {\n const { label, items, itemVariant, inline = false, className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n const toggleInput = (\n <ParameterInput>\n <ToggleGroup className={styles.input} {...props}>\n {items.map(item => (\n <ToggleGroupItem variant={itemVariant} key={item.value} value={item.value} className={styles.item}>\n {item.icon && <Icon icon={item.icon} />}\n {item.label}\n </ToggleGroupItem>\n ))}\n </ToggleGroup>\n </ParameterInput>\n );\n\n return (\n <Parameter data-slot=\"parameter-toggle-group\" className={cn(styles.root, className)}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n {inline && toggleInput }\n\n </ParameterRow>\n\n {!inline && toggleInput}\n </Parameter>\n );\n}\n","import { Parameter, Switch, ParameterLabel, ParameterInput, ParameterSeparator, ParameterRow } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nexport type { Properties as ParameterSwitchProperties };\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterSwitch');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterSwitch'>;\n\nexport function ParameterSwitch(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterSwitchRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof Switch> {\n label: string;\n}\n\nfunction ParameterSwitchRoot(properties: RootProperties) {\n const { label, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-switch\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n <ParameterInput className={styles.input}>\n <Switch {...props} />\n </ParameterInput>\n </ParameterRow>\n </Parameter>\n );\n}\n","import { Toggle, Parameter, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator, Icon } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\nimport { CuratedIcons } from '@digo-labs/common';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterToggle');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterToggle'>;\n\nexport function ParameterToggle(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterToggleRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof Toggle> {\n label: string;\n icon?: CuratedIcons;\n}\n\nfunction ParameterToggleRoot(properties: RootProperties) {\n const { label, icon, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-toggle\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n <ParameterInput>\n <Toggle {...props} className={styles.input}>\n {icon && <Icon icon={icon} />}\n {children}\n </Toggle>\n </ParameterInput>\n </ParameterRow>\n </Parameter>\n );\n}\n","import { Parameter, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator, ColorInput } from '..';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\nimport { ComponentProps } from 'react';\nimport { cn } from '@digo-labs/common';\n\nexport type { Properties as ParameterColorProperties };\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterColor');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterColor'>;\n\nexport function ParameterColor(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterColorRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends Omit<ComponentProps<typeof ColorInput>, 'classNames'> {\n label: string;\n className?: string;\n}\n\nfunction ParameterColorRoot(properties: RootProperties) {\n const { label, className, ...pickerProps } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-color\" className={cn(styles.root, className)}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n </ParameterRow>\n <ParameterInput className={styles.input}>\n <ColorInput {...pickerProps} />\n </ParameterInput>\n </Parameter>\n );\n}\n","import { Parameter, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator, ColorSwatchPicker } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nexport type { Properties as ParameterColorSwatchPickerProperties };\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterColorSwatchPicker');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterColorSwatchPicker'>;\n\nexport function ParameterColorSwatchPicker(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterColorSwatchPickerRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends Omit<ComponentProps<typeof ColorSwatchPicker>, 'classNames'> {\n label: string;\n}\n\nfunction ParameterColorSwatchPickerRoot(properties: RootProperties) {\n const { label, ...pickerProps } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-color-swatch-picker\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n </ParameterRow>\n <ParameterInput className={styles.input}>\n <ColorSwatchPicker {...pickerProps} />\n </ParameterInput>\n </Parameter>\n );\n}\n","import { CuratedIcons } from '@digo-labs/common';\nimport { Combobox, ComboboxTrigger, ComboboxValue, ComboboxPopup, ComboboxInput, ComboboxList, ComboboxItem, ComboboxEmpty, Button, Icon, Parameter, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator } from '..';\n\nimport { useRef } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nexport type { Properties as ParameterComboboxProperties };\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterCombobox');\n\nexport interface ComboboxItemData {\n label: string;\n value: string;\n icon?: CuratedIcons;\n}\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterCombobox'>;\n\nexport function ParameterCombobox(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterComboboxRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties {\n label: string;\n placeholder?: string;\n items: ComboboxItemData[];\n value: ComboboxItemData | ComboboxItemData[] | null;\n onValueChange: (value: any) => void;\n multiple?: boolean;\n}\n\nfunction ParameterComboboxRoot(properties: RootProperties) {\n const { label, placeholder = 'Select...', items, value, onValueChange, multiple } = properties;\n\n const styles = useComponentStyles();\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n return (\n <Parameter data-slot=\"parameter-combobox\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n </ParameterRow>\n <ParameterInput>\n <Combobox items={items} value={value} onValueChange={onValueChange} multiple={multiple}>\n <ComboboxTrigger className={styles.trigger} ref={triggerRef} render={<Button variant=\"default\" />}>\n <ComboboxValue placeholder={placeholder} />\n </ComboboxTrigger>\n\n <ComboboxPopup anchor={triggerRef} className={styles.popup}>\n <div className={styles.inputContainer}>\n <ComboboxInput className={styles.input} placeholder=\"Search...\" showTrigger={false} startAddon={<Icon icon=\"search\" />} />\n </div>\n <ComboboxEmpty className={styles.empty}>No results found.</ComboboxEmpty>\n <ComboboxList className={styles.list}>\n {(item: ComboboxItemData) => (\n <ComboboxItem key={item.value} value={item} className={styles.item}>\n {item.icon &&\n <div className={styles.itemIcon}>\n <Icon icon={item.icon} />\n </div>}\n <div className={styles.itemName}>\n {item.label}\n </div>\n </ComboboxItem>\n )}\n </ComboboxList>\n </ComboboxPopup>\n </Combobox>\n </ParameterInput>\n </Parameter>\n );\n}\n","import { Parameter, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator, Dropzone } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nexport type { Properties as ParameterFilesProperties };\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterFiles');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterFiles'>;\n\nexport function ParameterFiles(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterFilesRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends Omit<ComponentProps<typeof Dropzone>, 'classNames'> {\n label: string;\n}\n\nfunction ParameterFilesRoot(properties: RootProperties) {\n const { label, ...dropzoneProps } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-files\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n </ParameterRow>\n <ParameterInput className={styles.input}>\n <Dropzone {...dropzoneProps} />\n </ParameterInput>\n </Parameter>\n );\n}\n","import { Parameter, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator, FontPicker } from '..';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterFontPicker');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterFontPicker'>;\n\nexport function ParameterFontPicker(properties: Properties) {\n const { classNames, label, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterFontPickerRoot label={label} {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties {\n label: string;\n value: string;\n onValueChange: (font: string) => void;\n}\n\nfunction ParameterFontPickerRoot(properties: RootProperties) {\n const { label, value, onValueChange } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-font-picker\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n </ParameterRow>\n <ParameterInput className={styles.input}>\n <FontPicker value={value} onValueChange={onValueChange} />\n </ParameterInput>\n </Parameter>\n );\n}\n","import { Parameter, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator, ImageDropzone } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nexport type { Properties as ParameterImageProperties };\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterImage');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterImage'>;\n\nexport function ParameterImage(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterImageRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends Omit<ComponentProps<typeof ImageDropzone>, 'classNames'> {\n label: string;\n}\n\nfunction ParameterImageRoot(properties: RootProperties) {\n const { label, ...dropzoneProps } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-image\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n </ParameterRow>\n <ParameterInput className={styles.input}>\n <ImageDropzone {...dropzoneProps} />\n </ParameterInput>\n </Parameter>\n );\n}\n","import { NumberField, NumberFieldDecrement, NumberFieldGroup, NumberFieldIncrement, NumberFieldInput, Parameter, ParameterLabel, ParameterMeasure, ParameterRow, ParameterSeparator } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nexport type { Properties as ParameterNumberProperties };\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterNumber');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterNumber'>;\n\nexport function ParameterNumber(properties: Properties) {\n const { classNames, label, measure, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterNumberRoot label={label} measure={measure} {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof NumberField> {\n label: string;\n measure?: string;\n}\n\nfunction ParameterNumberRoot(properties: RootProperties) {\n const { label, measure, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-number\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n {measure && <ParameterMeasure measure={measure} className={styles.measure} />}\n </ParameterRow>\n <NumberField {...props}>\n <NumberFieldGroup>\n <NumberFieldDecrement />\n <NumberFieldInput />\n <NumberFieldIncrement />\n </NumberFieldGroup>\n </NumberField>\n </Parameter>\n );\n}\n","import { Parameter, PresetPicker, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator } from '..';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nimport type { ThemePreset } from 'src/presets';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterPresetPicker');\n\ninterface RootProperties {\n label: string;\n value: ThemePreset;\n onValueChange: (preset: ThemePreset) => void;\n}\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterPresetPicker'>;\n\nexport function ParameterPresetPicker(properties: Properties) {\n const { classNames, label, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterPresetPickerRoot label={label} {...props} />\n </ComponentStylesProvider>\n );\n}\n\nfunction ParameterPresetPickerRoot(properties: RootProperties) {\n const { label, value, onValueChange } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-preset-picker\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n </ParameterRow>\n <ParameterInput className={styles.input}>\n <PresetPicker value={value} onValueChange={onValueChange} />\n </ParameterInput>\n </Parameter>\n );\n}\n","import { CuratedIcons } from '@digo-labs/common';\n\nimport { Icon, Parameter, ParameterLabel, ParameterInput, ParameterRow, ParameterSeparator, Select, SelectTrigger, SelectValue, SelectPopup, SelectItem } from '..';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nexport type { Properties as ParameterSelectProperties };\n\nexport interface SelectItemData {\n label: string;\n value: string;\n icon?: CuratedIcons;\n}\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterSelect');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterSelect'>;\n\nexport function ParameterSelect(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterSelectRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties {\n label: string;\n placeholder?: string;\n items: SelectItemData[];\n value: string;\n onValueChange: (value: string) => void;\n}\n\nfunction ParameterSelectRoot(properties: RootProperties) {\n const { label, placeholder = 'Select...', items, value, onValueChange } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Parameter data-slot=\"parameter-select\" className={styles.root}>\n <ParameterRow className={styles.row}>\n <ParameterLabel label={label} className={styles.label} />\n <ParameterSeparator className={styles.separator} />\n </ParameterRow>\n <ParameterInput className={styles.input}>\n <Select value={value} onValueChange={value => value != null && onValueChange(value)}>\n <SelectTrigger className={styles.trigger}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectPopup>\n {items.map(item => (\n <SelectItem key={item.value} value={item.value}>\n {item.icon && <Icon icon={item.icon} />}\n {item.label}\n </SelectItem>\n ))}\n </SelectPopup>\n </Select>\n </ParameterInput>\n </Parameter>\n );\n}\n","import { cn, CuratedIcons } from '@digo-labs/common';\nimport { Icon, Collapsible, CollapsibleIcon, CollapsiblePanel, CollapsibleTrigger } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterGroup');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterGroup'>;\n\nexport function ParameterGroup(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterGroupRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof Collapsible> {\n name: string;\n icon?: CuratedIcons;\n collapsible?: boolean;\n}\n\nfunction ParameterGroupRoot(properties: RootProperties) {\n const { className, collapsible = true, name, icon, children, open, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n collapsible ?\n\n <Collapsible\n open={open}\n data-slot=\"parameter-group\"\n className={cn(styles.root, className)}\n {...props}\n >\n <CollapsibleTrigger className={styles.trigger}>\n\n {icon &&\n <div className={styles.icon}>\n <Icon icon={icon} />\n </div>}\n\n <div className={styles.name}>\n {name}\n </div>\n\n <div className={styles.collapsibleIcon}>\n <CollapsibleIcon open={open} />\n </div>\n\n </CollapsibleTrigger>\n\n <CollapsiblePanel className={styles.panel}>\n {children}\n </CollapsiblePanel>\n\n </Collapsible>\n\n : <div className={styles.root}>\n {children}\n </div>\n\n );\n}\n","import { cn, CuratedIcons } from '@digo-labs/common';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\nimport { ParameterGroup } from '../components/parameter-group';\nimport { ParameterSlider } from './parameter-slider';\nimport { ParameterFontPicker } from './parameter-font-picker';\n\nimport { ComponentProps } from 'react';\n\nimport type { TypographyProperties } from 'src/presets';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterTypographyGroup');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterTypographyGroup'>;\n\nexport function ParameterTypographyGroup(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterTypographyGroupRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof ParameterGroup> {\n name: string;\n icon?: CuratedIcons;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n value: TypographyProperties;\n onValueChange: (partial: Partial<TypographyProperties>) => void;\n}\n\nfunction ParameterTypographyGroupRoot(properties: RootProperties) {\n const { value, onValueChange, className, ...groupProps } = properties;\n\n const styles = useComponentStyles();\n\n const weight = parseInt(value.weight);\n const tracking = Math.round(parseFloat(value.tracking) * 1000);\n const leading = Math.round(parseFloat(value.leading) * 100);\n\n return (\n <ParameterGroup\n data-slot=\"parameter-typography-group\"\n {...groupProps}\n className={cn(styles.root, className)}\n >\n <div className={styles.content}>\n\n <ParameterFontPicker\n label=\"Font\"\n value={value.font}\n onValueChange={font => onValueChange({ font })}\n />\n\n <ParameterSlider\n label=\"Weight\"\n value={weight}\n onValueChange={value => onValueChange({ weight: `${Array.isArray(value) ? value[0] : value}` })}\n min={100}\n max={900}\n step={100}\n />\n\n <ParameterSlider\n label=\"Tracking\"\n value={tracking}\n onValueChange={value => onValueChange({ tracking: `${(Array.isArray(value) ? value[0] : value) / 1000}em` })}\n min={0}\n max={100}\n step={5}\n measure=\"em\"\n />\n\n <ParameterSlider\n label=\"Leading\"\n value={leading}\n onValueChange={value => onValueChange({ leading: `${(Array.isArray(value) ? value[0] : value) / 100}` })}\n min={80}\n max={200}\n step={5}\n />\n\n </div>\n </ParameterGroup>\n );\n}\n","import { cn, CuratedIcons } from '@digo-labs/common';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\nimport { useDesignSystem } from '../providers/design-system-provider';\nimport { PALETTES } from '../presets/palettes';\nimport { ParameterGroup } from '../components/parameter-group';\nimport { ParameterSlider } from './parameter-slider';\nimport { ParameterPalettePicker } from './parameter-palette-picker';\n\nimport { ComponentProps } from 'react';\n\nimport type { PaletteName, ShadowProperties } from 'src/presets';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameterShadowGroup');\n\ntype Properties = RootProperties & ComponentStylesProps<'parameterShadowGroup'>;\n\nexport function ParameterShadowGroup(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterShadowGroupRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof ParameterGroup> {\n name: string;\n icon?: CuratedIcons;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n value: ShadowProperties;\n onValueChange: (partial: Partial<ShadowProperties>) => void;\n}\n\nfunction ParameterShadowGroupRoot(properties: RootProperties) {\n const { value, onValueChange, className, ...groupProps } = properties;\n\n const styles = useComponentStyles();\n const { mode } = useDesignSystem();\n\n const colorHex = PALETTES[value.color as PaletteName][mode][9];\n\n return (\n <ParameterGroup\n data-slot=\"parameter-shadow-group\"\n {...groupProps}\n className={cn(styles.root, className)}\n >\n <div\n data-slot=\"preview\"\n className={styles.preview}\n style={{ boxShadow: `${value.offsetX}px ${value.offsetY}px ${value.blur}px ${value.spread}px color-mix(in srgb, ${colorHex} ${Math.round(value.opacity * 100)}%, transparent)` }}\n />\n\n <div className={styles.content}>\n\n <ParameterPalettePicker\n label=\"Color\"\n value={value.color}\n onValueChange={color => onValueChange({ color })}\n />\n\n <ParameterSlider\n label=\"Blur\"\n value={value.blur}\n onValueChange={value => onValueChange({ blur: Array.isArray(value) ? value[0] : value })}\n min={0}\n max={80}\n />\n\n <ParameterSlider\n label=\"Spread\"\n value={value.spread}\n onValueChange={value => onValueChange({ spread: Array.isArray(value) ? value[0] : value })}\n min={-20}\n max={20}\n />\n\n <ParameterSlider\n label=\"Opacity\"\n value={Math.round(value.opacity * 100)}\n onValueChange={value => onValueChange({ opacity: (Array.isArray(value) ? value[0] : value) / 100 })}\n min={0}\n max={100}\n measure=\"%\"\n />\n\n <ParameterSlider\n label=\"Offset X\"\n value={value.offsetX}\n onValueChange={value => onValueChange({ offsetX: Array.isArray(value) ? value[0] : value })}\n min={-40}\n max={40}\n measure=\"px\"\n />\n\n <ParameterSlider\n label=\"Offset Y\"\n value={value.offsetY}\n onValueChange={value => onValueChange({ offsetY: Array.isArray(value) ? value[0] : value })}\n min={-40}\n max={40}\n measure=\"px\"\n />\n\n </div>\n </ParameterGroup>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { ScrollArea } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('placeholder');\n\ntype Properties = RootProperties & ComponentStylesProps<'placeholder'>;\n\nexport function Placeholder(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <PlaceholderRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'div'>;\n\nfunction PlaceholderRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"placeholder\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\ninterface ListProperties extends ComponentProps<'div'> {\n count: number;\n}\n\nexport function PlaceholderList(properties: ListProperties) {\n const { children, className, count, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div data-slot=\"placeholder-list\" className={cn(styles.list, className)} {...props}>\n {Array.from({ length: count }, (_, index) => (\n <div key={index} className={styles.itemWrapper}>\n {children}\n </div>\n ))}\n </div>\n );\n}\n\nexport function PlaceholderItem(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"placeholder-list-item\"\n className={cn(styles.item, className)}\n {...props}\n />\n );\n}\n\nexport function PlaceholderScrollableArea(properties: ComponentProps<typeof ScrollArea>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ScrollArea\n data-slot=\"placeholder-scrollable-area\"\n className={cn(styles.scrollableArea, className)}\n {...props}\n />\n );\n}\n","import type { ThemePreset } from '../types';\n\nexport const defaultPreset: ThemePreset = {\n name: 'default',\n colors: {\n neutral: 'gray',\n accent: 'green',\n error: 'crimson',\n success: 'green',\n warning: 'yellow',\n info: 'blue',\n },\n shadows: {\n xs: { color: 'gray', offsetX: 0, offsetY: 0, blur: 2, spread: 0, opacity: 0.05 },\n s: { color: 'gray', offsetX: 0, offsetY: 0, blur: 4, spread: 0, opacity: 0.1 },\n m: { color: 'gray', offsetX: 0, offsetY: 0, blur: 8, spread: -1, opacity: 0.15 },\n l: { color: 'gray', offsetX: 0, offsetY: 0, blur: 16, spread: -2, opacity: 0.2 },\n xl: { color: 'gray', offsetX: 0, offsetY: 0, blur: 40, spread: -8, opacity: 0.3 },\n },\n typography: {\n header: { font: 'geist', weight: '700', tracking: '0.025em', leading: '1' },\n label: { font: 'geist', weight: '500', tracking: '0.025em', leading: '1' },\n body: { font: 'geist', weight: '400', tracking: '0em', leading: '1.5' },\n code: { font: 'geist-mono', weight: '400', tracking: '0em', leading: '1.4' },\n },\n radius: '1rem',\n spacingFactor: 1,\n typographyScaleFactor: 1,\n};\n","import type { ThemePreset } from '../types';\n\nexport const oceanPreset: ThemePreset = {\n name: 'ocean',\n colors: {\n neutral: 'slate',\n accent: 'cyan',\n error: 'red',\n success: 'teal',\n warning: 'amber',\n info: 'indigo',\n },\n shadows: {\n xs: { color: 'slate', offsetX: 0, offsetY: 0, blur: 2, spread: 0, opacity: 0.05 },\n s: { color: 'slate', offsetX: 0, offsetY: 0, blur: 4, spread: 0, opacity: 0.1 },\n m: { color: 'slate', offsetX: 0, offsetY: 0, blur: 8, spread: -1, opacity: 0.15 },\n l: { color: 'slate', offsetX: 0, offsetY: 0, blur: 16, spread: -2, opacity: 0.2 },\n xl: { color: 'slate', offsetX: 0, offsetY: 0, blur: 40, spread: -8, opacity: 0.3 },\n },\n typography: {\n header: { font: 'clash-grotesk', weight: '700', tracking: '0.025em', leading: '1' },\n label: { font: 'geist', weight: '500', tracking: '0.025em', leading: '1' },\n body: { font: 'geist', weight: '400', tracking: '0em', leading: '1.5' },\n code: { font: 'geist-mono', weight: '400', tracking: '0em', leading: '1.4' },\n },\n radius: '0.5rem',\n spacingFactor: 1,\n typographyScaleFactor: 1,\n};\n","import type { ThemePreset } from '../types';\n\nexport const retroFuturisticPreset: ThemePreset = {\n name: 'retro-futuristic',\n colors: {\n neutral: 'indigo',\n accent: 'mint',\n error: 'crimson',\n success: 'lime',\n warning: 'yellow',\n info: 'blue',\n },\n shadows: {\n xs: {\n color: 'gray',\n offsetX: 0,\n offsetY: 0,\n blur: 2,\n spread: 0,\n opacity: 0.05,\n },\n s: {\n color: 'gray',\n offsetX: 0,\n offsetY: 0,\n blur: 4,\n spread: 0,\n opacity: 0.1,\n },\n m: {\n color: 'gray',\n offsetX: 0,\n offsetY: 0,\n blur: 8,\n spread: -1,\n opacity: 0.15,\n },\n l: {\n color: 'gray',\n offsetX: 0,\n offsetY: 0,\n blur: 16,\n spread: -2,\n opacity: 0.2,\n },\n xl: {\n color: 'gray',\n offsetX: 0,\n offsetY: 0,\n blur: 40,\n spread: -8,\n opacity: 0.3,\n },\n },\n typography: {\n header: {\n font: 'miratrix',\n weight: '800',\n tracking: '0.1em',\n leading: '1',\n },\n label: {\n font: 'nippo',\n weight: '300',\n tracking: '0.1em',\n leading: '1',\n },\n body: {\n font: 'geist-mono',\n weight: '300',\n tracking: '0em',\n leading: '1',\n },\n code: {\n font: 'geist-mono',\n weight: '400',\n tracking: '0em',\n leading: '1.4',\n },\n },\n radius: '0rem',\n spacingFactor: 1,\n typographyScaleFactor: 1,\n};\n","import { ThemePreset } from './types';\nimport * as curated from './curated';\n\nexport * from './types';\nexport * from './palettes';\nexport * from './helpers';\nexport * from './curated';\n\nexport const PRESETS: ThemePreset[] = Object.values(curated) as ThemePreset[];\n","import { useRef } from 'react';\n\nimport { Button, ColorSwatch, Combobox, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxTrigger, ComboboxValue, Icon, PALETTES, useDesignSystem } from '..';\n\nimport type { ThemePreset } from '../presets/types';\nimport { PRESETS } from '../presets';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('presetPicker');\n\ninterface Preset {\n label: string;\n value: ThemePreset;\n}\n\nconst presets: Preset[] = PRESETS.map(preset => ({ label: preset.name, value: preset }));\n\ntype Properties = RootProperties & ComponentStylesProps<'presetPicker'>;\n\nexport function PresetPicker(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <PresetPickerRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties {\n value: ThemePreset;\n onValueChange: (preset: ThemePreset) => void;\n}\n\nfunction PresetPickerRoot(properties: RootProperties) {\n const { value, onValueChange } = properties;\n\n const { mode } = useDesignSystem();\n const styles = useComponentStyles();\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n return (\n <Combobox\n items={presets}\n value={presets.find(preset => preset.value.name === value.name) ?? presets[0]}\n onValueChange={preset => preset && onValueChange(preset.value)}\n >\n <ComboboxTrigger\n className={styles.trigger}\n onClick={e => e.stopPropagation()}\n ref={triggerRef}\n render={<Button variant=\"default\" />}\n >\n <ComboboxValue placeholder=\"Select a preset…\" />\n <div className={styles.presetContainer}>\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value.colors.accent][mode][3]} />\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value.colors.accent][mode][6]} />\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value.colors.accent][mode][9]} />\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value.colors.neutral][mode][3]} />\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value.colors.neutral][mode][6]} />\n <ColorSwatch className={styles.colorBlock} color={PALETTES[value.colors.neutral][mode][9]} />\n </div>\n </ComboboxTrigger>\n\n <ComboboxPopup anchor={triggerRef} className={styles.popup}>\n <div className={styles.inputContainer}>\n <ComboboxInput\n className={styles.input}\n placeholder=\"Search preset...\"\n showTrigger={false}\n startAddon={<Icon icon=\"search\" />}\n />\n </div>\n\n <ComboboxEmpty className={styles.empty}>\n No presets found.\n </ComboboxEmpty>\n\n <ComboboxList className={styles.list}>\n {(preset: Preset) => (\n <ComboboxItem\n key={preset.label}\n value={preset}\n >\n <div className={styles.item}>\n <div className={styles.itemColors}>\n <ColorSwatch className={styles.colorBlock} color={PALETTES[preset.value.colors.accent][mode][9]} />\n <ColorSwatch className={styles.colorBlock} color={PALETTES[preset.value.colors.neutral][mode][9]} />\n </div>\n\n <span>\n {preset.label}\n </span>\n </div>\n </ComboboxItem>\n )}\n </ComboboxList>\n </ComboboxPopup>\n </Combobox>\n );\n}\n","import { cn, CommonHelpers, FilePayload, ModelMetadata } from '@digo-labs/common';\n\nimport { Button, ReorderList, Icon, Image, motionPresencePresets, Select, SelectItem, SelectPopup, SelectTrigger, SelectValue, Separator, TextArea, toastManager, Tooltip } from '..';\n\nimport { AnimatePresence } from 'motion/react';\n\nimport { ComponentProps, createContext, KeyboardEvent, useContext } from 'react';\nimport { Accept, useDropzone } from 'react-dropzone';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('promptInput');\n\ninterface ContextProperties {\n value: string;\n onChange: (next: string) => void;\n attachments: FilePayload[];\n onAttachmentsChange: (next: FilePayload[]) => void;\n maxAttachments: number;\n model: ModelMetadata;\n onModelChange: (next: ModelMetadata) => void;\n models: ModelMetadata[];\n isSubmitting: boolean;\n isStreaming: boolean;\n onSubmit: () => void;\n onAbort: () => void;\n openFilePicker: () => void;\n isDragActive: boolean;\n accept?: Accept;\n}\n\nconst PromptInputContext = createContext<ContextProperties | null>(null);\n\nfunction usePromptInputContext(): ContextProperties {\n const context = useContext(PromptInputContext);\n\n if (!context) {\n throw new Error('PromptInput subcomponents must be used within a <PromptInput>');\n }\n\n return context;\n}\n\ntype Properties = RootProperties & ComponentStylesProps<'promptInput'>;\n\nexport function PromptInput(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <PromptInputRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties =\n & Omit<ContextProperties, 'openFilePicker' | 'isDragActive' | 'maxAttachments'>\n & Partial<Pick<ContextProperties, 'maxAttachments'>>\n & Omit<ComponentProps<'div'>, 'onChange' | 'onSubmit'>;\n\nfunction PromptInputRoot(properties: RootProperties) {\n const {\n value,\n onChange,\n attachments,\n onAttachmentsChange,\n maxAttachments = 10,\n model,\n onModelChange,\n models,\n isSubmitting,\n isStreaming,\n onSubmit,\n onAbort,\n children,\n accept = { 'image/*': [] },\n className,\n ...props\n } = properties;\n\n const styles = useComponentStyles();\n\n const { getRootProps, getInputProps, isDragActive, open: openFilePicker } = useDropzone({\n accept: accept,\n multiple: true,\n disabled: isSubmitting,\n noClick: true,\n noKeyboard: true,\n onDropAccepted: async (acceptedFiles) => {\n if (attachments.length + acceptedFiles.length > maxAttachments) {\n toastManager.add({\n title: 'Too many files',\n description: `You can attach up to ${maxAttachments} files.`,\n type: 'error',\n });\n return;\n }\n\n const payloads: FilePayload[] = [];\n\n for (const file of acceptedFiles) {\n const [payload, error] = await CommonHelpers.getImagePayloadFromFile(file);\n\n if (error || !payload) continue;\n\n payloads.push(payload);\n }\n\n if (payloads.length > 0) {\n onAttachmentsChange([...attachments, ...payloads]);\n }\n },\n });\n\n return (\n <PromptInputContext.Provider value={{ value, onChange, attachments, onAttachmentsChange, maxAttachments, model, onModelChange, models, isSubmitting, isStreaming, onSubmit, onAbort, openFilePicker, isDragActive, accept }}>\n <div\n {...getRootProps({\n ...props,\n 'data-slot': 'prompt-input',\n 'data-drag-over': isDragActive || undefined,\n 'className': cn(styles.root, className),\n })}\n >\n <input {...getInputProps()} />\n {children ?? <PromptInputDefault />}\n </div>\n </PromptInputContext.Provider>\n );\n}\n\nfunction PromptInputDefault() {\n return (\n <>\n <PromptInputAttachments />\n <PromptInputInput />\n <PromptInputToolbarRow>\n <PromptInputAttachButton />\n <PromptInputModelPicker />\n <Separator className=\"flex-1\" />\n <PromptInputSubmit />\n </PromptInputToolbarRow>\n </>\n );\n}\n\ntype PromptInputAttachmentsProperties = Omit<ComponentProps<typeof ReorderList.Group>, 'values' | 'onReorder' | 'axis' | 'children'>;\n\nexport function PromptInputAttachments(properties: PromptInputAttachmentsProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n const { attachments, onAttachmentsChange } = usePromptInputContext();\n\n function handleRemove(base64: string) {\n onAttachmentsChange(attachments.filter(a => a.base64 !== base64));\n }\n\n if (attachments.length === 0) return null;\n\n return (\n <ReorderList.Group\n {...props}\n axis=\"x\"\n values={attachments}\n onReorder={onAttachmentsChange}\n data-slot=\"prompt-input-attachments\"\n className={cn(styles.attachments, className)}\n >\n <AnimatePresence mode=\"popLayout\">\n {attachments.map(attachment => (\n <ReorderList.Item\n key={attachment.base64}\n value={attachment}\n {...motionPresencePresets.variant2}\n layout={true}\n data-slot=\"prompt-input-attachment\"\n className={styles.attachment}\n >\n {isImagePayload(attachment)\n ?\n <Tooltip classNames={{ popup: styles.attachmentImageTooltip, viewport: 'px-0' }} content={<Image src={attachment} classNames={{ root: styles.attachmentImagePreview }} />}>\n <Image src={attachment} classNames={{ root: styles.attachmentImage }} />\n </Tooltip>\n :\n <div data-slot=\"prompt-input-attachment-file\" className={styles.attachmentFile}>\n <span className={styles.attachmentExtension}>{getFileExtensionLabel(attachment)}</span>\n </div>}\n <Button variant=\"close\" className={styles.removeButton} onClick={() => handleRemove(attachment.base64)}>\n <Icon icon=\"close\" />\n </Button>\n </ReorderList.Item>\n ))}\n </AnimatePresence>\n </ReorderList.Group>\n );\n}\n\ntype PromptInputInputProperties = Omit<ComponentProps<typeof TextArea>, 'value' | 'onChange' | 'disabled'>;\n\nexport function PromptInputInput(properties: PromptInputInputProperties) {\n const { className, onKeyDown, minRows = 1, maxRows = 10, ...props } = properties;\n\n const styles = useComponentStyles();\n const context = usePromptInputContext();\n\n const { value, onChange, isSubmitting, isStreaming } = context;\n\n function handleKeyDown(event: KeyboardEvent<HTMLTextAreaElement>) {\n onKeyDown?.(event);\n\n if (event.defaultPrevented) return;\n\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n\n if (isSubmitting || isStreaming) return;\n\n submitAndClear(context);\n }\n }\n\n return (\n <TextArea\n data-slot=\"prompt-input-input\"\n className={cn(styles.input, className)}\n value={value}\n onChange={event => onChange(event.target.value)}\n onKeyDown={handleKeyDown}\n disabled={isSubmitting}\n minRows={minRows}\n maxRows={maxRows}\n variant=\"ghost\"\n unstyled={true}\n {...props}\n />\n );\n}\n\nexport function PromptInputToolbarRow(properties: ComponentProps<'div'>) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"prompt-input-toolbar-row\"\n className={cn(styles.toolbarRow, className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\ninterface PromptInputModelPickerProperties {\n className?: string;\n}\n\nexport function PromptInputModelPicker(properties: PromptInputModelPickerProperties) {\n const { className } = properties;\n\n const styles = useComponentStyles();\n const { model, onModelChange, models, isSubmitting } = usePromptInputContext();\n\n function handleValueChange(nextId: string | null) {\n if (nextId == null) return;\n\n const next = models.find(entry => entry.id === nextId);\n\n if (next) onModelChange(next);\n }\n\n return (\n <Select<string>\n value={model.id}\n onValueChange={handleValueChange}\n disabled={isSubmitting}\n >\n <Tooltip content=\"Select Model\">\n <SelectTrigger className={cn(styles.modelPicker, className)}>\n <SelectValue>\n {() => {\n const found = models.find(entry => entry.id === model.id);\n\n return found ? `${found.name} ${found.version}` : model.id;\n }}\n </SelectValue>\n </SelectTrigger>\n </Tooltip>\n <SelectPopup>\n {models.map(entry => (\n <SelectItem key={entry.id} value={entry.id}>\n {entry.name}\n {' '}\n {entry.version}\n </SelectItem>\n ))}\n </SelectPopup>\n </Select>\n );\n}\n\ninterface PromptInputAttachButtonProperties {\n className?: string;\n}\n\nexport function PromptInputAttachButton(properties: PromptInputAttachButtonProperties) {\n const { className } = properties;\n\n const styles = useComponentStyles();\n const { openFilePicker, isSubmitting, attachments, maxAttachments } = usePromptInputContext();\n\n const atLimit = attachments.length >= maxAttachments;\n\n return (\n <Tooltip content={atLimit ? `Max ${maxAttachments} files` : 'Attach file'}>\n <Button\n data-slot=\"prompt-input-attach-button\"\n className={cn(styles.attachButton, className)}\n onClick={openFilePicker}\n disabled={isSubmitting || atLimit}\n >\n <Icon icon=\"attach\" />\n </Button>\n </Tooltip>\n );\n}\n\ninterface PromptInputSubmitProperties {\n className?: string;\n}\n\nexport function PromptInputSubmit(properties: PromptInputSubmitProperties) {\n const { className } = properties;\n\n const styles = useComponentStyles();\n const context = usePromptInputContext();\n\n const { value, attachments, isSubmitting, isStreaming, onAbort } = context;\n\n const idleDisabled = value.trim() === '' && attachments.length === 0;\n const isBusy = isSubmitting || isStreaming;\n\n function handleClick() {\n if (isBusy) {\n onAbort();\n return;\n }\n\n submitAndClear(context);\n }\n\n const tooltip = isStreaming\n ? 'Stop'\n : isSubmitting\n ? 'Sending…'\n : 'Send';\n\n return (\n <Tooltip content={tooltip}>\n <Button\n data-slot=\"prompt-input-submit\"\n className={cn(styles.submitButton, className)}\n onClick={handleClick}\n disabled={!isBusy && idleDisabled}\n variant={isStreaming ? 'destructive' : 'primary'}\n >\n <Icon icon={isSubmitting ? 'loading' : isStreaming ? 'stop' : 'arrowUp'} />\n </Button>\n </Tooltip>\n );\n}\n\nfunction submitAndClear(context: ContextProperties) {\n context.onSubmit();\n context.onChange('');\n context.onAttachmentsChange([]);\n}\n\nfunction isImagePayload(file: FilePayload): boolean {\n return file.mediaType.startsWith('image/');\n}\n\nfunction getFileExtensionLabel(file: FilePayload): string {\n const subtype = file.mediaType.split('/')[1] ?? 'file';\n const simplified = subtype.split('.').pop() ?? subtype;\n\n return simplified.slice(0, 4).toUpperCase();\n}\n","import { cn, tryCatch } from '@digo-labs/common';\nimport { AuthHelper } from '@digo-labs/services';\nimport { Button, Icon, Spinner, toastManager } from '..';\n\nimport { ComponentProps, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('googleSignInButton');\n\ntype Properties = RootProperties & ComponentStylesProps<'googleSignInButton'>;\n\nexport function GoogleSignInButton(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <GoogleSignInButtonRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends Omit<ComponentProps<typeof Button>, 'classNames'> {}\n\nfunction GoogleSignInButtonRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const [isSigningIn, setIsSigningIn] = useState(false);\n\n const location = useLocation();\n const from = (location.state as any)?.from?.pathname ?? '/';\n\n const styles = useComponentStyles();\n\n async function handleSignIn() {\n const client = AuthHelper.auth;\n\n if (!client) return;\n\n setIsSigningIn(true);\n\n const [, error] = await tryCatch(\n client.signIn.social({\n provider: 'google',\n callbackURL: `${window.location.origin}${from}`,\n }),\n );\n\n if (error) {\n toastManager.add({ type: 'error', title: 'Sign in failed', description: error.message });\n setIsSigningIn(false);\n }\n }\n\n return (\n <Button\n data-slot=\"google-signin-button\"\n onClick={handleSignIn}\n className={cn(styles.root, className)}\n {...props}\n disabled={isSigningIn}\n >\n <Icon icon=\"google\" className={styles.icon} />\n <span data-slot=\"google-signin-button-label\" className={styles.label}>\n Continue with Google\n </span>\n {isSigningIn && <Spinner className={styles.spinner} />}\n </Button>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { Switch, useDesignSystem } from '..';\n\nimport { ComponentProps } from 'react';\n\ninterface SwitchThemeProperties extends ComponentProps<typeof Switch> {\n className?: string;\n}\n\nexport function SwitchTheme(properties: SwitchThemeProperties) {\n const { className } = properties;\n\n const { mode, setMode } = useDesignSystem();\n return (\n <Switch\n id=\"switch-theme\"\n checkedIcon=\"lightMode\"\n uncheckedIcon=\"darkMode\"\n className={cn(className)}\n checked={mode === 'light'}\n onCheckedChange={() => setMode(mode === 'light' ? 'dark' : 'light')}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { Icon, motionTransitionPresets, useDesignSystem } from '..';\n\nimport { ComponentProps, useState } from 'react';\nimport { motion } from 'motion/react';\n\nexport function ToggleTheme(properties: ComponentProps<typeof motion.div>) {\n const { className, ...props } = properties;\n\n const [pressed, setPressed] = useState(false);\n const [hovered, setHovered] = useState(false);\n\n const { toggleMode } = useDesignSystem();\n\n return (\n\n <motion.div\n className={cn('flex-col-center', className)}\n animate={{\n rotate: hovered ? 0 : 180,\n scale: pressed ? 1.2 : 1,\n }}\n transition={motionTransitionPresets.spring3}\n onClick={toggleMode}\n onMouseDown={() => setPressed(true)}\n onMouseUp={() => setPressed(false)}\n onHoverStart={() => setHovered(true)}\n onHoverEnd={() => setHovered(false)}\n {...props}\n >\n\n <Icon icon=\"contrast\" />\n\n </motion.div>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentProps } from 'react';\n\nexport interface TransparentBackgroundProperties extends ComponentProps<'div'> {\n cols?: number;\n rows?: number;\n}\n\nexport function TransparentBackground(properties: TransparentBackgroundProperties) {\n const {\n cols = 5,\n rows = 3,\n className,\n } = properties;\n\n return (\n\n <div\n className={cn('absolute inset-0 z-0 grid', className)}\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(${cols}, 1fr)`,\n gridTemplateRows: `repeat(${rows}, 1fr)`,\n }}\n\n >\n {\n Array.from({ length: cols * rows }, (_, index) => (\n <div\n key={index}\n className={cn('size-full', (Math.floor(index / cols) + index % cols) % 2 === 0 ? 'bg-neutral-2' : 'bg-neutral-11/25')}\n />\n ))\n }\n\n </div>\n\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { Icon, motionTransitionPresets } from '..';\n\nimport { HTMLMotionProps, motion } from 'motion/react';\nimport { Accordion as AccordionPrimitive } from '@base-ui/react/accordion';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('accordion');\n\ntype Properties = RootProperties & ComponentStylesProps<'accordion'>;\n\nexport function Accordion(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <AccordionRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = AccordionPrimitive.Root.Props;\n\nfunction AccordionRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function AccordionItem(properties: AccordionPrimitive.Item.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(styles.item, className)}\n {...props}\n />\n );\n}\n\nexport function AccordionTrigger(properties: AccordionPrimitive.Trigger.Props) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AccordionPrimitive.Header data-slot=\"accordion-header\" className={styles.header}>\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(styles.trigger, className)}\n render={(props, state) => (\n <button {...props}>\n {children}\n <motion.span\n animate={{ rotate: state.open ? 45 : 0 }}\n data-slot=\"accordion-trigger-icon-wrapper\"\n className={styles.triggerIcon}\n transition={state.open ? motionTransitionPresets.spring3 : motionTransitionPresets.spring1}\n >\n <Icon icon=\"add\" />\n </motion.span>\n </button>\n )}\n {...props}\n />\n </AccordionPrimitive.Header>\n );\n}\n\nexport function AccordionContent(properties: AccordionPrimitive.Panel.Props) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-panel\"\n className={styles.panel}\n keepMounted={true}\n render={(props, state) => (\n <motion.div\n {...props as HTMLMotionProps<'div'>}\n initial={false}\n hidden={undefined}\n animate={{\n height: state.open ? 'auto' : 0,\n opacity: state.open ? 1 : 0,\n }}\n transition={state.open ? motionTransitionPresets.spring3 : motionTransitionPresets.spring1}\n />\n )}\n {...props}\n >\n <div data-slot=\"accordion-content\" className={cn(styles.content, className)}>\n {children}\n </div>\n </AccordionPrimitive.Panel>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('alert');\n\ntype Properties = RootProperties & ComponentStylesProps<'alert'>;\n\nexport function Alert(properties: Properties) {\n const { classNames, variant, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} variant={variant}>\n <AlertRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'div'>;\n\nfunction AlertRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function AlertContent(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"alert-content\"\n className={cn(styles.content, className)}\n {...props}\n />\n );\n}\n\nexport function AlertTitle(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(styles.title, className)}\n {...props}\n />\n );\n}\n\nexport function AlertDescription(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(styles.description, className)}\n {...props}\n />\n );\n}\n\nexport function AlertAction(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"alert-action\"\n className={cn(styles.action, className)}\n {...props}\n />\n );\n}\n\nexport function AlertIcon(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"alert-icon\"\n className={cn(styles.icon, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { Icon, Input, ScrollArea, Separator, Spinner } from '..';\n\nimport { Autocomplete as AutocompletePrimitive } from '@base-ui/react/autocomplete';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('autocomplete');\n\ntype Properties = ComponentProps<typeof AutocompletePrimitive.Root> & ComponentStylesProps<'autocomplete'>;\n\nexport function Autocomplete(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <AutocompletePrimitive.Root {...props} />\n </ComponentStylesProvider>\n );\n}\n\nexport function AutocompleteInput(properties: AutocompletePrimitive.Input.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompletePrimitive.Input\n data-slot=\"control\"\n className={cn(styles.input, className)}\n render={<Input variant=\"ghost\" unstyled />}\n {...props}\n />\n );\n}\n\ntype PopupProperties = AutocompletePrimitive.Popup.Props & {\n anchor?: AutocompletePrimitive.Positioner.Props['anchor'];\n side?: AutocompletePrimitive.Positioner.Props['side'];\n sideOffset?: AutocompletePrimitive.Positioner.Props['sideOffset'];\n align?: AutocompletePrimitive.Positioner.Props['align'];\n alignOffset?: AutocompletePrimitive.Positioner.Props['alignOffset'];\n};\n\nexport function AutocompletePopup(properties: PopupProperties) {\n const { className, children, anchor, side = 'bottom', sideOffset = 4, align = 'start', alignOffset, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompletePrimitive.Portal>\n <AutocompletePrimitive.Positioner\n data-slot=\"autocomplete-positioner\"\n anchor={anchor}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n className={styles.positioner}\n >\n <AutocompletePrimitive.Popup\n data-slot=\"autocomplete-popup\"\n className={cn(styles.popup, className)}\n {...props}\n >\n <div className={styles.popupInner}>\n {children}\n </div>\n </AutocompletePrimitive.Popup>\n </AutocompletePrimitive.Positioner>\n </AutocompletePrimitive.Portal>\n );\n}\n\nexport function AutocompleteItem(properties: AutocompletePrimitive.Item.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompletePrimitive.Item\n data-slot=\"autocomplete-item\"\n className={cn(styles.item, className)}\n {...props}\n />\n );\n}\n\nexport function AutocompleteSeparator(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompletePrimitive.Separator\n data-slot=\"autocomplete-separator\"\n className={cn(styles.separator, className)}\n render={<Separator />}\n {...props}\n />\n );\n}\n\nexport function AutocompleteGroup(properties: AutocompletePrimitive.Group.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompletePrimitive.Group\n data-slot=\"autocomplete-group\"\n className={cn(styles.group, className)}\n {...props}\n />\n );\n}\n\nexport function AutocompleteGroupLabel(properties: AutocompletePrimitive.GroupLabel.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompletePrimitive.GroupLabel\n data-slot=\"autocomplete-group-label\"\n className={cn(styles.groupLabel, className)}\n {...props}\n />\n );\n}\n\nexport function AutocompleteEmpty(properties: AutocompletePrimitive.Empty.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompletePrimitive.Empty\n data-slot=\"autocomplete-empty\"\n className={cn(styles.empty, className)}\n {...props}\n />\n );\n}\n\nexport function AutocompleteRow(properties: AutocompletePrimitive.Row.Props) {\n const { className, ...props } = properties;\n\n return (\n <AutocompletePrimitive.Row\n data-slot=\"autocomplete-row\"\n className={className}\n {...props}\n />\n );\n}\n\nexport function AutocompleteValue(properties: AutocompletePrimitive.Value.Props) {\n return (\n <AutocompletePrimitive.Value\n data-slot=\"autocomplete-value\"\n {...properties}\n />\n );\n}\n\nexport function AutocompleteList(properties: AutocompletePrimitive.List.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ScrollArea scrollbarGutter scrollFade>\n <AutocompletePrimitive.List\n data-slot=\"autocomplete-list\"\n className={cn(styles.list, className)}\n {...props}\n />\n </ScrollArea>\n );\n}\n\nexport function AutocompleteClear(properties: AutocompletePrimitive.Clear.Props) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompletePrimitive.Clear\n data-slot=\"autocomplete-clear\"\n className={cn(styles.clear, className)}\n {...props}\n >\n {children ?? <Icon icon=\"close\" />}\n </AutocompletePrimitive.Clear>\n );\n}\n\ntype AutocompleteStatusProperties = AutocompletePrimitive.Status.Props & {\n loading?: boolean;\n};\n\nexport function AutocompleteStatus(properties: AutocompleteStatusProperties) {\n const { className, loading, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompletePrimitive.Status\n data-slot=\"autocomplete-status\"\n className={cn(styles.status, loading && styles.statusLoading, className)}\n {...props}\n >\n {children}\n {loading && <Spinner className=\"size-4\" />}\n </AutocompletePrimitive.Status>\n );\n}\n\nexport function AutocompleteCollection(properties: AutocompletePrimitive.Collection.Props) {\n return (\n <AutocompletePrimitive.Collection\n data-slot=\"autocomplete-collection\"\n {...properties}\n />\n );\n}\n\nexport function AutocompleteTrigger(properties: AutocompletePrimitive.Trigger.Props) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompletePrimitive.Trigger\n data-slot=\"autocomplete-trigger\"\n className={cn(styles.trigger, className)}\n {...props}\n >\n {children ?? <Icon icon=\"select\" />}\n </AutocompletePrimitive.Trigger>\n );\n}\n\nexport const useAutocompleteFilter = AutocompletePrimitive.useFilter;\n","import { cn, Size } from '@digo-labs/common';\n\nimport { createContext, useContext, useMemo, type ComponentProps, type CSSProperties, type ReactNode } from 'react';\n\nimport { Legend, ResponsiveContainer, Tooltip, TooltipPayloadEntry } from 'recharts';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('chart');\n\nconst INITIAL_DIMENSION: Size = { width: 320, height: 200 };\n\ninterface ChartConfigItem {\n label?: ReactNode;\n color?: string;\n}\n\nexport type ChartConfig = Record<string, ChartConfigItem\n>;\n\ninterface ChartContextValue {\n config: ChartConfig;\n}\n\nconst ChartContext = createContext<ChartContextValue | null>(null);\n\nfunction useChart(): ChartContextValue {\n const context = useContext(ChartContext);\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n\n return context;\n}\n\ntype PayloadItem = TooltipPayloadEntry<string | number, string | number>;\n\nconst ChartItemContext = createContext<PayloadItem | null>(null);\n\nfunction useChartItem(): PayloadItem {\n const context = useContext(ChartItemContext);\n\n if (!context) {\n throw new Error('useChartItem must be used within a <ChartTooltipItem /> or <ChartLegendItem />');\n }\n\n return context;\n}\n\ntype Properties = ContainerRootProperties & ComponentStylesProps<'chart'>;\n\nexport function ChartContainer(properties: Properties) {\n const { classNames, config, ...props } = properties;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <ComponentStylesProvider classNames={classNames}>\n <ChartContainerRoot config={config} {...props} />\n </ComponentStylesProvider>\n </ChartContext.Provider>\n );\n}\n\ninterface ContainerRootProperties extends ComponentProps<'div'> {\n config: ChartConfig;\n children: ComponentProps<typeof ResponsiveContainer>['children'];\n initialDimension?: Size;\n}\n\nfunction ChartContainerRoot(properties: ContainerRootProperties) {\n const {\n config,\n className,\n children,\n initialDimension = INITIAL_DIMENSION,\n style,\n ...props\n } = properties;\n\n const styles = useComponentStyles();\n\n const cssVars = useMemo(() => {\n const vars: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(config)) {\n if (value.color) {\n vars[`--color-${key}`] = `var(--color-${value.color})`;\n }\n }\n\n return vars;\n }, [config]);\n\n return (\n <div\n data-slot=\"chart\"\n className={cn(styles.root, className)}\n style={{ ...cssVars, ...style } as CSSProperties}\n {...props}\n >\n <ResponsiveContainer initialDimension={initialDimension}>\n {children}\n </ResponsiveContainer>\n </div>\n );\n}\n\ninterface TooltipRootProperties extends Omit<ComponentProps<typeof Tooltip>, 'children'> {\n active?: boolean;\n payload?: PayloadItem[];\n children?: (items: PayloadItem[]) => ReactNode;\n className?: string;\n}\n\nexport function ChartTooltip(properties: TooltipRootProperties) {\n const { children, ...props } = properties;\n\n return (\n <Tooltip content={<ChartTooltipRoot children={children} {...props} />} />\n );\n}\n\nfunction ChartTooltipRoot(properties: TooltipRootProperties) {\n const { active, payload, className, children } = properties;\n\n const styles = useComponentStyles();\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const items = payload.filter(item => item.type !== 'none');\n\n return (\n <div\n data-slot=\"chart-tooltip\"\n className={cn(styles.tooltip, className)}\n >\n {children\n ? children(items)\n : items.map(item => (\n <ChartTooltipItem key={String(item.dataKey ?? item.name)} item={item}>\n <ChartTooltipIndicator />\n <ChartTooltipLabel />\n <ChartTooltipValue />\n </ChartTooltipItem>\n ))}\n </div>\n );\n}\n\ninterface TooltipItemProperties extends ComponentProps<'div'> {\n item: PayloadItem;\n}\n\nexport function ChartTooltipItem(properties: TooltipItemProperties) {\n const { item, className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ChartItemContext.Provider value={item}>\n <div\n data-slot=\"chart-tooltip-item\"\n className={cn(styles.tooltipItem, className)}\n {...props}\n />\n </ChartItemContext.Provider>\n );\n}\n\nexport function ChartTooltipIndicator(properties: ComponentProps<'div'>) {\n const { className, style, ...props } = properties;\n\n const item = useChartItem();\n const styles = useComponentStyles();\n const color = item.payload?.fill ?? item.color;\n\n return (\n <div\n data-slot=\"chart-tooltip-indicator\"\n className={cn(styles.tooltipIndicator, className)}\n style={{ backgroundColor: color, ...style }}\n {...props}\n />\n );\n}\n\nexport function ChartTooltipLabel(properties: ComponentProps<'span'>) {\n const { className, children, ...props } = properties;\n\n const item = useChartItem();\n const { config } = useChart();\n const styles = useComponentStyles();\n const itemConfig = getPayloadConfigFromPayload(config, item);\n\n return (\n <span\n data-slot=\"chart-tooltip-label\"\n className={cn(styles.tooltipLabel, className)}\n {...props}\n >\n {children ?? itemConfig?.label ?? item.name}\n </span>\n );\n}\n\nexport function ChartTooltipValue(properties: ComponentProps<'span'>) {\n const { className, children, ...props } = properties;\n\n const item = useChartItem();\n const styles = useComponentStyles();\n\n return (\n <span\n data-slot=\"chart-tooltip-value\"\n className={cn(styles.tooltipValue, className)}\n {...props}\n >\n {children ?? (typeof item.value === 'number' ? item.value.toLocaleString() : String(item.value))}\n </span>\n );\n}\n\ninterface LegendRootProperties extends Omit<ComponentProps<typeof Legend>, 'children'> {\n payload?: PayloadItem[];\n children?: (items: PayloadItem[]) => ReactNode;\n}\n\nexport function ChartLegend(properties: LegendRootProperties) {\n const { children, className, ...props } = properties;\n\n return (\n <Legend {...props} content={<ChartLegendRoot children={children} className={className} />} />\n );\n}\n\nfunction ChartLegendRoot(properties: LegendRootProperties) {\n const { payload, className, children } = properties;\n\n const styles = useComponentStyles();\n\n if (!payload?.length) {\n return null;\n }\n\n const items = payload.filter(item => item.type !== 'none');\n\n return (\n <div\n data-slot=\"chart-legend\"\n className={cn(styles.legend, className)}\n >\n {children\n ? children(items)\n : items.map(item => (\n <ChartLegendItem key={String(item.dataKey ?? item.name)} item={item}>\n <ChartLegendIndicator />\n <ChartLegendLabel />\n </ChartLegendItem>\n ))}\n </div>\n );\n}\n\ninterface LegendItemProperties extends ComponentProps<'div'> {\n item: PayloadItem;\n}\n\nexport function ChartLegendItem(properties: LegendItemProperties) {\n const { item, className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ChartItemContext.Provider value={item}>\n <div\n data-slot=\"chart-legend-item\"\n className={cn(styles.legendItem, className)}\n {...props}\n />\n </ChartItemContext.Provider>\n );\n}\n\nexport function ChartLegendIndicator(properties: ComponentProps<'div'>) {\n const { className, style, ...props } = properties;\n\n const item = useChartItem();\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"chart-legend-indicator\"\n className={cn(styles.legendIndicator, className)}\n style={{ backgroundColor: item.color, ...style }}\n {...props}\n />\n );\n}\n\nexport function ChartLegendLabel(properties: ComponentProps<'span'>) {\n const { className, children, ...props } = properties;\n\n const item = useChartItem();\n const { config } = useChart();\n const styles = useComponentStyles();\n const itemConfig = getPayloadConfigFromPayload(config, item);\n\n return (\n <span\n data-slot=\"chart-legend-label\"\n className={cn(styles.legendLabel, className)}\n {...props}\n >\n {children ?? itemConfig?.label ?? item.name ?? String((item as unknown as Record<string, unknown>).value ?? '')}\n </span>\n );\n}\n\nfunction getPayloadConfigFromPayload(config: ChartConfig, item: PayloadItem) {\n const key = `${item.dataKey ?? item.name ?? (item as unknown as Record<string, unknown>).value ?? 'value'}`;\n\n if (key in config) {\n return config[key];\n }\n\n const nestedPayload = item.payload;\n\n if (nestedPayload && typeof nestedPayload === 'object' && key in nestedPayload) {\n const nestedKey = nestedPayload[key as keyof typeof nestedPayload];\n\n if (typeof nestedKey === 'string' && nestedKey in config) {\n return config[nestedKey];\n }\n }\n\n return undefined;\n}\n\nexport { PieChart, Pie } from 'recharts';\n","import { cn } from '@digo-labs/common';\nimport { Icon } from '..';\n\nimport { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox';\nimport { MotionAnimatePresence } from 'src/animation/motion-animate-presence';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('checkbox');\n\ntype Properties = RootProperties & ComponentStylesProps<'checkbox'>;\n\nexport function Checkbox(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <CheckboxRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = CheckboxPrimitive.Root.Props;\n\nfunction CheckboxRoot(properties: RootProperties) {\n const { className, indeterminate, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(styles.root, className)}\n indeterminate={indeterminate}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className={styles.indicator}\n >\n <MotionAnimatePresence\n activeIndex={indeterminate ? 1 : 0}\n mode=\"popLayout\"\n >\n <Icon icon=\"check\" />\n <Icon icon=\"checkIndeterminate\" />\n </MotionAnimatePresence>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n","import { cn, CodeLanguageMetadata, LANGUAGE_MAP } from '@digo-labs/common';\nimport { Icon, highlightCode } from '..';\n\nimport { ComponentProps, createContext, useContext, useEffect, useState } from 'react';\nimport { useDesignSystem } from '../providers/design-system-provider';\nimport { CopyPasteButton } from 'src/blocks/copy-paste-button';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('codeBlock');\n\ninterface ContextProperties {\n language?: string;\n showLineNumbers?: boolean;\n highlightLines?: number[];\n code: string;\n};\n\nconst Context = createContext<ContextProperties>({ code: '' });\n\ninterface Properties extends RootProperties, ComponentStylesProps<'codeBlock'> {\n code: string;\n language?: string;\n showLineNumbers?: boolean;\n highlightLines?: number[];\n}\n\nexport function CodeBlock(properties: Properties) {\n const {\n classNames,\n code,\n language = 'text',\n showLineNumbers = false,\n highlightLines = [],\n ...props\n } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <Context.Provider value={{ language, showLineNumbers, highlightLines, code }}>\n <CodeBlockRoot {...props} />\n </Context.Provider>\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'div'>;\n\nfunction CodeBlockRoot(properties: RootProperties) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n const context = useContext(Context);\n\n return (\n <div\n data-slot=\"code-block\"\n className={cn(styles.root, className)}\n {...props}\n >\n {children}\n <CodeBlockCode language={context.language} code={context.code} highlightLines={context.highlightLines} showLineNumbers={context.showLineNumbers} />\n </div>\n );\n}\n\nexport function CodeBlockHeader(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"code-block-header\"\n className={cn(styles.header, className)}\n {...props}\n />\n );\n}\n\nexport function CodeBlockTitle(properties: ComponentProps<'div'>) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n const { language = 'text' } = useContext(Context);\n\n const languageMetadata: CodeLanguageMetadata = LANGUAGE_MAP[language.toLowerCase()] || LANGUAGE_MAP.text;\n\n return (\n <div\n data-slot=\"code-block-title\"\n className={cn(styles.title, className)}\n {...props}\n >\n {children || (\n <>\n <Icon icon={languageMetadata.icon} />\n {languageMetadata.name}\n </>\n )}\n </div>\n );\n}\n\nexport function CodeBlockActions(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"code-block-actions\"\n className={cn(styles.actions, className)}\n {...props}\n />\n );\n}\n\nexport function CodeBlockCopyButton(properties: Omit<ComponentProps<typeof CopyPasteButton>, 'text'>) {\n const { code } = useContext(Context);\n\n return (\n <CopyPasteButton text={code} {...properties} />\n );\n}\n\ntype CodeProperties = ComponentProps<'div'> & ContextProperties;\n\nfunction CodeBlockCode(properties: CodeProperties) {\n const { code, highlightLines, showLineNumbers, language, className } = properties;\n\n const styles = useComponentStyles();\n const { mode } = useDesignSystem();\n\n const [highlightedCode, setHighlightedCode] = useState<string>('');\n const [_isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n let cancelled = false;\n\n highlight(cancelled);\n\n return () => {\n cancelled = true;\n };\n }, [code, language, highlightLines, showLineNumbers, mode]);\n\n async function highlight(cancelled: boolean) {\n try {\n setIsLoading(true);\n const html = await highlightCode(code, language, { highlightLines, showLineNumbers, mode });\n\n if (!cancelled) {\n setHighlightedCode(html);\n }\n } catch (error) {\n console.error('Failed to highlight code:', error);\n\n if (!cancelled) {\n setHighlightedCode(`<pre><code>${code}</code></pre>`);\n }\n } finally {\n if (!cancelled) {\n setIsLoading(false);\n }\n }\n }\n\n return (\n <div\n data-slot=\"code-block-content\"\n className={cn(styles.code, className)}\n dangerouslySetInnerHTML={{ __html: highlightedCode }}\n tabIndex={-1}\n />\n );\n}\n","import { cn, CuratedIcons } from '@digo-labs/common';\nimport { Icon, motionTransitionPresets } from '..';\n\nimport { Collapsible as CollapsiblePrimitive } from '@base-ui/react/collapsible';\nimport { HTMLMotionProps, Inertia, motion, Spring, Tween } from 'motion/react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('collapsible');\n\ntype Properties = RootProperties & ComponentStylesProps<'collapsible'>;\n\nexport function Collapsible(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <CollapsibleRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = CollapsiblePrimitive.Root.Props;\n\nfunction CollapsibleRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <CollapsiblePrimitive.Root\n data-slot=\"collapsible\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function CollapsibleTrigger(properties: CollapsiblePrimitive.Trigger.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <CollapsiblePrimitive.Trigger\n data-slot=\"collapsible-trigger\"\n className={cn(styles.trigger, className)}\n {...props}\n />\n );\n}\n\ninterface PanelProperties extends CollapsiblePrimitive.Panel.Props {\n openAnimation?: Spring | Tween | Inertia;\n closeAnimation?: Spring | Tween | Inertia;\n}\n\nexport function CollapsiblePanel(properties: PanelProperties) {\n const {\n className,\n children,\n openAnimation = motionTransitionPresets.spring3,\n closeAnimation = motionTransitionPresets.spring1,\n ...props\n } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <CollapsiblePrimitive.Panel\n data-slot=\"collapsible-panel\"\n className={styles.panel}\n keepMounted={true}\n render={(renderProps, state) => (\n <motion.div\n initial={false}\n animate={{\n height: state.open ? 'auto' : 0,\n opacity: state.open ? 1 : 0,\n }}\n transition={state.open ? openAnimation : closeAnimation}\n {...renderProps as HTMLMotionProps<'div'>}\n hidden={undefined}\n />\n )}\n {...props}\n >\n <div className={cn(styles.panelContent, className as string)}>\n {children}\n </div>\n </CollapsiblePrimitive.Panel>\n );\n}\n\ninterface IconProperties {\n open?: boolean;\n icon?: CuratedIcons;\n className?: string;\n}\n\nexport function CollapsibleIcon(properties: IconProperties) {\n const { open = false, icon = 'chevronDown', className } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <motion.span\n data-slot=\"collapsible-icon\"\n className={cn(styles.icon, className)}\n animate={{ rotate: open ? 180 : 0 }}\n transition={open ? motionTransitionPresets.spring3 : motionTransitionPresets.spring1}\n >\n <Icon icon={icon} />\n </motion.span>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ColorArea as ColorAreaPrimitive, ColorThumb } from 'react-aria-components';\n\nimport type { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('colorArea');\n\ntype Properties = RootProperties & ComponentStylesProps<'colorArea'>;\n\nexport function ColorArea(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ColorAreaRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<typeof ColorAreaPrimitive>;\n\nfunction ColorAreaRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ColorAreaPrimitive\n data-slot=\"color-area\"\n className={cn(styles.root, className)}\n {...props}\n >\n <ColorThumb\n data-slot=\"color-area-thumb\"\n className={styles.thumb}\n />\n </ColorAreaPrimitive>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { ColorChannel } from '..';\n\nimport { ColorField as ColorFieldPrimitive, Input } from 'react-aria-components';\n\nimport type { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('colorField');\n\ntype Properties = RootProperties & ComponentStylesProps<'colorField'>;\n\nexport function ColorField(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ColorFieldRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<typeof ColorFieldPrimitive>;\n\nconst CHANNEL_PLACEHOLDERS: Record<ColorChannel, string> = {\n hue: '0°',\n saturation: '0%',\n brightness: '0%',\n lightness: '0%',\n red: '0',\n green: '0',\n blue: '0',\n alpha: '0%',\n};\n\nfunction ColorFieldRoot(properties: RootProperties) {\n const { className, channel, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ColorFieldPrimitive\n data-slot=\"color-field\"\n className={cn(styles.root, className)}\n channel={channel}\n {...props}\n >\n <Input\n data-slot=\"color-field-input\"\n placeholder={channel ? CHANNEL_PLACEHOLDERS[channel] : '#000000'}\n className={styles.input}\n />\n </ColorFieldPrimitive>\n );\n}\n","import { Color, ColorSpace, getColorChannels, ColorPicker, ColorField, Select, SelectTrigger, SelectValue, SelectPopup, SelectItem } from '..';\n\nimport { useState } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('colorInput');\n\ntype ColorMode = 'hex' | ColorSpace;\n\ntype Properties = RootProperties & ComponentStylesProps<'colorInput'>;\n\nconst colorModeItems = [\n { label: 'HEX', value: 'hex' },\n { label: 'HSB', value: 'hsb' },\n { label: 'HSL', value: 'hsl' },\n { label: 'RGB', value: 'rgb' },\n];\n\nexport function ColorInput(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ColorInputRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties {\n value?: Color | null;\n defaultValue?: Color | null;\n onChange?: (color: Color) => void;\n showAlpha?: boolean;\n}\n\nfunction ColorInputRoot(properties: RootProperties) {\n const { value: controlledValue, defaultValue, onChange, showAlpha = true } = properties;\n\n const styles = useComponentStyles();\n\n const isControlled = controlledValue !== undefined;\n\n const [internalColor, setInternalColor] = useState<Color | null>(defaultValue ?? null);\n\n const color = isControlled ? controlledValue : internalColor;\n\n const [colorMode, setColorMode] = useState<ColorMode>('hex');\n\n const handleChange = (newColor: Color | null) => {\n if (!newColor) return;\n if (!isControlled) setInternalColor(newColor);\n onChange?.(newColor);\n };\n\n return (\n <div data-slot=\"color-input\" className={styles.root}>\n <ColorPicker\n value={color ?? undefined}\n onChange={handleChange}\n showAlpha={showAlpha}\n classNames={{ trigger: styles.trigger }}\n className={styles.swatch}\n />\n\n <Select value={colorMode} onValueChange={value => setColorMode(value as ColorMode)} items={colorModeItems}>\n <SelectTrigger className={styles.select}>\n <SelectValue />\n </SelectTrigger>\n <SelectPopup>\n {colorModeItems.map(({ label, value }) => (\n <SelectItem key={value} value={value}>\n {label}\n </SelectItem>\n ))}\n </SelectPopup>\n </Select>\n\n <div data-slot=\"color-input-fields\" className={styles.fields}>\n {colorMode === 'hex'\n ? <ColorField\n value={color}\n onChange={handleChange}\n classNames={{ input: styles.hexInput }}\n />\n : getColorChannels(colorMode).map((channel, index) => (\n <ColorField\n key={channel}\n value={color}\n onChange={handleChange}\n channel={channel}\n colorSpace={colorMode}\n data-slot={index}\n classNames={{ input: styles.channelInput }}\n />\n ))}\n </div>\n </div>\n );\n}\n","import { ColorSpace, ColorSwatch, ColorArea, ColorSlider, ColorField, ColorSwatchPicker, Select, SelectTrigger, SelectValue, SelectPopup, SelectItem, Popover, PopoverTrigger, PopoverPopup, getColorChannels } from '..';\nimport { cn } from '@digo-labs/common';\n\nimport { ColorPicker as ColorPickerPrimitive } from 'react-aria-components';\n\nimport { ReactNode, useState, type ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst colorSpaces = [\n { label: 'HSB', value: 'hsb' },\n { label: 'HSL', value: 'hsl' },\n { label: 'RGB', value: 'rgb' },\n];\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('colorPicker');\n\ntype Properties = RootProperties & ComponentStylesProps<'colorPicker'>;\n\nexport function ColorPicker(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ColorPickerRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends Omit<ComponentProps<typeof ColorPickerPrimitive>, 'children'> {\n children?: ReactNode;\n showAlpha?: boolean;\n showChannels?: boolean;\n swatches?: string[];\n side?: ComponentProps<typeof PopoverPopup>['side'];\n sideOffset?: ComponentProps<typeof PopoverPopup>['sideOffset'];\n align?: ComponentProps<typeof PopoverPopup>['align'];\n alignOffset?: ComponentProps<typeof PopoverPopup>['alignOffset'];\n className?: string;\n}\n\nfunction ColorPickerRoot(properties: RootProperties) {\n const {\n showAlpha = true,\n showChannels = false,\n swatches,\n children,\n side = 'top',\n sideOffset = 8,\n align = 'center',\n alignOffset = 0,\n className,\n ...props\n } = properties;\n\n const styles = useComponentStyles();\n\n const [colorSpace, setColorSpace] = useState<ColorSpace>('hsb');\n\n return (\n <ColorPickerPrimitive\n data-slot=\"color-picker\"\n {...props}\n >\n {children ??\n <Popover>\n <PopoverTrigger className={styles.trigger}>\n <ColorSwatch className={cn(styles.swatch, className)} />\n </PopoverTrigger>\n\n <PopoverPopup\n side={side}\n align={align}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n classNames={{ popup: styles.popup, content: styles.content }}\n >\n <ColorArea colorSpace=\"hsb\" xChannel=\"saturation\" yChannel=\"brightness\" />\n <ColorSlider channel=\"hue\" colorSpace=\"hsb\" />\n {showAlpha && <ColorSlider channel=\"alpha\" />}\n <ColorField classNames={{ input: styles.inputs }} />\n {showChannels && (\n <div className={styles.channelsContainer}>\n <Select value={colorSpace} onValueChange={value => setColorSpace(value as ColorSpace)} items={colorSpaces}>\n <SelectTrigger className={styles.select}>\n <SelectValue />\n </SelectTrigger>\n <SelectPopup>\n {colorSpaces.map(({ label, value }) => (\n <SelectItem key={value} value={value}>\n {label}\n </SelectItem>\n ))}\n </SelectPopup>\n </Select>\n <div data-slot=\"color-picker-channels\" className={styles.channels}>\n {getColorChannels(colorSpace).map(channel => (\n <ColorField key={channel} channel={channel} colorSpace={colorSpace} classNames={{ input: styles.inputs }} />\n ))}\n </div>\n </div>\n )}\n {swatches && swatches.length > 0 && <ColorSwatchPicker colors={swatches} />}\n </PopoverPopup>\n </Popover>}\n\n </ColorPickerPrimitive>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { TransparentBackground } from '..';\n\nimport { ColorSlider as ColorSliderPrimitive, ColorThumb, SliderTrack } from 'react-aria-components';\n\nimport type { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('colorSlider');\n\ntype Properties = RootProperties & ComponentStylesProps<'colorSlider'>;\n\nexport function ColorSlider(properties: Properties) {\n const { classNames, orientation = 'horizontal', ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} orientation={orientation}>\n <ColorSliderRoot orientation={orientation} {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof ColorSliderPrimitive> {\n cols?: ComponentProps<typeof TransparentBackground>['cols'];\n rows?: ComponentProps<typeof TransparentBackground>['rows'];\n}\n\nfunction ColorSliderRoot(properties: RootProperties) {\n const { className, channel, cols = 80, rows = 3, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ColorSliderPrimitive\n data-slot=\"color-slider\"\n className={cn(styles.root, className)}\n channel={channel}\n {...props}\n >\n <SliderTrack\n data-slot=\"color-slider-track\"\n className={styles.track}\n >\n <TransparentBackground\n className={styles.transparentBackground}\n cols={cols}\n rows={rows}\n />\n <ColorThumb\n data-slot=\"color-slider-thumb\"\n className={styles.thumb}\n />\n </SliderTrack>\n </ColorSliderPrimitive>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { TransparentBackground } from '..';\n\nimport { ColorSwatch as ColorSwatchPrimitive } from 'react-aria-components';\n\nimport type { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nexport { parseColor, type ColorSpace, getColorChannels, type Color } from 'react-aria-components';\n\nexport type { ColorChannel } from 'react-stately';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('colorSwatch');\n\ntype Properties = RootProperties & ComponentStylesProps<'colorSwatch'>;\n\nexport function ColorSwatch(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ColorSwatchRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<typeof ColorSwatchPrimitive>;\n\nfunction ColorSwatchRoot(properties: RootProperties) {\n const { className, color, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div data-slot=\"color-swatch\" className={cn(styles.root, className)}>\n <TransparentBackground className={styles.transparentBackground} />\n <ColorSwatchPrimitive\n className={styles.color}\n color={color}\n {...props}\n />\n </div>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { ColorSwatch } from '..';\n\nimport { Icon } from './icon';\n\nimport {\n ColorSwatchPicker as ColorSwatchPickerPrimitive,\n ColorSwatchPickerItem as ColorSwatchPickerItemPrimitive,\n} from 'react-aria-components';\n\nimport { ComponentProps, CSSProperties } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('colorSwatchPicker');\n\ntype Properties = RootProperties & ComponentStylesProps<'colorSwatchPicker'>;\n\nexport function ColorSwatchPicker(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ColorSwatchPickerRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<typeof ColorSwatchPickerPrimitive> {\n colors?: string[];\n}\n\nfunction ColorSwatchPickerRoot(properties: RootProperties) {\n const { className, colors, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ColorSwatchPickerPrimitive\n data-slot=\"color-swatch-picker\"\n className={cn(styles.root, className)}\n {...props}\n >\n {colors\n ? colors.map(color => (\n <ColorSwatchPickerItemPrimitive\n key={color}\n color={color}\n data-slot=\"color-swatch-picker-item\"\n className={styles.item}\n >\n <div\n data-slot=\"color-swatch-picker-swatch\"\n style={{\n '--color': color,\n } as CSSProperties}\n className={styles.swatchContainer}\n >\n <ColorSwatch color={color} className={styles.swatch} />\n <div className={styles.indicator}>\n <Icon icon=\"check\" />\n </div>\n </div>\n </ColorSwatchPickerItemPrimitive>\n ))\n : children}\n </ColorSwatchPickerPrimitive>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Icon, InputGroup, InputGroupAddon, InputGroupInput, ScrollArea, Separator } from '..';\n\nimport { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox';\nimport { createContext, ReactNode, Ref, RefObject, useContext, useRef } from 'react';\nimport { AnimatePresence, motion } from 'motion/react';\nimport { motionPresencePresets } from 'src/utils/motion-presets';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('combobox');\n\ninterface ContextProperties {\n anchorRef: RefObject<Element | null> | null;\n};\n\nconst Context = createContext<ContextProperties>({\n anchorRef: null,\n});\n\ntype Properties<Value, Multiple extends boolean | undefined = false> = RootProperties<Value, Multiple> & ComponentStylesProps<'combobox'>;\n\nexport function Combobox<Value, Multiple extends boolean | undefined = false>(properties: Properties<Value, Multiple>) {\n const {\n classNames,\n disabled = false,\n ...props\n } = properties;\n\n const anchorRef = useRef<Element | null>(null);\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <Context.Provider value={{ anchorRef }}>\n <ComboboxRoot disabled={disabled} {...props} />\n </Context.Provider>\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties<Value, Multiple extends boolean | undefined = false> extends ComboboxPrimitive.Root.Props<Value, Multiple> {\n disabled?: boolean;\n};\n\nfunction ComboboxRoot<Value, Multiple extends boolean | undefined = false>(properties: RootProperties<Value, Multiple>) {\n const { disabled, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div data-disabled={disabled || undefined} className={styles.root}>\n <ComboboxPrimitive.Root\n disabled={disabled}\n {...props}\n />\n </div>\n );\n}\n\ninterface InputProperties extends ComboboxPrimitive.Input.Props {\n showTrigger?: boolean;\n showClear?: boolean;\n startAddon?: ReactNode;\n triggerProps?: ComboboxPrimitive.Trigger.Props;\n clearProps?: ComboboxPrimitive.Clear.Props;\n}\n\nexport function ComboboxInput(properties: InputProperties) {\n const {\n className,\n showTrigger = true,\n showClear = false,\n startAddon,\n triggerProps,\n clearProps,\n ...props\n } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <InputGroup\n className={cn(styles.input, className as string)}\n ref={useContext(Context).anchorRef as Ref<HTMLDivElement> | null}\n >\n {startAddon &&\n <InputGroupAddon align=\"inline-start\">\n {startAddon}\n </InputGroupAddon>}\n\n <ComboboxPrimitive.Input\n data-slot=\"control\"\n render={<InputGroupInput />}\n {...props}\n />\n\n {(showTrigger || showClear) &&\n <InputGroupAddon align=\"inline-end\">\n\n {showTrigger &&\n <ComboboxTrigger className={cn(showClear && 'has-[~:not([hidden])]:hidden', styles.trigger)} {...triggerProps}>\n <ComboboxPrimitive.Icon data-slot=\"combobox-icon\" className=\"flex-row-center\">\n <Icon icon=\"chevronDown\" />\n </ComboboxPrimitive.Icon>\n </ComboboxTrigger>}\n\n {showClear &&\n <ComboboxClear {...clearProps} className={styles.clear}>\n <Icon icon=\"close\" />\n </ComboboxClear>}\n\n </InputGroupAddon>}\n\n </InputGroup>\n );\n}\n\nexport function ComboboxTrigger(properties: ComboboxPrimitive.Trigger.Props) {\n const { className, children, ...props } = properties;\n\n return (\n <ComboboxPrimitive.Trigger\n data-slot=\"combobox-trigger\"\n className={className}\n {...props}\n >\n {children}\n </ComboboxPrimitive.Trigger>\n );\n}\n\ninterface PopupProperties extends ComboboxPrimitive.Popup.Props {\n align?: ComboboxPrimitive.Positioner.Props['align'];\n sideOffset?: ComboboxPrimitive.Positioner.Props['sideOffset'];\n alignOffset?: ComboboxPrimitive.Positioner.Props['alignOffset'];\n side?: ComboboxPrimitive.Positioner.Props['side'];\n anchor?: ComboboxPrimitive.Positioner.Props['anchor'];\n}\n\nexport function ComboboxPopup(properties: PopupProperties) {\n const {\n className,\n children,\n side = 'bottom',\n sideOffset = 4,\n alignOffset,\n align = 'start',\n anchor: anchorProp,\n ...props\n } = properties;\n\n const { anchorRef } = useContext(Context);\n const anchor = anchorProp ?? anchorRef;\n const styles = useComponentStyles();\n\n return (\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n data-slot=\"combobox-positioner\"\n className={styles.positioner}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n side={side}\n sideOffset={sideOffset}\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-popup\"\n className={cn(styles.popup, className)}\n {...props}\n >\n <div className={styles.popupInner}>\n {children}\n </div>\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n );\n}\n\nexport function ComboboxItem(properties: ComboboxPrimitive.Item.Props) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(styles.item, className)}\n {...props}\n >\n {children}\n\n <ComboboxPrimitive.ItemIndicator className={styles.itemIndicator}>\n <Icon icon=\"check\" />\n </ComboboxPrimitive.ItemIndicator>\n\n </ComboboxPrimitive.Item>\n );\n}\n\nexport function ComboboxSeparator(properties: ComboboxPrimitive.Separator.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n render={<Separator />}\n className={cn(styles.separator, className)}\n {...props}\n />\n );\n}\n\nexport function ComboboxGroup(properties: ComboboxPrimitive.Group.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={cn(styles.group, className)}\n {...props}\n />\n );\n}\n\nexport function ComboboxGroupLabel(properties: ComboboxPrimitive.GroupLabel.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-group-label\"\n className={cn(styles.groupLabel, className)}\n {...props}\n />\n );\n}\n\nexport function ComboboxEmpty(properties: ComboboxPrimitive.Empty.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(styles.empty, className)}\n {...props}\n />\n );\n}\n\nexport function ComboboxRow(properties: ComboboxPrimitive.Row.Props) {\n const { className, ...props } = properties;\n\n return (\n <ComboboxPrimitive.Row\n data-slot=\"combobox-row\"\n className={className}\n {...props}\n />\n );\n}\n\nexport function ComboboxValue(properties: ComboboxPrimitive.Value.Props) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...properties} />;\n}\n\nexport function ComboboxList(properties: ComboboxPrimitive.List.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ScrollArea scrollbarGutter scrollFade className={styles.scrollArea}>\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={cn(styles.list, className)}\n {...props}\n />\n </ScrollArea>\n );\n}\n\nexport function ComboboxClear(properties: ComboboxPrimitive.Clear.Props) {\n const { className, ...props } = properties;\n\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n className={className}\n {...props}\n />\n );\n}\n\nexport function ComboboxStatus(properties: ComboboxPrimitive.Status.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ComboboxPrimitive.Status\n data-slot=\"combobox-status\"\n className={cn(styles.status, className)}\n {...props}\n />\n );\n}\n\nexport function ComboboxCollection(properties: ComboboxPrimitive.Collection.Props) {\n return (\n <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...properties} />\n );\n}\n\ninterface MultipleInputProperties extends ComboboxPrimitive.Input.Props {\n startAddon?: ReactNode;\n getLabel?: (item: any) => string;\n getKey?: (item: any) => string;\n}\n\nexport function ComboboxMultipleInput(properties: MultipleInputProperties) {\n const {\n className,\n placeholder,\n startAddon,\n getLabel = (item: any) => item.label,\n getKey = (item: any) => item.value,\n ...props\n } = properties;\n\n const styles = useComponentStyles();\n\n const { anchorRef } = useContext(Context);\n\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n render={<InputGroup />}\n className={cn(styles.chips, className)}\n ref={anchorRef as Ref<HTMLDivElement> | null}\n >\n\n {startAddon &&\n <InputGroupAddon align=\"inline-start\" className={styles.chipsAddon}>\n {startAddon}\n </InputGroupAddon>}\n\n <ComboboxValue>\n {(value: any[]) => (\n <>\n <AnimatePresence>\n {value?.map(item => (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n key={getKey(item)}\n aria-label={getLabel(item)}\n className={styles.chip}\n render={<motion.div layout {...motionPresencePresets.variant3} />}\n >\n {getLabel(item)}\n\n <ComboboxPrimitive.ChipRemove\n aria-label=\"Remove\"\n data-slot=\"combobox-chip-remove\"\n className={styles.chipRemove}\n >\n <Icon icon=\"close\" />\n </ComboboxPrimitive.ChipRemove>\n </ComboboxPrimitive.Chip>\n ))}\n </AnimatePresence>\n\n <ComboboxPrimitive.Input\n data-slot=\"control\"\n className={styles.chipsInput}\n placeholder={value.length > 0 ? undefined : placeholder}\n {...props}\n />\n </>\n )}\n </ComboboxValue>\n\n </ComboboxPrimitive.Chips>\n );\n}\n\nexport const useComboboxFilter = ComboboxPrimitive.useFilter;\n","import { cn } from '@digo-labs/common';\n\nimport {\n Autocomplete,\n AutocompleteCollection,\n AutocompleteEmpty,\n AutocompleteGroup,\n AutocompleteGroupLabel,\n AutocompleteInput,\n AutocompleteItem,\n AutocompleteList,\n AutocompleteSeparator,\n Icon,\n Kbd,\n} from '..';\n\nimport { Dialog as CommandDialogPrimitive } from '@base-ui/react/dialog';\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('command');\n\nconst CommandDialogRoot = CommandDialogPrimitive.Root;\n\nconst CommandDialogPortal = CommandDialogPrimitive.Portal;\n\nexport const CommandCreateHandle = CommandDialogPrimitive.createHandle;\n\ntype CommandDialogProperties = ComponentProps<typeof CommandDialogRoot> & ComponentStylesProps<'command'>;\n\nexport function CommandDialog(properties: CommandDialogProperties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <CommandDialogRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\nexport function CommandDialogTrigger(properties: CommandDialogPrimitive.Trigger.Props) {\n return (\n <CommandDialogPrimitive.Trigger\n data-slot=\"command-dialog-trigger\"\n {...properties}\n />\n );\n}\n\nexport function CommandDialogPopup(properties: CommandDialogPrimitive.Popup.Props) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <CommandDialogPortal>\n <CommandDialogPrimitive.Backdrop\n data-slot=\"command-dialog-backdrop\"\n className={styles.backdrop}\n />\n <CommandDialogPrimitive.Viewport\n data-slot=\"command-dialog-viewport\"\n className={styles.viewport}\n >\n <CommandDialogPrimitive.Popup\n data-slot=\"command-dialog-popup\"\n className={cn(styles.popup, className)}\n {...props}\n >\n {children}\n </CommandDialogPrimitive.Popup>\n </CommandDialogPrimitive.Viewport>\n </CommandDialogPortal>\n );\n}\n\ntype CommandProperties = ComponentProps<typeof Autocomplete> & ComponentStylesProps<'command'>;\n\nexport function Command(properties: CommandProperties) {\n const { classNames, autoHighlight = 'always', keepHighlight = true, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <Autocomplete\n autoHighlight={autoHighlight}\n inline\n keepHighlight={keepHighlight}\n open\n {...props}\n />\n </ComponentStylesProvider>\n );\n}\n\nexport function CommandInput(properties: ComponentProps<typeof AutocompleteInput>) {\n const { className, placeholder = undefined, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"command-input\"\n className={cn(styles.inputContainer, className)}\n >\n <Icon icon=\"search\" />\n <AutocompleteInput\n autoFocus\n className={styles.input}\n placeholder={placeholder}\n {...props}\n />\n </div>\n );\n}\n\nexport function CommandList(properties: ComponentProps<typeof AutocompleteList>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompleteList\n data-slot=\"command-list\"\n className={cn(styles.list, className)}\n {...props}\n />\n );\n}\n\nexport function CommandEmpty(properties: ComponentProps<typeof AutocompleteEmpty>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompleteEmpty\n data-slot=\"command-empty\"\n className={cn(styles.empty, className)}\n {...props}\n />\n );\n}\n\nexport function CommandPanel(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"command-panel\"\n className={cn(styles.panel, className)}\n {...props}\n />\n );\n}\n\nexport function CommandGroup(properties: ComponentProps<typeof AutocompleteGroup>) {\n const { className, ...props } = properties;\n\n return (\n <AutocompleteGroup\n data-slot=\"command-group\"\n className={className}\n {...props}\n />\n );\n}\n\nexport function CommandGroupLabel(properties: ComponentProps<typeof AutocompleteGroupLabel>) {\n const { className, ...props } = properties;\n\n return (\n <AutocompleteGroupLabel\n data-slot=\"command-group-label\"\n className={className}\n {...props}\n />\n );\n}\n\nexport function CommandCollection(properties: ComponentProps<typeof AutocompleteCollection>) {\n return <AutocompleteCollection data-slot=\"command-collection\" {...properties} />;\n}\n\nexport function CommandItem(properties: ComponentProps<typeof AutocompleteItem>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompleteItem\n data-slot=\"command-item\"\n className={cn(styles.item, className)}\n {...props}\n />\n );\n}\n\nexport function CommandSeparator(properties: ComponentProps<typeof AutocompleteSeparator>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <AutocompleteSeparator\n data-slot=\"command-separator\"\n className={cn(styles.separator, className)}\n {...props}\n />\n );\n}\n\nexport function CommandShortcut(properties: ComponentProps<typeof Kbd>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Kbd\n data-slot=\"command-shortcut\"\n className={cn(styles.shortcut, className)}\n {...props}\n />\n );\n}\n\nexport function CommandFooter(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"command-footer\"\n className={cn(styles.footer, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { type CSSProperties, useEffect, useMemo } from 'react';\n\nimport { type MotionValue, type SpringOptions, motion, useSpring, useTransform } from 'framer-motion';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\nimport { motionTransitionPresets } from '../utils/motion-presets';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('counter');\n\ntype Properties = RootProperties & ComponentStylesProps<'counter'>;\n\nexport function Counter(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <CounterRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties {\n value: number;\n places?: number;\n className?: string;\n style?: CSSProperties;\n containerHeight?: number;\n spring?: SpringOptions;\n}\n\nfunction CounterRoot(properties: RootProperties) {\n const { value, places = 3, className, style, containerHeight = 100, spring = motionTransitionPresets.spring1 } = properties;\n\n const styles = useComponentStyles();\n const placesArray = useMemo(() => Array.from({ length: places }, (_, i) => 10 ** (places - 1 - i)), [places]);\n\n return (\n <div data-slot=\"counter\" className={cn(styles.root, className)} style={style}>\n <div data-slot=\"counter-digits\" className={styles.digits}>\n {placesArray.map(place => (\n <CounterDigit key={place} place={place} value={value} height={containerHeight} spring={spring} />\n ))}\n </div>\n <div data-slot=\"counter-overlay\" className={styles.overlay}>\n <div data-slot=\"counter-top-gradient\" className={styles.topGradient} />\n <div data-slot=\"counter-bottom-gradient\" className={styles.bottomGradient} />\n </div>\n </div>\n );\n}\n\ninterface DigitProperties {\n place: number;\n value: number;\n height: number;\n spring: SpringOptions;\n}\n\nfunction CounterDigit(properties: DigitProperties) {\n const { place, value, height, spring } = properties;\n\n const styles = useComponentStyles();\n\n const valueRoundedToPlace = Math.floor(value / place);\n const animatedValue = useSpring(valueRoundedToPlace, spring);\n\n useEffect(() => {\n animatedValue.set(valueRoundedToPlace);\n }, [animatedValue, valueRoundedToPlace]);\n\n return (\n <div data-slot=\"counter-digit\" className={styles.digit} style={{ height }}>\n {Array.from({ length: 10 }, (_, i) => (\n <CounterNumber key={i} mv={animatedValue} number={i} height={height} />\n ))}\n </div>\n );\n}\n\ninterface NumberProperties {\n mv: MotionValue<number>;\n number: number;\n height: number;\n}\n\nfunction CounterNumber(properties: NumberProperties) {\n const { mv, number, height } = properties;\n\n const styles = useComponentStyles();\n\n const y = useTransform(mv, (latest) => {\n const placeValue = latest % 10;\n const offset = (10 + number - placeValue) % 10;\n let memo = offset * height;\n if (offset > 5) {\n memo -= 10 * height;\n }\n return memo;\n });\n\n return (\n <motion.span data-slot=\"counter-number\" className={styles.number} style={{ y }}>\n {number}\n </motion.span>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('drawer');\n\ntype Side = 'top' | 'right' | 'bottom' | 'left';\n\nconst sideToSwipe: Record<Side, DrawerPrimitive.Root.Props['swipeDirection']> = {\n top: 'up',\n bottom: 'down',\n left: 'left',\n right: 'right',\n};\n\ninterface Properties<Payload = unknown> extends DrawerPrimitive.Root.Props<Payload>, ComponentStylesProps<'drawer'> {\n side?: Side;\n}\n\nexport function Drawer<Payload = unknown>(properties: Properties<Payload>) {\n const { classNames, side = 'right', swipeDirection, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} side={side}>\n <DrawerPrimitive.Root swipeDirection={swipeDirection ?? sideToSwipe[side]} {...props} />\n </ComponentStylesProvider>\n );\n}\n\nexport const DrawerCreateHandle = DrawerPrimitive.createHandle;\n\nexport function DrawerTrigger(properties: DrawerPrimitive.Trigger.Props) {\n return (\n <DrawerPrimitive.Trigger\n data-slot=\"drawer-trigger\"\n {...properties}\n />\n );\n}\n\nexport function DrawerHandle(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"drawer-handle\"\n className={cn(styles.handle, className)}\n {...props}\n />\n );\n}\n\nexport function DrawerClose(properties: DrawerPrimitive.Close.Props) {\n return (\n <DrawerPrimitive.Close\n data-slot=\"drawer-close\"\n {...properties}\n />\n );\n}\n\ninterface DrawerPopupProperties extends DrawerPrimitive.Popup.Props {\n backdrop?: boolean;\n container?: DrawerPrimitive.Portal.Props['container'];\n}\n\nexport function DrawerPopup(properties: DrawerPopupProperties) {\n const { children, className, backdrop = true, container, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <DrawerPrimitive.Portal container={container}>\n {backdrop && (\n <DrawerPrimitive.Backdrop\n data-slot=\"drawer-backdrop\"\n className={styles.backdrop}\n />\n )}\n\n <DrawerPrimitive.Viewport\n data-slot=\"drawer-viewport\"\n data-no-backdrop={!backdrop || undefined}\n className={styles.viewport}\n >\n <DrawerPrimitive.Popup\n data-slot=\"drawer-popup\"\n className={cn(styles.popup, className)}\n {...props}\n >\n {children}\n </DrawerPrimitive.Popup>\n </DrawerPrimitive.Viewport>\n </DrawerPrimitive.Portal>\n );\n}\n\nexport function DrawerContent(properties: DrawerPrimitive.Content.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(styles.content, className)}\n {...props}\n />\n );\n}\n\nexport function DrawerHeader(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(styles.header, className)}\n {...props}\n />\n );\n}\n\nexport function DrawerFooter(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(styles.footer, className)}\n {...props}\n />\n );\n}\n\nexport function DrawerTitle(properties: DrawerPrimitive.Title.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(styles.title, className)}\n {...props}\n />\n );\n}\n\nexport function DrawerDescription(properties: DrawerPrimitive.Description.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(styles.description, className)}\n {...props}\n />\n );\n}\n","import { cn, CuratedIcons } from '@digo-labs/common';\nimport { Icon } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('empty');\n\ntype Properties = RootProperties & ComponentStylesProps<'empty'>;\n\nexport function Empty(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <EmptyRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'div'>;\n\nfunction EmptyRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"empty\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function EmptyHeader(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(styles.header, className)}\n {...props}\n />\n );\n}\n\nexport function EmptyMedia(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"empty-media\"\n className={cn(styles.media, className)}\n {...props}\n />\n );\n}\n\ninterface EmptyIconProperties extends ComponentProps<'div'> {\n icon?: CuratedIcons;\n offset?: number;\n rotate?: number;\n}\n\nexport function EmptyIcon(properties: EmptyIconProperties) {\n const { className, icon = 'favorite', offset = 10, rotate = 15, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"empty-icon\"\n className={styles.iconWrapper}\n {...props}\n >\n <div\n aria-hidden\n className={cn(styles.iconShadow, className)}\n style={{ rotate: -rotate + 'deg', translate: -offset + 'px' }}\n >\n <Icon icon={icon} />\n </div>\n\n <div\n aria-hidden\n className={cn(styles.iconShadow, className)}\n style={{ rotate: rotate + 'deg', translate: offset * 1.5 + 'px' }}\n >\n <Icon icon={icon} />\n </div>\n\n <div className={cn(styles.icon, className)}>\n <Icon icon={icon} />\n </div>\n </div>\n );\n}\n\nexport function EmptyTitle(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(styles.title, className)}\n {...props}\n />\n );\n}\n\nexport function EmptyDescription(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(styles.description, className)}\n {...props}\n />\n );\n}\n\nexport function EmptyContent(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(styles.content, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Fieldset as FieldsetPrimitive } from '@base-ui/react/fieldset';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('fieldSet');\n\ntype Properties = RootProperties & ComponentStylesProps<'fieldSet'>;\n\nexport function Fieldset(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <FieldsetRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = FieldsetPrimitive.Root.Props;\n\nfunction FieldsetRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <FieldsetPrimitive.Root\n data-slot=\"fieldset\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function FieldsetLegend(properties: FieldsetPrimitive.Legend.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <FieldsetPrimitive.Legend\n data-slot=\"fieldset-legend\"\n className={cn(styles.legend, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Form as FormPrimitive } from '@base-ui/react/form';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('form');\n\ntype Properties = RootProperties & ComponentStylesProps<'form'>;\n\nexport function Form(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <FormRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = FormPrimitive.Props;\n\nfunction FormRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <FormPrimitive\n data-slot=\"form\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { Separator } from '..';\n\nimport type { Separator as SeparatorPrimitive } from '@base-ui/react/separator';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles, useComponentVariants } = createComponentStyles('group');\n\ntype Properties = RootProperties & ComponentStylesProps<'group'>;\n\nexport function Group(properties: Properties) {\n const { classNames, orientation = 'horizontal', ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} orientation={orientation}>\n <GroupRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'div'>;\n\nfunction GroupRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const { orientation } = useComponentVariants();\n const styles = useComponentStyles();\n\n return (\n <div\n role=\"group\"\n data-slot=\"group\"\n data-orientation={orientation}\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\ninterface SeparatorProperties extends Omit<SeparatorPrimitive.Props, 'orientation'> {\n className?: string;\n}\n\nexport function GroupSeparator(properties: SeparatorProperties) {\n const { className, ...props } = properties;\n\n const { orientation } = useComponentVariants();\n const styles = useComponentStyles();\n\n return (\n <Separator\n data-slot=\"separator\"\n className={cn(styles.separator, className)}\n orientation={orientation === 'horizontal' ? 'vertical' : 'horizontal'}\n {...props}\n />\n );\n}\n\nexport function GroupText(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"group-text\"\n className={cn(styles.text, className)}\n {...props}\n />\n );\n}\n","import { cn, ImagePayload } from '@digo-labs/common';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('image');\n\ntype Properties = RootProperties & ComponentStylesProps<'image'>;\n\nexport function Image(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ImageRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<'div'> {\n src?: ImagePayload | string;\n}\n\nfunction ImageRoot(properties: RootProperties) {\n const { src, className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n const resolvedSrc = typeof src === 'object' ? `data:${src.mediaType};base64,${src.base64}` : src;\n\n return (\n <div\n data-slot=\"image\"\n className={cn(styles.root, className)}\n {...props}\n >\n {resolvedSrc\n ? <img data-slot=\"image-img\" className={styles.image} src={resolvedSrc} />\n : <div data-slot=\"image-placeholder\" className={styles.placeholder} />}\n </div>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentProps } from 'react';\n\nimport { Input, type InputProperties, TextArea, type TextAreaProperties } from '..';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('inputGroup');\n\ntype Properties = RootProperties & ComponentStylesProps<'inputGroup'>;\n\nexport function InputGroup(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <InputGroupRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'div'>;\n\nfunction InputGroupRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function InputGroupInput(properties: InputProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Input\n data-slot=\"control\"\n className={cn(styles.input, className)}\n variant=\"ghost\"\n unstyled={true}\n {...props}\n />\n );\n}\n\ntype Align = 'inline-start' | 'inline-end' | 'block-start' | 'block-end';\n\ninterface InputGroupAddonProperties extends ComponentProps<'div'> {\n align?: Align;\n}\n\nexport function InputGroupAddon(properties: InputGroupAddonProperties) {\n const { align = 'inline-start', className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(styles.addon, className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest('button')) return;\n const parent = e.currentTarget.parentElement;\n (parent?.querySelector('input') ?? parent?.querySelector('textarea'))?.focus();\n }}\n {...props}\n />\n );\n}\n\nexport function InputGroupTextarea(properties: TextAreaProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <TextArea\n data-slot=\"control\"\n className={cn(styles.input, className)}\n variant=\"ghost\"\n unstyled={true}\n {...props}\n />\n );\n}\n\nexport function InputGroupText(properties: ComponentProps<'span'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <span\n data-slot=\"input-group-text\"\n className={cn(styles.text, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Input as InputPrimitive } from '@base-ui/react/input';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('input');\n\nexport interface InputProperties extends RootProperties, ComponentStylesProps<'input'> {\n unstyled?: boolean;\n}\n\nexport function Input(properties: InputProperties) {\n const { classNames, variant, unstyled, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} variant={variant} unstyled={unstyled}>\n <InputRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = Omit<InputPrimitive.Props, 'size'>;\n\nfunction InputRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <InputPrimitive\n data-slot=\"input\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('label');\n\ntype Properties = RootProperties & ComponentStylesProps<'label'>;\n\nexport function Label(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <LabelRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'label'>;\n\nfunction LabelRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <label\n data-slot=\"label\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Children, ComponentProps, ReactNode, useCallback, useLayoutEffect, useRef, useState } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('masonry');\n\ntype Properties = RootProperties & ComponentStylesProps<'masonry'>;\n\nexport function Masonry(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <MasonryRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<'div'> {\n columns?: number;\n}\n\nfunction MasonryRoot(properties: RootProperties) {\n const { columns = 3, children, className, ...props } = properties;\n\n const styles = useComponentStyles();\n const items = Children.toArray(children);\n const measureRef = useRef<HTMLDivElement>(null);\n\n const [distributed, setDistributed] = useState<ReactNode[][] | null>(null);\n\n const distribute = useCallback(() => {\n const container = measureRef.current;\n if (!container) return;\n\n const nodes = Array.from(container.children) as HTMLElement[];\n const heights = Array.from<number>({ length: columns }).fill(0);\n const cols = Array.from<ReactNode[]>({ length: columns }).map(() => [] as ReactNode[]);\n\n nodes.forEach((node, index) => {\n const shortest = heights.indexOf(Math.min(...heights));\n cols[shortest].push(items[index]);\n heights[shortest] += node.offsetHeight;\n });\n\n setDistributed(cols);\n }, [columns, items]);\n\n useLayoutEffect(() => {\n distribute();\n }, [distribute]);\n\n return (\n <>\n {!distributed && (\n <div ref={measureRef} data-slot=\"masonry-measure\" className=\"invisible absolute\">\n {items}\n </div>\n )}\n <div\n data-slot=\"masonry\"\n className={cn(styles.root, className)}\n {...props}\n >\n {(distributed ?? Array.from<ReactNode[]>({ length: columns }).map(() => [])).map((columnItems, index) => (\n <div\n key={index}\n data-slot=\"masonry-column\"\n className={styles.column}\n style={{ flexBasis: `${100 / columns}%` }}\n >\n {columnItems}\n </div>\n ))}\n </div>\n </>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { Icon } from '..';\n\nimport { NavigationMenu as NavigationMenuPrimitive } from '@base-ui/react/navigation-menu';\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('navigationMenu');\n\ntype Properties = NavigationMenuPrimitive.Root.Props & Pick<NavigationMenuPrimitive.Positioner.Props, 'align' | 'side' | 'sideOffset' | 'alignOffset'> & ComponentStylesProps<'navigationMenu'>;\n\nexport function NavigationMenu(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <NavigationMenuRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = NavigationMenuPrimitive.Root.Props & Pick<NavigationMenuPrimitive.Positioner.Props, 'align' | 'side' | 'sideOffset' | 'alignOffset'>;\n\nfunction NavigationMenuRoot(properties: RootProperties) {\n const { align = 'start', side, sideOffset, alignOffset, className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n className={cn(styles.root, className)}\n {...props}\n >\n {children}\n <NavigationMenuPositioner align={align} side={side} sideOffset={sideOffset} alignOffset={alignOffset} />\n </NavigationMenuPrimitive.Root>\n );\n}\n\nexport function NavigationMenuList(properties: ComponentProps<typeof NavigationMenuPrimitive.List>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(styles.list, className)}\n {...props}\n />\n );\n}\n\nexport function NavigationMenuItem(properties: ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(styles.item, className)}\n {...props}\n />\n );\n}\n\nexport function NavigationMenuTrigger(properties: NavigationMenuPrimitive.Trigger.Props) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(styles.trigger, className)}\n {...props}\n >\n {children}\n <Icon\n icon=\"chevronDown\"\n className={styles.triggerIcon}\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nexport function NavigationMenuContent(properties: NavigationMenuPrimitive.Content.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(styles.content, className)}\n {...props}\n />\n );\n}\n\nexport function NavigationMenuPositioner(properties: NavigationMenuPrimitive.Positioner.Props) {\n const { className, side = 'bottom', sideOffset = 8, align = 'start', alignOffset = 0, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NavigationMenuPrimitive.Portal>\n <NavigationMenuPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n collisionAvoidance={{ side: 'none' }}\n collisionPadding={{ top: 5, bottom: 5, left: 20, right: 20 }}\n className={cn(styles.positioner, className)}\n {...props}\n >\n <NavigationMenuPrimitive.Popup data-slot=\"navigation-menu-popup\" className={styles.popup}>\n <NavigationMenuPrimitive.Viewport data-slot=\"navigation-menu-viewport\" className={styles.viewport} />\n </NavigationMenuPrimitive.Popup>\n </NavigationMenuPrimitive.Positioner>\n </NavigationMenuPrimitive.Portal>\n );\n}\n\nexport function NavigationMenuLink(properties: NavigationMenuPrimitive.Link.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(styles.link, className)}\n {...props}\n />\n );\n}\n\nexport function NavigationMenuLinkCard(properties: NavigationMenuPrimitive.Link.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(styles.linkCard, className)}\n {...props}\n />\n );\n}\n\nexport function NavigationMenuIndicator(properties: ComponentProps<typeof NavigationMenuPrimitive.Icon>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NavigationMenuPrimitive.Icon\n data-slot=\"navigation-menu-indicator\"\n className={styles.indicatorWrapper}\n {...props}\n >\n <div className={cn(styles.indicator, className)} />\n </NavigationMenuPrimitive.Icon>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { Icon } from '..';\n\nimport { NumberField as NumberFieldPrimitive } from '@base-ui/react/number-field';\nimport { useId } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('numberField');\n\ntype Properties = RootProperties & ComponentStylesProps<'numberField'>;\n\nexport function NumberField(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <NumberFieldRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = NumberFieldPrimitive.Root.Props;\n\nfunction NumberFieldRoot(properties: RootProperties) {\n const { id, className, ...props } = properties;\n\n const generatedId = useId();\n const fieldId = id ?? generatedId;\n\n const styles = useComponentStyles();\n\n return (\n <NumberFieldPrimitive.Root\n id={fieldId}\n data-slot=\"number-field\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function NumberFieldGroup(properties: NumberFieldPrimitive.Group.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NumberFieldPrimitive.Group\n data-slot=\"number-field-group\"\n className={cn(styles.group, className)}\n {...props}\n />\n );\n}\n\nexport function NumberFieldDecrement(properties: NumberFieldPrimitive.Decrement.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NumberFieldPrimitive.Decrement\n data-slot=\"number-field-decrement\"\n className={cn(styles.button, className)}\n {...props}\n >\n <Icon icon=\"remove\" />\n </NumberFieldPrimitive.Decrement>\n );\n}\n\nexport function NumberFieldIncrement(properties: NumberFieldPrimitive.Increment.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NumberFieldPrimitive.Increment\n data-slot=\"number-field-increment\"\n className={cn(styles.button, className)}\n {...props}\n >\n <Icon icon=\"add\" />\n </NumberFieldPrimitive.Increment>\n );\n}\n\nexport function NumberFieldInput(properties: NumberFieldPrimitive.Input.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <NumberFieldPrimitive.ScrubArea\n direction=\"horizontal\"\n onPointerDown={() => {\n const body = document.body;\n const original = body.requestPointerLock.bind(body);\n body.requestPointerLock = () => Promise.resolve();\n\n window.addEventListener('pointerup', () => {\n body.requestPointerLock = original;\n }, { once: true, capture: true });\n }}\n >\n <NumberFieldPrimitive.Input\n data-slot=\"control\"\n className={cn(styles.input, className)}\n onPointerDown={(event) => {\n if (!event.metaKey) event.stopPropagation();\n }}\n {...props}\n />\n </NumberFieldPrimitive.ScrubArea>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { Button, Icon } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('pagination');\n\ntype Properties = RootProperties & ComponentStylesProps<'pagination'>;\n\nexport function Pagination(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <PaginationRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'nav'>;\n\nfunction PaginationRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <nav\n data-slot=\"pagination\"\n className={cn(styles.root, className)}\n aria-label=\"pagination\"\n {...props}\n />\n );\n}\n\nexport function PaginationContent(properties: ComponentProps<'ul'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(styles.content, className)}\n {...props}\n />\n );\n}\n\nexport function PaginationItem(properties: ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"pagination-item\"\n {...properties}\n />\n );\n}\n\ninterface LinkProperties extends ComponentProps<typeof Button> {\n isActive?: boolean;\n}\n\nexport function PaginationLink(properties: LinkProperties) {\n const { className, isActive, render, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Button\n data-slot=\"pagination-link\"\n data-active={isActive}\n aria-current={isActive ? 'page' : undefined}\n variant={isActive ? 'default' : 'ghost'}\n render={render ?? <a />}\n className={cn(styles.link, className)}\n {...props}\n />\n );\n}\n\nexport function PaginationPrevious(properties: LinkProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <PaginationLink\n className={cn(styles.previousNext, className)}\n aria-label=\"Go to previous page\"\n {...props}\n >\n <Icon icon=\"chevronLeft\" />\n <span data-slot=\"pagination-previous-label\" className={styles.previousNextLabel}>Previous</span>\n </PaginationLink>\n );\n}\n\nexport function PaginationNext(properties: LinkProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <PaginationLink\n className={cn(styles.previousNext, className)}\n aria-label=\"Go to next page\"\n {...props}\n >\n <span data-slot=\"pagination-next-label\" className={styles.previousNextLabel}>Next</span>\n <Icon icon=\"chevronRight\" />\n </PaginationLink>\n );\n}\n\nexport function PaginationEllipsis(properties: ComponentProps<'span'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <span\n data-slot=\"pagination-ellipsis\"\n className={cn(styles.ellipsis, className)}\n aria-hidden\n {...props}\n >\n <Icon icon=\"moreHorizontal\" />\n </span>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { Label, Separator } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('parameter');\n\ntype Properties = ComponentProps<'div'> & ComponentStylesProps<'parameter'>;\n\nexport function Parameter(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ParameterRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\nfunction ParameterRoot(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"parameter\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\ninterface LabelProperties extends ComponentProps<'label'> {\n label: string;\n}\n\nexport function ParameterLabel(properties: LabelProperties) {\n const { className, label, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Label\n data-slot=\"parameter-label\"\n className={cn(styles.label, className)}\n {...props}\n >\n {label}\n </Label>\n );\n}\n\ninterface ValueProperties extends ComponentProps<'div'> {\n value: string;\n}\n\nexport function ParameterValue(properties: ValueProperties) {\n const { className, value, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"parameter-value\"\n className={cn(styles.value, className)}\n {...props}\n >\n {value}\n </div>\n );\n}\n\ninterface MeasureProperties extends ComponentProps<'div'> {\n measure: string;\n}\n\nexport function ParameterMeasure(properties: MeasureProperties) {\n const { className, measure, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"parameter-measure\"\n className={cn(styles.measure, className)}\n {...props}\n >\n {measure}\n </div>\n );\n}\n\nexport function ParameterInput(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"parameter-input\"\n className={cn(styles.input, className)}\n {...props}\n />\n );\n}\n\nexport function ParameterRow(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"parameter-row\"\n className={cn(styles.row, className)}\n {...props}\n />\n );\n}\n\nexport function ParameterSeparator(properties: ComponentProps<typeof Separator>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <Separator\n data-slot=\"parameter-separator\"\n className={cn(styles.separator, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Popover as PopoverPrimitive } from '@base-ui/react/popover';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('popover');\n\nexport const PopoverCreateHandle = PopoverPrimitive.createHandle;\n\nexport const Popover = PopoverPrimitive.Root;\n\nexport function PopoverTrigger(properties: PopoverPrimitive.Trigger.Props) {\n const { className, children, ...props } = properties;\n\n return (\n <PopoverPrimitive.Trigger\n data-slot=\"popover-trigger\"\n className={className}\n {...props}\n >\n {children}\n </PopoverPrimitive.Trigger>\n );\n}\n\ntype PopupProperties = PopoverPrimitive.Popup.Props & ComponentStylesProps<'popover'> & PopoverPrimitive.Positioner.Props;\n\nexport function PopoverPopup(properties: PopupProperties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <PopoverPopupRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype PopoverPopupRootProperties = PopoverPrimitive.Popup.Props & PopoverPrimitive.Positioner.Props;\n\nfunction PopoverPopupRoot(properties: PopoverPopupRootProperties) {\n const {\n children,\n className,\n side = 'bottom',\n align = 'center',\n sideOffset = 4,\n alignOffset = 0,\n anchor,\n ...props\n } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n data-slot=\"popover-positioner\"\n className={styles.positioner}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n side={side}\n sideOffset={sideOffset}\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-popup\"\n className={cn(styles.popup, className)}\n {...props}\n >\n <PopoverPrimitive.Viewport\n data-slot=\"popover-viewport\"\n className={styles.viewport}\n >\n <div className={styles.content}>\n {children}\n </div>\n </PopoverPrimitive.Viewport>\n </PopoverPrimitive.Popup>\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n );\n}\n\nexport function PopoverClose(properties: PopoverPrimitive.Close.Props) {\n return (\n <PopoverPrimitive.Close\n data-slot=\"popover-close\"\n {...properties}\n />\n );\n}\n\nexport function PopoverTitle(properties: PopoverPrimitive.Title.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <PopoverPrimitive.Title\n data-slot=\"popover-title\"\n className={cn(styles.title, className)}\n {...props}\n />\n );\n}\n\nexport function PopoverDescription(properties: PopoverPrimitive.Description.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <PopoverPrimitive.Description\n data-slot=\"popover-description\"\n className={cn(styles.description, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Progress as ProgressPrimitive } from '@base-ui/react/progress';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('progress');\n\ntype Properties = RootProperties & ComponentStylesProps<'progress'>;\n\nexport function Progress(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ProgressRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ProgressPrimitive.Root.Props;\n\nfunction ProgressRoot(properties: RootProperties) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(styles.root, className)}\n {...props}\n >\n {children}\n <ProgressTrack>\n <ProgressIndicator />\n </ProgressTrack>\n </ProgressPrimitive.Root>\n );\n}\n\nexport function ProgressTrack(properties: ProgressPrimitive.Track.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ProgressPrimitive.Track\n data-slot=\"progress-track\"\n className={cn(styles.track, className)}\n {...props}\n />\n );\n}\n\nexport function ProgressIndicator(properties: ProgressPrimitive.Indicator.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className={cn(styles.indicator, className)}\n {...props}\n />\n );\n}\n\nexport function ProgressLabel(properties: ProgressPrimitive.Label.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ProgressPrimitive.Label\n data-slot=\"progress-label\"\n className={cn(styles.label, className)}\n {...props}\n />\n );\n}\n\nexport function ProgressValue(properties: ProgressPrimitive.Value.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ProgressPrimitive.Value\n data-slot=\"progress-value\"\n className={cn(styles.value, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ScrollArea as ScrollAreaPrimitive } from '@base-ui/react/scroll-area';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('scrollArea');\n\ntype Properties = RootProperties & ComponentStylesProps<'scrollArea'>;\n\nexport function ScrollArea(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <ScrollAreaRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ScrollAreaPrimitive.Root.Props {\n scrollFade?: boolean;\n scrollbarGutter?: boolean;\n}\n\nfunction ScrollAreaRoot(properties: RootProperties) {\n const { className, children, scrollFade, scrollbarGutter, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(styles.root, className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n data-scroll-fade={scrollFade || undefined}\n data-scrollbar-gutter={scrollbarGutter || undefined}\n className={styles.viewport}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar orientation=\"vertical\" />\n <ScrollBar orientation=\"horizontal\" />\n <ScrollAreaPrimitive.Corner data-slot=\"scroll-area-corner\" />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nexport function ScrollBar(properties: ScrollAreaPrimitive.Scrollbar.Props) {\n const { className, orientation = 'vertical', ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n className={cn(styles.scrollbar, className)}\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className={styles.thumb}\n />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Icon, Separator } from '..';\n\nimport { Select as SelectPrimitive } from '@base-ui/react/select';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('select');\n\ntype Properties<Value, Multiple extends boolean | undefined = false> = RootProperties<Value, Multiple> & ComponentStylesProps<'select'>;\n\nexport function Select<Value, Multiple extends boolean | undefined = false>(properties: Properties<Value, Multiple>) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <SelectRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties<Value, Multiple extends boolean | undefined = false> extends SelectPrimitive.Root.Props<Value, Multiple> {\n disabled?: boolean;\n};\n\nfunction SelectRoot<Value, Multiple extends boolean | undefined = false>(properties: RootProperties<Value, Multiple>) {\n const { disabled = false, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div data-slot=\"select\" data-disabled={disabled || undefined} className={styles.root}>\n <SelectPrimitive.Root disabled={disabled} {...props} />\n </div>\n );\n}\n\nexport function SelectTrigger(properties: SelectPrimitive.Trigger.Props) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n className={cn(styles.trigger, className)}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon data-slot=\"select-icon\" className={styles.triggerIcon}>\n <Icon icon=\"chevronDown\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nexport function SelectValue(properties: SelectPrimitive.Value.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(styles.value, className)}\n {...props}\n />\n );\n}\n\ninterface PopupProperties extends SelectPrimitive.Popup.Props {\n side?: SelectPrimitive.Positioner.Props['side'];\n sideOffset?: SelectPrimitive.Positioner.Props['sideOffset'];\n align?: SelectPrimitive.Positioner.Props['align'];\n alignOffset?: SelectPrimitive.Positioner.Props['alignOffset'];\n alignItemWithTrigger?: SelectPrimitive.Positioner.Props['alignItemWithTrigger'];\n anchor?: SelectPrimitive.Positioner.Props['anchor'];\n}\n\nexport function SelectPopup(properties: PopupProperties) {\n const {\n className,\n children,\n side = 'bottom',\n sideOffset = 4,\n align = 'start',\n alignOffset = 0,\n alignItemWithTrigger = true,\n anchor,\n ...props\n } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n data-slot=\"select-positioner\"\n className={styles.positioner}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n anchor={anchor}\n >\n <SelectPrimitive.Popup\n data-slot=\"select-popup\"\n className={cn(styles.popup, className)}\n {...props}\n >\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-arrow\"\n className={styles.scrollArrow}\n >\n <Icon icon=\"chevronUp\" />\n </SelectPrimitive.ScrollUpArrow>\n <div className={styles.popupInner}>\n <SelectPrimitive.List\n data-slot=\"select-list\"\n className={styles.list}\n >\n {children}\n </SelectPrimitive.List>\n </div>\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-arrow\"\n className={styles.scrollArrow}\n >\n <Icon icon=\"chevronDown\" />\n </SelectPrimitive.ScrollDownArrow>\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nexport function SelectItem(properties: SelectPrimitive.Item.Props) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(styles.item, className)}\n {...props}\n >\n <SelectPrimitive.ItemIndicator className={styles.itemIndicator}>\n <Icon icon=\"check\" />\n </SelectPrimitive.ItemIndicator>\n\n <SelectPrimitive.ItemText className={styles.itemText}>\n {children}\n </SelectPrimitive.ItemText>\n\n </SelectPrimitive.Item>\n );\n}\n\nexport function SelectSeparator(properties: SelectPrimitive.Separator.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n render={<Separator />}\n className={cn(styles.separator, className)}\n {...props}\n />\n );\n}\n\nexport function SelectGroup(properties: SelectPrimitive.Group.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(styles.group, className)}\n {...props}\n />\n );\n}\n\nexport function SelectGroupLabel(properties: SelectPrimitive.GroupLabel.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-group-label\"\n className={cn(styles.groupLabel, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Separator as SeparatorPrimitive } from '@base-ui/react/separator';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('separator');\n\ntype Properties = RootProperties & ComponentStylesProps<'separator'>;\n\nexport function Separator(properties: Properties) {\n const { classNames, orientation = 'horizontal', ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} orientation={orientation}>\n <SeparatorRoot orientation={orientation} {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = SeparatorPrimitive.Props;\n\nfunction SeparatorRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport {\n ComponentProps,\n createContext,\n ReactElement,\n useContext,\n useState,\n cloneElement,\n isValidElement,\n} from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('sidebar');\n\ninterface ContextProperties {\n open: boolean;\n setOpen: (open: boolean) => void;\n toggle: () => void;\n}\n\nconst Context = createContext<ContextProperties | undefined>(undefined);\n\ninterface Properties extends RootProperties, ComponentStylesProps<'sidebar'> {\n defaultOpen?: boolean;\n}\n\nexport function Sidebar(properties: Properties) {\n const { classNames, defaultOpen = true, ...props } = properties;\n\n const [open, setOpen] = useState(defaultOpen);\n const toggle = () => setOpen(prev => !prev);\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <Context.Provider value={{ open, setOpen, toggle }}>\n <SidebarRoot {...props} />\n </Context.Provider>\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'aside'>;\n\nfunction SidebarRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n const context = useContext(Context);\n\n if (!context?.open) return null;\n\n return (\n <aside\n data-slot=\"sidebar\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarHeader(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"sidebar-header\"\n className={cn(styles.header, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarContent(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"sidebar-content\"\n className={cn(styles.content, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarFooter(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"sidebar-footer\"\n className={cn(styles.footer, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarGroup(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"sidebar-group\"\n className={cn(styles.group, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarGroupLabel(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"sidebar-group-label\"\n className={cn(styles.groupLabel, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarGroupTitle(properties: ComponentProps<'span'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <span\n data-slot=\"sidebar-group-title\"\n className={cn(styles.groupTitle, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarGroupAction(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"sidebar-group-action\"\n className={cn(styles.groupAction, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarGroupContent(properties: ComponentProps<'div'>) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"sidebar-group-content\"\n className={cn(styles.groupContent, className)}\n {...props}\n />\n );\n}\n\ninterface ItemProperties extends ComponentProps<'a'> {\n active?: boolean;\n render?: ReactElement;\n}\n\nexport function SidebarItem(properties: ItemProperties) {\n const { className, active = false, render, children, ...props } = properties;\n\n const styles = useComponentStyles();\n const itemClassName = cn(styles.item, className);\n\n if (render && isValidElement(render)) {\n const clonedElement = cloneElement(render as ReactElement<any>, {\n 'data-slot': 'sidebar-item',\n 'data-active': active || undefined,\n 'className': cn(itemClassName, (render as ReactElement<any>).props.className),\n children,\n ...props,\n });\n\n return clonedElement;\n }\n\n return (\n <a\n data-slot=\"sidebar-item\"\n data-active={active || undefined}\n className={itemClassName}\n {...props}\n >\n {children}\n </a>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('spacer');\n\ntype Properties = RootProperties & ComponentStylesProps<'spacer'>;\n\nexport function Spacer(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <SpacerRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'div'>;\n\nfunction SpacerRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <div\n data-slot=\"spacer\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Slider as SliderPrimitive } from '@base-ui/react/slider';\n\nimport { useMemo } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('slider');\n\ntype Properties = RootProperties & ComponentStylesProps<'slider'>;\n\nexport function Slider(properties: Properties) {\n const { classNames, orientation = 'horizontal', ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} orientation={orientation}>\n <SliderRoot orientation={orientation} {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends SliderPrimitive.Root.Props {\n bottomContent?: boolean;\n}\n\nfunction SliderRoot(properties: RootProperties) {\n const {\n className,\n children,\n defaultValue,\n value,\n min = 0,\n max = 100,\n orientation = 'horizontal',\n bottomContent = false,\n ...props\n } = properties;\n\n const styles = useComponentStyles();\n\n const _values = useMemo(() => {\n if (value !== undefined) {\n return Array.isArray(value) ? value : [value];\n }\n if (defaultValue !== undefined) {\n return Array.isArray(defaultValue) ? defaultValue : [defaultValue];\n }\n return [min];\n }, [value, defaultValue, min]);\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n className={cn(styles.root, className)}\n defaultValue={defaultValue}\n max={max}\n min={min}\n orientation={orientation}\n thumbAlignment=\"edge\"\n value={value}\n {...props}\n >\n\n {!bottomContent && children}\n\n <SliderPrimitive.Control\n data-slot=\"slider-control\"\n className={styles.control}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={styles.track}\n >\n <SliderPrimitive.Indicator\n data-slot=\"slider-indicator\"\n className={styles.indicator}\n />\n\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n className={styles.thumb}\n index={index}\n key={String(index)}\n />\n ))}\n </SliderPrimitive.Track>\n\n </SliderPrimitive.Control>\n\n {bottomContent && children}\n\n </SliderPrimitive.Root>\n );\n}\n\ntype TicksProperties = React.ComponentProps<'div'> & {\n min?: number;\n max?: number;\n step?: number;\n skipInterval?: number;\n renderLabel?: (value: number) => React.ReactNode;\n};\n\nexport function SliderTicks(properties: TicksProperties) {\n const {\n className,\n min = 0,\n max = 100,\n step = 1,\n skipInterval = 1,\n renderLabel,\n ...props\n } = properties;\n\n const styles = useComponentStyles();\n const ticks = Array.from({ length: Math.floor((max - min) / step) + 1 }, (_, i) => min + i * step);\n\n return (\n <div\n aria-hidden=\"true\"\n data-slot=\"slider-ticks\"\n className={cn(styles.ticksContainer, className)}\n {...props}\n >\n {ticks.map((value, i) => {\n const isMajor = i % skipInterval === 0;\n\n return (\n <div\n className={styles.tick}\n key={String(value)}\n >\n <div className={styles.tickLine} data-major={isMajor} />\n\n <p className={styles.tickLabel} data-major={isMajor}>\n {renderLabel ? renderLabel(value) : value}\n </p>\n\n </div>\n );\n })}\n </div>\n );\n}\n\nexport function SliderValue(properties: SliderPrimitive.Value.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <SliderPrimitive.Value\n data-slot=\"slider-value\"\n className={cn(styles.value, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { Icon } from '..';\n\nimport { ComponentProps } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('spinner');\n\nconst icons = {\n default: 'spinner',\n dots: 'spinnerDots',\n} as const;\n\ntype Properties = RootProperties & ComponentStylesProps<'spinner'>;\n\nexport function Spinner(properties: Properties) {\n const { classNames, spin = true, variant, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} spin={spin}>\n <SpinnerRoot variant={variant} {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends ComponentProps<'span'> {\n variant?: keyof typeof icons;\n}\n\nfunction SpinnerRoot(properties: RootProperties) {\n const { className, variant = 'default', ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <span\n data-slot=\"spinner\"\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(styles.root, className)}\n {...props}\n >\n <Icon icon={icons[variant]} />\n </span>\n );\n}\n","import { cn, CuratedIcons } from '@digo-labs/common';\nimport { Icon } from '..';\n\nimport { Switch as SwitchPrimitive } from '@base-ui/react/switch';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('switch');\n\ntype Properties = RootProperties & ComponentStylesProps<'switch'>;\n\nexport function Switch(properties: Properties) {\n const { classNames, orientation = 'horizontal', ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} orientation={orientation}>\n <SwitchRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties extends SwitchPrimitive.Root.Props {\n checkedIcon?: CuratedIcons;\n uncheckedIcon?: CuratedIcons;\n};\n\nfunction SwitchRoot(properties: RootProperties) {\n const { className, checkedIcon, uncheckedIcon, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(styles.root, className)}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={styles.thumb}\n >\n {checkedIcon && <Icon icon={checkedIcon} className={styles.checkedIcon} />}\n {uncheckedIcon && <Icon icon={uncheckedIcon} className={styles.uncheckedIcon} />}\n </SwitchPrimitive.Thumb>\n </SwitchPrimitive.Root>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentType } from 'react';\n\nimport {\n Bouncy, BouncyArc, Cardio, ChaoticOrbit, DotPulse, DotSpinner, DotStream, DotWave,\n Grid, Hatch, Helix, Hourglass, Infinity as InfinityLoader, Jelly, JellyTriangle,\n Leapfrog, LineSpinner, LineWobble, Metronome, Mirage, Miyagi, Momentum,\n NewtonsCradle, Orbit, Ping, Pinwheel, Pulsar, Quantum, Reuleaux, Ring, Ring2,\n Ripples, Spiral, Square, Squircle, Superballs, TailChase, Tailspin, Treadmill,\n Trefoil, Trio, Wobble, Waveform, Zoomies,\n} from 'ldrs/react';\n\nimport 'ldrs/react/Bouncy.css';\nimport 'ldrs/react/BouncyArc.css';\nimport 'ldrs/react/Cardio.css';\nimport 'ldrs/react/ChaoticOrbit.css';\nimport 'ldrs/react/DotPulse.css';\nimport 'ldrs/react/DotSpinner.css';\nimport 'ldrs/react/DotStream.css';\nimport 'ldrs/react/DotWave.css';\nimport 'ldrs/react/Grid.css';\nimport 'ldrs/react/Hatch.css';\nimport 'ldrs/react/Helix.css';\nimport 'ldrs/react/Hourglass.css';\nimport 'ldrs/react/Infinity.css';\nimport 'ldrs/react/Jelly.css';\nimport 'ldrs/react/JellyTriangle.css';\nimport 'ldrs/react/Leapfrog.css';\nimport 'ldrs/react/LineSpinner.css';\nimport 'ldrs/react/LineWobble.css';\nimport 'ldrs/react/Metronome.css';\nimport 'ldrs/react/Mirage.css';\nimport 'ldrs/react/Miyagi.css';\nimport 'ldrs/react/Momentum.css';\nimport 'ldrs/react/NewtonsCradle.css';\nimport 'ldrs/react/Orbit.css';\nimport 'ldrs/react/Ping.css';\nimport 'ldrs/react/Pinwheel.css';\nimport 'ldrs/react/Pulsar.css';\nimport 'ldrs/react/Quantum.css';\nimport 'ldrs/react/Reuleaux.css';\nimport 'ldrs/react/Ring.css';\nimport 'ldrs/react/Ring2.css';\nimport 'ldrs/react/Ripples.css';\nimport 'ldrs/react/Spiral.css';\nimport 'ldrs/react/Square.css';\nimport 'ldrs/react/Squircle.css';\nimport 'ldrs/react/Superballs.css';\nimport 'ldrs/react/TailChase.css';\nimport 'ldrs/react/Tailspin.css';\nimport 'ldrs/react/Treadmill.css';\nimport 'ldrs/react/Trefoil.css';\nimport 'ldrs/react/Trio.css';\nimport 'ldrs/react/Wobble.css';\nimport 'ldrs/react/Waveform.css';\nimport 'ldrs/react/Zoomies.css';\n\nconst loaders: Record<string, ComponentType<any>> = {\n ring: Ring,\n ring2: Ring2,\n tailspin: Tailspin,\n lineSpinner: LineSpinner,\n squircle: Squircle,\n square: Square,\n reuleaux: Reuleaux,\n tailChase: TailChase,\n dotSpinner: DotSpinner,\n spiral: Spiral,\n bouncy: Bouncy,\n treadmill: Treadmill,\n bouncyArc: BouncyArc,\n waveform: Waveform,\n hatch: Hatch,\n hourglass: Hourglass,\n zoomies: Zoomies,\n lineWobble: LineWobble,\n infinity: InfinityLoader,\n trefoil: Trefoil,\n cardio: Cardio,\n helix: Helix,\n grid: Grid,\n quantum: Quantum,\n wobble: Wobble,\n orbit: Orbit,\n chaoticOrbit: ChaoticOrbit,\n superballs: Superballs,\n trio: Trio,\n momentum: Momentum,\n dotWave: DotWave,\n leapfrog: Leapfrog,\n newtonsCradle: NewtonsCradle,\n dotStream: DotStream,\n dotPulse: DotPulse,\n metronome: Metronome,\n jelly: Jelly,\n jellyTriangle: JellyTriangle,\n mirage: Mirage,\n ping: Ping,\n pulsar: Pulsar,\n ripples: Ripples,\n miyagi: Miyagi,\n pinwheel: Pinwheel,\n};\n\nexport type LoaderType =\n | 'ring' | 'ring2' | 'tailspin' | 'lineSpinner' | 'squircle' | 'square'\n | 'reuleaux' | 'tailChase' | 'dotSpinner' | 'spiral' | 'bouncy' | 'treadmill'\n | 'bouncyArc' | 'waveform' | 'hatch' | 'hourglass' | 'zoomies' | 'lineWobble'\n | 'infinity' | 'trefoil' | 'cardio' | 'helix' | 'grid' | 'quantum'\n | 'wobble' | 'orbit' | 'chaoticOrbit' | 'superballs' | 'trio' | 'momentum'\n | 'dotWave' | 'leapfrog' | 'newtonsCradle' | 'dotStream' | 'dotPulse' | 'metronome'\n | 'jelly' | 'jellyTriangle' | 'mirage' | 'ping' | 'pulsar' | 'ripples'\n | 'miyagi' | 'pinwheel';\n\nexport interface LoaderProperties {\n type?: LoaderType;\n size?: number;\n speed?: number;\n stroke?: number;\n strokeLength?: number;\n bgOpacity?: number;\n color?: string;\n className?: string;\n}\n\nexport function Loader(properties: LoaderProperties) {\n const {\n type = 'dotSpinner',\n size = 20,\n speed = 1,\n stroke = 2,\n strokeLength = 0.2,\n bgOpacity = 0.1,\n color = 'white',\n className,\n } = properties;\n\n const Component = loaders[type];\n\n return (\n <div className={cn('flex-col-center', className)} data-slot=\"loader\">\n <Component\n size={size}\n speed={speed}\n color={color}\n stroke={stroke}\n stroke-length={strokeLength}\n bg-opacity={bgOpacity}\n />\n </div>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Tabs as TabsPrimitive } from '@base-ui/react/tabs';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('tabs');\n\ntype Properties = RootProperties & ComponentStylesProps<'tabs'>;\n\nexport function Tabs(properties: Properties) {\n const { classNames, variant = 'default', orientation = 'horizontal', ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} variant={variant} orientation={orientation}>\n <TabsRoot orientation={orientation} {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = TabsPrimitive.Root.Props;\n\nfunction TabsRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n\nexport function TabsList(properties: TabsPrimitive.List.Props) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(styles.list, className)}\n {...props}\n >\n {children}\n <TabsPrimitive.Indicator\n data-slot=\"tab-indicator\"\n className={styles.indicator}\n />\n </TabsPrimitive.List>\n );\n}\n\nexport function TabsTab(properties: TabsPrimitive.Tab.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-tab\"\n className={cn(styles.tab, className)}\n {...props}\n />\n );\n}\n\nexport function TabsPanel(properties: TabsPrimitive.Panel.Props) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-panel\"\n className={cn(styles.panel, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { Toggle as TogglePrimitive } from '@base-ui/react/toggle';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('toggle');\n\ntype Properties = RootProperties & ComponentStylesProps<'toggle'>;\n\nexport function Toggle(properties: Properties) {\n const { classNames, variant, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} variant={variant}>\n <ToggleRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = TogglePrimitive.Props;\n\nfunction ToggleRoot(properties: RootProperties) {\n const { className, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n className={cn(styles.root, className)}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { Toggle, Separator } from '..';\n\nimport { ComponentProps } from 'react';\nimport { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles, useComponentVariants } = createComponentStyles('toggleGroup');\n\ntype Properties = RootProperties & ComponentStylesProps<'toggleGroup'>;\n\nexport function ToggleGroup(properties: Properties) {\n const { classNames, variant = 'default', orientation = 'horizontal', ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} variant={variant} orientation={orientation}>\n <ToggleGroupRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ToggleGroupPrimitive.Props;\n\nfunction ToggleGroupRoot(properties: RootProperties) {\n const { className, children, ...props } = properties;\n\n const { variant } = useComponentVariants();\n const styles = useComponentStyles();\n\n return (\n <ToggleGroupPrimitive\n data-slot=\"toggle-group\"\n data-variant={variant}\n className={cn(styles.root, className)}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive>\n );\n}\n\nexport function ToggleGroupItem(properties: ComponentProps<typeof Toggle>) {\n const { variant, ...props } = properties;\n\n const variants = useComponentVariants();\n\n return (\n <Toggle\n variant={variant ?? variants.variant}\n {...props}\n />\n );\n}\n\nexport function ToggleGroupSeparator(properties: ComponentProps<typeof Separator>) {\n const { className, orientation, ...props } = properties;\n\n const variants = useComponentVariants();\n const styles = useComponentStyles();\n\n return (\n <Separator\n data-slot=\"separator\"\n className={cn(styles.separator, className)}\n orientation={orientation ?? variants.orientation === 'horizontal' ? 'vertical' : 'horizontal'}\n {...props}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentProps, RefObject, useEffect, useRef, useState } from 'react';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('tableOfContents');\n\nexport interface TocItemData {\n depth: 2 | 3;\n value: string;\n slug: string;\n};\n\nexport function useTocHeadings(pathname: string): TocItemData[] {\n const [items, setItems] = useState<TocItemData[]>([]);\n\n useEffect(() => {\n const container = document.querySelector('main');\n\n if (!container) return;\n\n const updateHeadings = () => {\n const headings = container.querySelectorAll('h2, h3');\n const toc: TocItemData[] = Array.from(headings)\n .filter(h => h.id)\n .map(heading => ({\n depth: heading.tagName === 'H2' ? 2 : 3,\n value: heading.textContent || '',\n slug: heading.id,\n }));\n\n setItems(toc);\n };\n\n const observer = new MutationObserver(updateHeadings);\n\n observer.observe(container, { childList: true, subtree: true });\n\n updateHeadings();\n\n return () => observer.disconnect();\n }, [pathname]);\n\n return items;\n}\n\ntype Properties = RootProperties & ComponentStylesProps<'tableOfContents'>;\n\nexport function TableOfContents(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <TableOfContentsRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<'nav'>;\n\nfunction TableOfContentsRoot(properties: RootProperties) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <nav\n data-slot=\"toc\"\n className={cn(styles.root, className)}\n {...props}\n >\n {children}\n </nav>\n );\n}\n\nexport function TableOfContentsHeader(properties: ComponentProps<'span'>) {\n const { className, children, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <span\n data-slot=\"toc-header\"\n className={cn(styles.header, className)}\n {...props}\n >\n {children}\n </span>\n );\n}\n\ninterface ItemProperties extends ComponentProps<'a'> {\n active?: boolean;\n}\n\nfunction TableOfContentsItem(properties: ItemProperties) {\n const { className, active = false, onClick, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <a\n data-slot=\"toc-item\"\n data-active={active}\n className={cn(styles.item, className)}\n onClick={(e) => {\n e.preventDefault();\n\n const target = document.getElementById(props.href?.slice(1) ?? '');\n\n if (!target) return;\n\n let container: HTMLElement | null = target;\n\n while (container && getComputedStyle(container).overflowY !== 'auto') {\n container = container.parentElement;\n }\n\n if (!container) return;\n\n const top = target.getBoundingClientRect().top\n - container.getBoundingClientRect().top\n + container.scrollTop\n - 80;\n\n container.scrollTo({ top, behavior: 'smooth' });\n\n onClick?.(e);\n }}\n {...props}\n />\n );\n}\n\ninterface ThumbProperties extends ComponentProps<'div'> {\n containerRef: RefObject<HTMLElement | null>;\n activeItems: string[];\n}\n\nfunction TableOfContentsThumb(properties: ThumbProperties) {\n const { containerRef, activeItems, className, ...props } = properties;\n\n const thumbRef = useRef<HTMLDivElement>(null);\n\n function calc(): [number, number] {\n const container = containerRef.current;\n\n if (!container || activeItems.length === 0 || container.clientHeight === 0) return [0, 0];\n\n let upper = Number.MAX_VALUE;\n let lower = 0;\n\n for (const slug of activeItems) {\n const element = container.querySelector<HTMLElement>(`a[href=\"#${slug}\"]`);\n\n if (!element) continue;\n\n const computed = getComputedStyle(element);\n\n upper = Math.min(upper, element.offsetTop + parseFloat(computed.paddingTop));\n lower = Math.max(lower, element.offsetTop + element.clientHeight - parseFloat(computed.paddingBottom));\n }\n\n return [upper, lower - upper];\n }\n\n function update() {\n const element = thumbRef.current;\n\n if (!element) return;\n\n const [top, height] = calc();\n\n element.style.setProperty('--toc-top', `${top}px`);\n element.style.setProperty('--toc-height', `${height}px`);\n }\n\n useEffect(() => {\n const container = containerRef.current;\n\n if (!container) return;\n\n const observer = new ResizeObserver(update);\n\n observer.observe(container);\n\n return () => observer.disconnect();\n }, [containerRef, activeItems]);\n\n useEffect(() => {\n update();\n }, [activeItems]);\n\n return (\n <div\n ref={thumbRef}\n data-slot=\"toc-thumb\"\n data-hidden={activeItems.length === 0}\n className={className}\n {...props}\n />\n );\n}\n\nexport type TocOffsets = Record<2 | 3, number>;\n\ninterface ItemsProperties {\n items: TocItemData[];\n activeSlugs: string[];\n itemOffsets?: TocOffsets;\n lineOffsets?: TocOffsets;\n lineWidth?: number;\n}\n\nexport function TableOfContentsItems(properties: ItemsProperties) {\n const {\n items,\n activeSlugs,\n itemOffsets = { 2: 14, 3: 26 },\n lineOffsets = { 2: 0, 3: 10 },\n lineWidth = 1.5,\n } = properties;\n\n const styles = useComponentStyles();\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [svg, setSvg] = useState<{ path: string; width: number; height: number; }>();\n\n useEffect(() => {\n const container = containerRef.current;\n\n if (!container) return;\n\n function onResize() {\n if (!container || container.clientHeight === 0) return;\n\n let w = 0;\n let h = 0;\n const d: string[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const element = container.querySelector<HTMLElement>(`a[href=\"#${items[i].slug}\"]`);\n\n if (!element) continue;\n\n const computed = getComputedStyle(element);\n const offset = lineOffsets[items[i].depth] + lineWidth / 2;\n const top = element.offsetTop + parseFloat(computed.paddingTop);\n const bottom = element.offsetTop + element.clientHeight - parseFloat(computed.paddingBottom);\n\n w = Math.max(offset, w);\n h = Math.max(h, bottom);\n\n d.push(`${i === 0 ? 'M' : 'L'}${offset} ${top}`);\n d.push(`L${offset} ${bottom}`);\n }\n\n setSvg({ path: d.join(' '), width: w + lineWidth, height: h });\n }\n\n const observer = new ResizeObserver(onResize);\n\n onResize();\n\n observer.observe(container);\n\n return () => observer.disconnect();\n }, [items]);\n\n return (\n <div ref={containerRef} className={styles.items}>\n\n {svg && (\n <svg\n data-slot=\"toc-line\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 ${svg.width} ${svg.height}`}\n className={styles.line}\n style={{ width: svg.width, height: svg.height }}\n fill=\"none\"\n >\n <path d={svg.path} strokeWidth={lineWidth} />\n </svg>\n )}\n\n {svg && (\n <div\n data-slot=\"toc-tree-indicator\"\n className={styles.treeIndicator}\n style={{\n width: svg.width,\n height: svg.height,\n maskImage: `url(\"data:image/svg+xml,${encodeURIComponent(\n `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${svg.width} ${svg.height}\">` +\n `<path d=\"${svg.path}\" stroke=\"black\" stroke-width=\"${lineWidth}\" fill=\"none\" /></svg>`,\n )}\")`,\n }}\n >\n <TableOfContentsThumb\n containerRef={containerRef}\n activeItems={activeSlugs}\n className={styles.indicator}\n />\n </div>\n )}\n\n {items.map(item => (\n <TableOfContentsItem\n key={item.slug}\n href={`#${item.slug}`}\n active={activeSlugs.includes(item.slug)}\n style={{ paddingInlineStart: itemOffsets[item.depth] }}\n >\n {item.value}\n </TableOfContentsItem>\n ))}\n </div>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { FieldControl } from '..';\n\nimport TextareaAutosize, { TextareaAutosizeProps } from 'react-textarea-autosize';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('textArea');\n\ntype RootProperties = Omit<TextareaAutosizeProps, 'size'>;\n\nexport interface TextAreaProperties extends RootProperties, ComponentStylesProps<'textArea'> {\n unstyled?: boolean;\n resize?: boolean;\n}\n\nexport function TextArea(properties: TextAreaProperties) {\n const { classNames, variant, unstyled, resize, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames} variant={variant} unstyled={unstyled} resize={resize}>\n <TextAreaRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\nfunction TextAreaRoot(properties: RootProperties) {\n const { className, minRows = 3, ...props } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <FieldControl\n render={\n <TextareaAutosize\n data-slot=\"text-area\"\n className={cn(styles.root, className)}\n minRows={minRows}\n {...props}\n />\n }\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ComponentProps } from 'react';\n\nimport { Image } from './image';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('tintImage');\n\ntype Properties = RootProperties & ComponentStylesProps<'tintImage'>;\n\nexport function TintImage(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <TintImageRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ntype RootProperties = ComponentProps<typeof Image>;\n\nfunction TintImageRoot(properties: RootProperties) {\n const { src, className, style, ...props } = properties;\n\n const styles = useComponentStyles();\n\n const resolvedSrc = typeof src === 'object' ? `data:${src.mediaType};base64,${src.base64}` : src;\n\n return (\n <div\n data-slot=\"tint-image\"\n className={cn(styles.root, className)}\n style={{\n ...style,\n maskImage: resolvedSrc ? `url(${resolvedSrc})` : undefined,\n maskSize: 'contain',\n maskRepeat: 'no-repeat',\n maskPosition: 'center',\n WebkitMaskImage: resolvedSrc ? `url(${resolvedSrc})` : undefined,\n WebkitMaskSize: 'contain',\n WebkitMaskRepeat: 'no-repeat',\n WebkitMaskPosition: 'center',\n }}\n {...props}\n >\n <Image src={src} className={styles.image} />\n </div>\n );\n}\n","import { cn, CuratedIcons } from '@digo-labs/common';\nimport { Icon } from '..';\n\nimport { Toast } from '@base-ui/react/toast';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('toast');\n\nexport const toastManager = Toast.createToastManager();\n\ntype ToastVariant = 'default' | 'success' | 'error' | 'warning' | 'info' | 'loading';\n\nconst TOAST_ICONS: Partial<Record<ToastVariant, CuratedIcons>> = {\n error: 'error',\n info: 'info',\n loading: 'spinner',\n success: 'success',\n warning: 'warning',\n};\n\ntype ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';\ntype SwipeDirection = 'up' | 'down' | 'right' | 'left';\n\ninterface ProviderProperties extends Toast.Provider.Props, ComponentStylesProps<'toast'> {\n position?: ToastPosition;\n}\n\nexport function ToastProvider(properties: ProviderProperties) {\n const { children, classNames, position = 'bottom-right', ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <Toast.Provider toastManager={toastManager} {...props}>\n {children}\n <Toasts position={position} />\n </Toast.Provider>\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties {\n position: ToastPosition;\n}\n\nfunction Toasts(properties: RootProperties) {\n const { position = 'bottom-right' } = properties;\n\n const { toasts } = Toast.useToastManager();\n const styles = useComponentStyles();\n\n function getSwipeDirection(): SwipeDirection[] {\n const isTop = position.startsWith('top');\n\n const swipeDirection: SwipeDirection[] = position.includes('center')\n ? [isTop ? 'up' : 'down']\n : position.includes('left')\n ? ['left', isTop ? 'up' : 'down']\n : ['right', isTop ? 'up' : 'down'];\n\n return swipeDirection;\n }\n\n return (\n <Toast.Portal data-slot=\"toast-portal\">\n <Toast.Viewport\n data-slot=\"toast-viewport\"\n data-position={position}\n className={styles.viewport}\n >\n {toasts.map((toast) => {\n const variant = toast.type as ToastVariant;\n\n return (\n <ComponentStylesProvider key={toast.id} variant={variant}>\n <ToastItem toast={toast} position={position} swipeDirection={getSwipeDirection()} />\n </ComponentStylesProvider>\n );\n })}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n\ntype ToastObject = ReturnType<typeof Toast.useToastManager>['toasts'][number];\n\ninterface ToastItemProperties {\n toast: ToastObject;\n position: ToastPosition;\n swipeDirection: SwipeDirection[];\n}\n\nfunction ToastItem(properties: ToastItemProperties) {\n const { toast, position, swipeDirection } = properties;\n\n const styles = useComponentStyles();\n const variant = toast.type as ToastVariant;\n const icon = variant ? TOAST_ICONS[variant] : undefined;\n\n return (\n <Toast.Root\n data-position={position}\n swipeDirection={swipeDirection}\n className={cn(styles.root, styles.toastRoot)}\n toast={toast}\n >\n <Toast.Content className={cn(styles.toastContent, styles.content)}>\n <div className={styles.outerContainer}>\n {icon &&\n <Icon\n data-slot=\"toast-icon\"\n icon={icon}\n className={styles.icon}\n />}\n\n <div className={styles.innerContainer}>\n <Toast.Title\n data-slot=\"toast-title\"\n className={styles.title}\n />\n <Toast.Description\n data-slot=\"toast-description\"\n className={styles.description}\n />\n </div>\n </div>\n\n {\n toast.actionProps &&\n <Toast.Action\n data-slot=\"toast-action\"\n className={styles.action}\n >\n {toast.actionProps.children}\n </Toast.Action>\n }\n </Toast.Content>\n </Toast.Root>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { createContext, useContext, useMemo, type ReactElement, type ReactNode } from 'react';\n\nimport { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';\n\nimport { createComponentStyles, ComponentStylesProps } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('tooltip');\n\nconst Context = createContext<ReturnType<typeof TooltipPrimitive.createHandle> | null>(null);\n\ninterface TooltipPayload extends ComponentStylesProps<'tooltip'> {\n content: ReactNode;\n side?: TooltipPrimitive.Positioner.Props['side'];\n align?: TooltipPrimitive.Positioner.Props['align'];\n sideOffset?: TooltipPrimitive.Positioner.Props['sideOffset'];\n};\n\ninterface ProviderProperties extends ComponentStylesProps<'tooltip'> {\n delay?: number;\n closeDelay?: number;\n timeout?: number;\n children?: ReactNode;\n}\n\nexport function TooltipProvider(properties: ProviderProperties) {\n const { classNames, children, ...props } = properties;\n\n const handle = useMemo(() => TooltipPrimitive.createHandle(), []);\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <TooltipPrimitive.Provider {...props}>\n <Context.Provider value={handle}>\n {children}\n <TooltipPrimitive.Root handle={handle}>\n {({ payload }) => {\n if (!payload) return null;\n\n const { content, side, align, sideOffset, classNames } = payload as TooltipPayload;\n\n return (\n <TooltipPopup side={side} align={align} sideOffset={sideOffset} classNames={classNames} content={content}>\n {content}\n </TooltipPopup>\n );\n }}\n\n </TooltipPrimitive.Root>\n </Context.Provider>\n </TooltipPrimitive.Provider>\n </ComponentStylesProvider>\n );\n}\n\ninterface TooltipProperties extends TooltipPayload {\n children: ReactElement;\n}\n\nexport function Tooltip(properties: TooltipProperties) {\n const { content, side, align, sideOffset, classNames, children } = properties;\n\n const handle = useContext(Context);\n\n if (!handle) return;\n\n return (\n <TooltipPrimitive.Trigger\n data-slot=\"tooltip-trigger\"\n handle={handle}\n payload={{ content, side, align, sideOffset, classNames } satisfies TooltipPayload}\n render={children}\n />\n );\n}\n\ninterface PopupProperties extends TooltipPayload {\n children?: ReactNode;\n}\n\nfunction TooltipPopup(properties: PopupProperties) {\n const {\n side = 'top',\n align = 'center',\n sideOffset = 10,\n classNames,\n children,\n } = properties;\n\n const styles = useComponentStyles();\n\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n data-slot=\"tooltip-positioner\"\n className={cn(styles.positioner, classNames?.positioner)}\n side={side}\n align={align}\n sideOffset={sideOffset}\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-popup\"\n className={cn(styles.popup, classNames?.popup)}\n >\n <TooltipPrimitive.Arrow\n data-slot=\"tooltip-arrow\"\n className={cn(styles.arrow, classNames?.arrow)}\n >\n <svg viewBox=\"0 0 20 10\" className=\"size-full\">\n <path d=\"M0 10 L10 0 L20 10 Z\" className=\"stroke-none\" />\n <path d=\"M0 10 L10 0 L20 10\" className=\"fill-none\" />\n </svg>\n </TooltipPrimitive.Arrow>\n <TooltipPrimitive.Viewport\n data-slot=\"tooltip-viewport\"\n className={cn(styles.viewport, classNames?.viewport)}\n >\n {children}\n </TooltipPrimitive.Viewport>\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { createContext, type ReactNode, useContext, useEffect, useRef, useState } from 'react';\n\nimport { type MotionValue, type SpringOptions, useMotionValue, useSpring } from 'motion/react';\n\nexport type CursorSpring = SpringOptions;\n\ninterface ContextProperties {\n x: MotionValue<number>;\n y: MotionValue<number>;\n active: boolean;\n pressed: boolean;\n width: number;\n height: number;\n}\n\nconst Context = createContext<ContextProperties | undefined>(undefined);\n\ninterface Properties {\n children: ReactNode;\n className?: string;\n showNativeCursor?: boolean;\n}\n\nexport function CursorContainer(properties: Properties) {\n const { children, className, showNativeCursor = false } = properties;\n\n const ref = useRef<HTMLDivElement>(null);\n const dimensions = useRef({ width: 0, height: 0 });\n\n const [active, setActive] = useState(false);\n const [pressed, setPressed] = useState(false);\n\n const x = useMotionValue(0);\n const y = useMotionValue(0);\n\n useEffect(() => {\n function handleMove(event: MouseEvent) {\n const rect = ref.current?.getBoundingClientRect();\n\n if (!rect) return;\n\n x.set(event.clientX - rect.left);\n y.set(event.clientY - rect.top);\n\n dimensions.current = { width: rect.width, height: rect.height };\n }\n\n document.addEventListener('mousemove', handleMove);\n\n return () => document.removeEventListener('mousemove', handleMove);\n }, []);\n\n return (\n <Context.Provider value={{\n x, y, active, pressed,\n width: dimensions.current.width,\n height: dimensions.current.height,\n }}\n >\n <div\n ref={ref}\n onMouseEnter={() => setActive(true)}\n onMouseDown={() => setPressed(true)}\n onMouseUp={() => setPressed(false)}\n onMouseLeave={() => {\n setActive(false);\n setPressed(false);\n }}\n className={cn('relative overflow-hidden', !showNativeCursor && 'cursor-none', className)}\n >\n {children}\n </div>\n </Context.Provider>\n );\n}\n\nexport function useCursorTracking(spring?: CursorSpring) {\n const context = useContext(Context);\n\n if (!context) {\n throw new Error('useCursorTracking must be used within a CursorContainer');\n }\n\n const springX = useSpring(context.x, spring ?? {});\n const springY = useSpring(context.y, spring ?? {});\n\n return {\n x: spring ? springX : context.x,\n y: spring ? springY : context.y,\n active: context.active,\n pressed: context.pressed,\n width: context.width,\n height: context.height,\n };\n}\n","import { CursorSpring, useCursorTracking, motionTransitionPresets } from '..';\n\nimport { type ReactNode, useState } from 'react';\nimport { motion, useTransform } from 'motion/react';\n\ninterface Properties {\n children: ReactNode;\n radius?: number;\n spring?: CursorSpring;\n}\n\nexport function CursorClipping(properties: Properties) {\n const { children, radius = 60, spring } = properties;\n\n const { x, y, active, pressed, width, height } = useCursorTracking(spring);\n\n const [entered, setEntered] = useState(false);\n\n if (active && !entered) setEntered(true);\n\n const outerLeft = useTransform(x, v => v - radius);\n const outerTop = useTransform(y, v => v - radius);\n const innerLeft = useTransform(x, v => -(v - radius));\n const innerTop = useTransform(y, v => -(v - radius));\n\n const diameter = radius * 2;\n\n if (!entered) return null;\n\n return (\n <motion.div\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: pressed ? 1.15 : 1, opacity: 1 }}\n transition={motionTransitionPresets.spring3}\n className=\"border-neutral-12 pointer-events-none absolute overflow-hidden rounded-full border\"\n style={{\n left: outerLeft,\n top: outerTop,\n width: diameter,\n height: diameter,\n }}\n >\n <motion.div\n className=\"absolute\"\n style={{\n left: innerLeft,\n top: innerTop,\n width: width,\n height: height,\n }}\n >\n {children}\n </motion.div>\n </motion.div>\n );\n}\n","import { type CursorSpring, useCursorTracking } from '..';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { motion, useMotionValue, useSpring, useTransform } from 'motion/react';\nimport { CommonHelpers } from '@digo-labs/common';\n\nconst SNAP_SPRING: CursorSpring = { stiffness: 400, damping: 40 };\n\ninterface Properties {\n spring?: CursorSpring;\n size?: number;\n offset?: number;\n color?: string;\n lineLength?: number;\n borderWidth?: number;\n}\n\nexport function CursorBracket(properties: Properties) {\n const { spring, size = 12, offset = 4, color = 'currentColor', lineLength = 0.2, borderWidth = 1 } = properties;\n\n const { x, y, active } = useCursorTracking(spring);\n\n const sentinelRef = useRef<HTMLDivElement>(null);\n const wasSnapped = useRef(false);\n\n const [entered, setEntered] = useState(false);\n\n if (active && !entered) setEntered(true);\n\n const rawLeft = useMotionValue(0);\n const rawTop = useMotionValue(0);\n const rawWidth = useMotionValue(size);\n const rawHeight = useMotionValue(size);\n\n const boxLeft = useSpring(rawLeft, SNAP_SPRING);\n const boxTop = useSpring(rawTop, SNAP_SPRING);\n const boxWidth = useSpring(rawWidth, SNAP_SPRING);\n const boxHeight = useSpring(rawHeight, SNAP_SPRING);\n\n const cornerW = useTransform(boxWidth, w => CommonHelpers.clamp(w * lineLength, 6, 30));\n const cornerH = useTransform(boxHeight, h => CommonHelpers.clamp(h * lineLength, 6, 30));\n\n useEffect(() => {\n let requestAnimationFrameId: number;\n\n const update = () => {\n const sentinel = sentinelRef.current;\n\n if (sentinel) {\n const containerRect = sentinel.getBoundingClientRect();\n const cursorX = x.get();\n const cursorY = y.get();\n const clientX = containerRect.left + cursorX;\n const clientY = containerRect.top + cursorY;\n\n const element = document.elementFromPoint(clientX, clientY);\n const target = element?.closest('[data-cursor-target]') as HTMLElement | null;\n\n if (target) {\n const targetRect = target.getBoundingClientRect();\n\n rawLeft.set(targetRect.left - containerRect.left - offset);\n rawTop.set(targetRect.top - containerRect.top - offset);\n rawWidth.set(targetRect.width + offset * 2);\n rawHeight.set(targetRect.height + offset * 2);\n\n wasSnapped.current = true;\n } else if (wasSnapped.current) {\n rawLeft.set(cursorX - size / 2);\n rawTop.set(cursorY - size / 2);\n rawWidth.set(size);\n rawHeight.set(size);\n\n wasSnapped.current = false;\n } else {\n rawLeft.set(cursorX - size / 2);\n rawTop.set(cursorY - size / 2);\n rawWidth.set(size);\n rawHeight.set(size);\n }\n }\n\n requestAnimationFrameId = requestAnimationFrame(update);\n };\n\n requestAnimationFrameId = requestAnimationFrame(update);\n\n return () => cancelAnimationFrame(requestAnimationFrameId);\n }, [x, y, size, offset]);\n\n if (!entered) return null;\n\n return (\n <>\n <div ref={sentinelRef} className=\"pointer-events-none absolute inset-0\" />\n\n <motion.div\n className=\"pointer-events-none absolute\"\n initial={{ opacity: 0 }}\n animate={{ opacity: active ? 1 : 0 }}\n transition={{ duration: 0.15 }}\n style={{\n left: boxLeft,\n top: boxTop,\n width: boxWidth,\n height: boxHeight,\n }}\n >\n <motion.div\n className=\"absolute top-0 left-0\"\n style={{ width: cornerW, height: cornerH, borderColor: color, borderTopWidth: borderWidth, borderLeftWidth: borderWidth }}\n />\n <motion.div\n className=\"absolute top-0 right-0\"\n style={{ width: cornerW, height: cornerH, borderColor: color, borderTopWidth: borderWidth, borderRightWidth: borderWidth }}\n />\n <motion.div\n className=\"absolute bottom-0 left-0\"\n style={{ width: cornerW, height: cornerH, borderColor: color, borderBottomWidth: borderWidth, borderLeftWidth: borderWidth }}\n />\n <motion.div\n className=\"absolute right-0 bottom-0\"\n style={{ width: cornerW, height: cornerH, borderColor: color, borderBottomWidth: borderWidth, borderRightWidth: borderWidth }}\n />\n </motion.div>\n </>\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { type Color, parseColor } from '..';\nimport { useRef, useCallback, useState, useEffect, type ReactNode } from 'react';\n\nfunction buildBoxShadow(glowColor: Color, intensity: number): string {\n const hsl = glowColor.toFormat('hsl');\n const h = hsl.getChannelValue('hue');\n const s = hsl.getChannelValue('saturation');\n const l = hsl.getChannelValue('lightness');\n const base = `${h}deg ${s}% ${l}%`;\n const layers: [number, number, number, number, number, boolean][] = [\n [0, 0, 0, 1, 100, true],\n [0, 0, 1, 0, 60, true],\n [0, 0, 3, 0, 50, true],\n [0, 0, 6, 0, 40, true],\n [0, 0, 15, 0, 30, true],\n [0, 0, 25, 2, 20, true],\n [0, 0, 50, 2, 10, true],\n [0, 0, 1, 0, 60, false],\n [0, 0, 3, 0, 50, false],\n [0, 0, 6, 0, 40, false],\n [0, 0, 15, 0, 30, false],\n [0, 0, 25, 2, 20, false],\n [0, 0, 50, 2, 10, false],\n ];\n return layers.map(([x, y, blur, spread, alpha, inset]) => {\n const a = Math.min(alpha * intensity, 100);\n return `${inset ? 'inset ' : ''}${x}px ${y}px ${blur}px ${spread}px hsl(${base} / ${a}%)`;\n }).join(', ');\n}\n\nfunction easeOutCubic(x: number) {\n return 1 - Math.pow(1 - x, 3);\n}\nfunction easeInCubic(x: number) {\n return x * x * x;\n}\n\ninterface AnimateOptions {\n start?: number; end?: number; duration?: number; delay?: number;\n ease?: (t: number) => number; onUpdate: (v: number) => void; onEnd?: () => void;\n}\n\nfunction animateValue({ start = 0, end = 100, duration = 1000, delay = 0, ease = easeOutCubic, onUpdate, onEnd }: AnimateOptions) {\n const t0 = performance.now() + delay;\n function tick() {\n const elapsed = performance.now() - t0;\n const t = Math.min(elapsed / duration, 1);\n onUpdate(start + (end - start) * ease(t));\n if (t < 1) requestAnimationFrame(tick);\n else if (onEnd) onEnd();\n }\n setTimeout(() => requestAnimationFrame(tick), delay);\n}\n\nconst GRADIENT_POSITIONS = ['80% 55%', '69% 34%', '8% 6%', '41% 38%', '86% 85%', '82% 18%', '51% 4%'];\nconst COLOR_MAP = [0, 1, 2, 0, 1, 2, 1];\n\nfunction buildMeshGradients(colors: Color[]): string[] {\n const gradients: string[] = [];\n for (let i = 0; i < 7; i++) {\n const c = colors[Math.min(COLOR_MAP[i], colors.length - 1)].toString('css');\n gradients.push(`radial-gradient(at ${GRADIENT_POSITIONS[i]}, ${c} 0px, transparent 50%)`);\n }\n gradients.push(`linear-gradient(${colors[0].toString('css')} 0 100%)`);\n return gradients;\n}\n\ninterface BorderGlowClassNames {\n root?: string;\n content?: string;\n}\n\ninterface Properties {\n children?: ReactNode;\n className?: string;\n classNames?: BorderGlowClassNames;\n edgeSensitivity?: number;\n glowColor?: Color;\n backgroundColor?: string;\n borderRadius?: number;\n glowRadius?: number;\n glowIntensity?: number;\n coneSpread?: number;\n animated?: boolean;\n colors?: Color[];\n fillOpacity?: number;\n}\n\nexport function BorderGlow(properties: Properties) {\n const {\n children,\n className = '',\n classNames,\n edgeSensitivity = 30,\n glowColor = parseColor('hsl(40, 80%, 80%)'),\n backgroundColor = 'var(--color-neutral-1)',\n borderRadius = 28,\n glowRadius = 40,\n glowIntensity = 1.0,\n coneSpread = 25,\n animated = false,\n colors = [parseColor('#c084fc'), parseColor('#f472b6'), parseColor('#38bdf8')],\n fillOpacity = 0.5,\n } = properties;\n\n const cardRef = useRef<HTMLDivElement>(null);\n const [isHovered, setIsHovered] = useState(false);\n const [cursorAngle, setCursorAngle] = useState(45);\n const [edgeProximity, setEdgeProximity] = useState(0);\n const [sweepActive, setSweepActive] = useState(false);\n\n const getCenterOfElement = useCallback((el: HTMLElement) => {\n const { width, height } = el.getBoundingClientRect();\n return [width / 2, height / 2];\n }, []);\n\n const getEdgeProximity = useCallback((el: HTMLElement, x: number, y: number) => {\n const [cx, cy] = getCenterOfElement(el);\n const dx = x - cx;\n const dy = y - cy;\n let kx = Infinity;\n let ky = Infinity;\n if (dx !== 0) kx = cx / Math.abs(dx);\n if (dy !== 0) ky = cy / Math.abs(dy);\n return Math.min(Math.max(1 / Math.min(kx, ky), 0), 1);\n }, [getCenterOfElement]);\n\n const getCursorAngle = useCallback((el: HTMLElement, x: number, y: number) => {\n const [cx, cy] = getCenterOfElement(el);\n const dx = x - cx;\n const dy = y - cy;\n if (dx === 0 && dy === 0) return 0;\n const radians = Math.atan2(dy, dx);\n let degrees = radians * (180 / Math.PI) + 90;\n if (degrees < 0) degrees += 360;\n return degrees;\n }, [getCenterOfElement]);\n\n const handlePointerMove = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n const card = cardRef.current;\n if (!card) return;\n const rect = card.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n setEdgeProximity(getEdgeProximity(card, x, y));\n setCursorAngle(getCursorAngle(card, x, y));\n }, [getEdgeProximity, getCursorAngle]);\n\n useEffect(() => {\n if (!animated) return;\n const angleStart = 110;\n const angleEnd = 465;\n setSweepActive(true);\n setCursorAngle(angleStart);\n\n animateValue({ duration: 500, onUpdate: v => setEdgeProximity(v / 100) });\n animateValue({\n ease: easeInCubic, duration: 1500, end: 50, onUpdate: (v) => {\n setCursorAngle((angleEnd - angleStart) * (v / 100) + angleStart);\n },\n });\n animateValue({\n ease: easeOutCubic, delay: 1500, duration: 2250, start: 50, end: 100, onUpdate: (v) => {\n setCursorAngle((angleEnd - angleStart) * (v / 100) + angleStart);\n },\n });\n animateValue({\n ease: easeInCubic, delay: 2500, duration: 1500, start: 100, end: 0,\n onUpdate: v => setEdgeProximity(v / 100),\n onEnd: () => setSweepActive(false),\n });\n }, [animated]);\n\n const colorSensitivity = edgeSensitivity + 20;\n const isVisible = isHovered || sweepActive;\n const borderOpacity = isVisible\n ? Math.max(0, (edgeProximity * 100 - colorSensitivity) / (100 - colorSensitivity))\n : 0;\n const glowOpacity = isVisible\n ? Math.max(0, (edgeProximity * 100 - edgeSensitivity) / (100 - edgeSensitivity))\n : 0;\n\n const meshGradients = buildMeshGradients(colors);\n const borderBg = meshGradients.map(g => `${g} border-box`);\n const fillBg = meshGradients.map(g => `${g} padding-box`);\n const angleDeg = `${cursorAngle.toFixed(3)}deg`;\n const backgroundCss = backgroundColor;\n\n return (\n <div\n ref={cardRef}\n onPointerMove={handlePointerMove}\n onPointerEnter={() => setIsHovered(true)}\n onPointerLeave={() => setIsHovered(false)}\n className={cn('relative isolate grid', className, classNames?.root)}\n style={{\n background: backgroundCss,\n borderRadius: `${borderRadius}px`,\n transform: 'translate3d(0, 0, 0.01px)',\n }}\n >\n {/* mesh gradient border */}\n <div\n className=\"absolute inset-0 -z-1 rounded-[inherit]\"\n style={{\n border: '1px solid transparent',\n background: [\n `linear-gradient(${backgroundCss} 0 100%) padding-box`,\n 'linear-gradient(rgb(255 255 255 / 0%) 0% 100%) border-box',\n ...borderBg,\n ].join(', '),\n opacity: borderOpacity,\n maskImage: `conic-gradient(from ${angleDeg} at center, black ${coneSpread}%, transparent ${coneSpread + 15}%, transparent ${100 - coneSpread - 15}%, black ${100 - coneSpread}%)`,\n WebkitMaskImage: `conic-gradient(from ${angleDeg} at center, black ${coneSpread}%, transparent ${coneSpread + 15}%, transparent ${100 - coneSpread - 15}%, black ${100 - coneSpread}%)`,\n transition: isVisible ? 'opacity 0.25s ease-out' : 'opacity 0.75s ease-in-out',\n }}\n />\n\n {/* mesh gradient fill near edges */}\n <div\n className=\"absolute inset-0 -z-1 rounded-[inherit]\"\n style={{\n border: '1px solid transparent',\n background: fillBg.join(', '),\n maskImage: [\n 'linear-gradient(to bottom, black, black)',\n 'radial-gradient(ellipse at 50% 50%, black 40%, transparent 65%)',\n 'radial-gradient(ellipse at 66% 66%, black 5%, transparent 40%)',\n 'radial-gradient(ellipse at 33% 33%, black 5%, transparent 40%)',\n 'radial-gradient(ellipse at 66% 33%, black 5%, transparent 40%)',\n 'radial-gradient(ellipse at 33% 66%, black 5%, transparent 40%)',\n `conic-gradient(from ${angleDeg} at center, transparent 5%, black 15%, black 85%, transparent 95%)`,\n ].join(', '),\n WebkitMaskImage: [\n 'linear-gradient(to bottom, black, black)',\n 'radial-gradient(ellipse at 50% 50%, black 40%, transparent 65%)',\n 'radial-gradient(ellipse at 66% 66%, black 5%, transparent 40%)',\n 'radial-gradient(ellipse at 33% 33%, black 5%, transparent 40%)',\n 'radial-gradient(ellipse at 66% 33%, black 5%, transparent 40%)',\n 'radial-gradient(ellipse at 33% 66%, black 5%, transparent 40%)',\n `conic-gradient(from ${angleDeg} at center, transparent 5%, black 15%, black 85%, transparent 95%)`,\n ].join(', '),\n maskComposite: 'subtract, add, add, add, add, add',\n WebkitMaskComposite: 'source-out, source-over, source-over, source-over, source-over, source-over',\n opacity: borderOpacity * fillOpacity,\n mixBlendMode: 'soft-light',\n transition: isVisible ? 'opacity 0.25s ease-out' : 'opacity 0.75s ease-in-out',\n } as React.CSSProperties}\n />\n\n {/* outer glow */}\n <span\n className=\"pointer-events-none absolute z-1 rounded-[inherit]\"\n style={{\n inset: `${-glowRadius}px`,\n maskImage: `conic-gradient(from ${angleDeg} at center, black 2.5%, transparent 10%, transparent 90%, black 97.5%)`,\n WebkitMaskImage: `conic-gradient(from ${angleDeg} at center, black 2.5%, transparent 10%, transparent 90%, black 97.5%)`,\n opacity: glowOpacity,\n mixBlendMode: 'plus-lighter',\n transition: isVisible ? 'opacity 0.25s ease-out' : 'opacity 0.75s ease-in-out',\n } as React.CSSProperties}\n >\n <span\n className=\"absolute rounded-[inherit]\"\n style={{\n inset: `${glowRadius}px`,\n boxShadow: buildBoxShadow(glowColor, glowIntensity),\n }}\n />\n </span>\n\n <div className={cn('relative z-1 flex flex-col overflow-auto', classNames?.content)}>\n {children}\n </div>\n </div>\n );\n};\n","import { cn } from '@digo-labs/common';\n\nimport { CSSProperties } from 'react';\nimport { motion, Transition } from 'motion/react';\n\nexport type BorderTrailProps = {\n className?: string;\n size?: number;\n transition?: Transition;\n onAnimationComplete?: () => void;\n style?: CSSProperties;\n};\n\nexport function BorderTrail(properties: BorderTrailProps) {\n const {\n className,\n size = 60,\n transition,\n onAnimationComplete,\n style,\n } = properties;\n\n const defaultTransition: Transition = {\n repeat: Infinity,\n duration: 5,\n ease: 'linear',\n };\n\n return (\n <div className=\"pointer-events-none absolute inset-0 rounded-[inherit] border border-transparent mask-[linear-gradient(transparent,transparent),linear-gradient(#000,#000)] mask-intersect [mask-clip:padding-box,border-box]\">\n <motion.div\n className={cn('absolute aspect-square bg-zinc-500', className)}\n style={{\n width: size,\n offsetPath: `rect(0 auto auto 0 round ${size}px)`,\n ...style,\n }}\n animate={{\n offsetDistance: ['0%', '100%'],\n }}\n transition={transition || defaultTransition}\n onAnimationComplete={onAnimationComplete}\n />\n </div>\n );\n}\n","import { useRef, useEffect } from 'react';\nimport { Renderer, Program, Mesh, Triangle, Vec2 } from 'ogl';\nimport { cn } from '@digo-labs/common';\n\nconst vertex = `\nattribute vec2 position;\nvoid main(){gl_Position=vec4(position,0.0,1.0);}\n`;\n\nconst fragment = `\n#ifdef GL_ES\nprecision lowp float;\n#endif\nuniform vec2 uResolution;\nuniform float uTime;\nuniform float uHueShift;\nuniform float uNoise;\nuniform float uScan;\nuniform float uScanFreq;\nuniform float uWarp;\n#define iTime uTime\n#define iResolution uResolution\n\nvec4 buf[8];\nfloat rand(vec2 c){return fract(sin(dot(c,vec2(12.9898,78.233)))*43758.5453);}\n\nmat3 rgb2yiq=mat3(0.299,0.587,0.114,0.596,-0.274,-0.322,0.211,-0.523,0.312);\nmat3 yiq2rgb=mat3(1.0,0.956,0.621,1.0,-0.272,-0.647,1.0,-1.106,1.703);\n\nvec3 hueShiftRGB(vec3 col,float deg){\n vec3 yiq=rgb2yiq*col;\n float rad=radians(deg);\n float cosh=cos(rad),sinh=sin(rad);\n vec3 yiqShift=vec3(yiq.x,yiq.y*cosh-yiq.z*sinh,yiq.y*sinh+yiq.z*cosh);\n return clamp(yiq2rgb*yiqShift,0.0,1.0);\n}\n\nvec4 sigmoid(vec4 x){return 1./(1.+exp(-x));}\n\nvec4 cppn_fn(vec2 coordinate,float in0,float in1,float in2){\n buf[6]=vec4(coordinate.x,coordinate.y,0.3948333106474662+in0,0.36+in1);\n buf[7]=vec4(0.14+in2,sqrt(coordinate.x*coordinate.x+coordinate.y*coordinate.y),0.,0.);\n buf[0]=mat4(vec4(6.5404263,-3.6126034,0.7590882,-1.13613),vec4(2.4582713,3.1660357,1.2219609,0.06276096),vec4(-5.478085,-6.159632,1.8701609,-4.7742867),vec4(6.039214,-5.542865,-0.90925294,3.251348))*buf[6]+mat4(vec4(0.8473259,-5.722911,3.975766,1.6522468),vec4(-0.24321538,0.5839259,-1.7661959,-5.350116),vec4(0.,0.,0.,0.),vec4(0.,0.,0.,0.))*buf[7]+vec4(0.21808943,1.1243913,-1.7969975,5.0294676);\n buf[1]=mat4(vec4(-3.3522482,-6.0612736,0.55641043,-4.4719114),vec4(0.8631464,1.7432913,5.643898,1.6106541),vec4(2.4941394,-3.5012043,1.7184316,6.357333),vec4(3.310376,8.209261,1.1355612,-1.165539))*buf[6]+mat4(vec4(5.24046,-13.034365,0.009859298,15.870829),vec4(2.987511,3.129433,-0.89023495,-1.6822904),vec4(0.,0.,0.,0.),vec4(0.,0.,0.,0.))*buf[7]+vec4(-5.9457836,-6.573602,-0.8812491,1.5436668);\n buf[0]=sigmoid(buf[0]);buf[1]=sigmoid(buf[1]);\n buf[2]=mat4(vec4(-15.219568,8.095543,-2.429353,-1.9381982),vec4(-5.951362,4.3115187,2.6393783,1.274315),vec4(-7.3145227,6.7297835,5.2473326,5.9411426),vec4(5.0796127,8.979051,-1.7278991,-1.158976))*buf[6]+mat4(vec4(-11.967154,-11.608155,6.1486754,11.237008),vec4(2.124141,-6.263192,-1.7050359,-0.7021966),vec4(0.,0.,0.,0.),vec4(0.,0.,0.,0.))*buf[7]+vec4(-4.17164,-3.2281182,-4.576417,-3.6401186);\n buf[3]=mat4(vec4(3.1832156,-13.738922,1.879223,3.233465),vec4(0.64300746,12.768129,1.9141049,0.50990224),vec4(-0.049295485,4.4807224,1.4733979,1.801449),vec4(5.0039253,13.000481,3.3991797,-4.5561905))*buf[6]+mat4(vec4(-0.1285731,7.720628,-3.1425676,4.742367),vec4(0.6393625,3.714393,-0.8108378,-0.39174938),vec4(0.,0.,0.,0.),vec4(0.,0.,0.,0.))*buf[7]+vec4(-1.1811101,-21.621881,0.7851888,1.2329718);\n buf[2]=sigmoid(buf[2]);buf[3]=sigmoid(buf[3]);\n buf[4]=mat4(vec4(5.214916,-7.183024,2.7228765,2.6592617),vec4(-5.601878,-25.3591,4.067988,0.4602802),vec4(-10.57759,24.286327,21.102104,37.546658),vec4(4.3024497,-1.9625226,2.3458803,-1.372816))*buf[0]+mat4(vec4(-17.6526,-10.507558,2.2587414,12.462782),vec4(6.265566,-502.75443,-12.642513,0.9112289),vec4(-10.983244,20.741234,-9.701768,-0.7635988),vec4(5.383626,1.4819539,-4.1911616,-4.8444734))*buf[1]+mat4(vec4(12.785233,-16.345072,-0.39901125,1.7955981),vec4(-30.48365,-1.8345358,1.4542528,-1.1118771),vec4(19.872723,-7.337935,-42.941723,-98.52709),vec4(8.337645,-2.7312303,-2.2927687,-36.142323))*buf[2]+mat4(vec4(-16.298317,3.5471997,-0.44300047,-9.444417),vec4(57.5077,-35.609753,16.163465,-4.1534753),vec4(-0.07470326,-3.8656476,-7.0901804,3.1523974),vec4(-12.559385,-7.077619,1.490437,-0.8211543))*buf[3]+vec4(-7.67914,15.927437,1.3207729,-1.6686112);\n buf[5]=mat4(vec4(-1.4109162,-0.372762,-3.770383,-21.367174),vec4(-6.2103205,-9.35908,0.92529047,8.82561),vec4(11.460242,-22.348068,13.625772,-18.693201),vec4(-0.3429052,-3.9905605,-2.4626114,-0.45033523))*buf[0]+mat4(vec4(7.3481627,-4.3661838,-6.3037653,-3.868115),vec4(1.5462853,6.5488915,1.9701879,-0.58291394),vec4(6.5858274,-2.2180402,3.7127688,-1.3730392),vec4(-5.7973905,10.134961,-2.3395722,-5.965605))*buf[1]+mat4(vec4(-2.5132585,-6.6685553,-1.4029363,-0.16285264),vec4(-0.37908727,0.53738135,4.389061,-1.3024765),vec4(-0.70647055,2.0111287,-5.1659346,-3.728635),vec4(-13.562562,10.487719,-0.9173751,-2.6487076))*buf[2]+mat4(vec4(-8.645013,6.5546675,-6.3944063,-5.5933375),vec4(-0.57783127,-1.077275,36.91025,5.736769),vec4(14.283112,3.7146652,7.1452246,-4.5958776),vec4(2.7192075,3.6021907,-4.366337,-2.3653464))*buf[3]+vec4(-5.9000807,-4.329569,1.2427121,8.59503);\n buf[4]=sigmoid(buf[4]);buf[5]=sigmoid(buf[5]);\n buf[6]=mat4(vec4(-1.61102,0.7970257,1.4675229,0.20917463),vec4(-28.793737,-7.1390953,1.5025433,4.656581),vec4(-10.94861,39.66238,0.74318546,-10.095605),vec4(-0.7229728,-1.5483948,0.7301322,2.1687684))*buf[0]+mat4(vec4(3.2547753,21.489103,-1.0194173,-3.3100595),vec4(-3.7316632,-3.3792162,-7.223193,-0.23685838),vec4(13.1804495,0.7916005,5.338587,5.687114),vec4(-4.167605,-17.798311,-6.815736,-1.6451967))*buf[1]+mat4(vec4(0.604885,-7.800309,-7.213122,-2.741014),vec4(-3.522382,-0.12359311,-0.5258442,0.43852118),vec4(9.6752825,-22.853785,2.062431,0.099892326),vec4(-4.3196306,-17.730087,2.5184598,5.30267))*buf[2]+mat4(vec4(-6.545563,-15.790176,-6.0438633,-5.415399),vec4(-43.591583,28.551912,-16.00161,18.84728),vec4(4.212382,8.394307,3.0958717,8.657522),vec4(-5.0237565,-4.450633,-4.4768,-5.5010443))*buf[3]+mat4(vec4(1.6985557,-67.05806,6.897715,1.9004834),vec4(1.8680354,2.3915145,2.5231109,4.081538),vec4(11.158006,1.7294737,2.0738268,7.386411),vec4(-4.256034,-306.24686,8.258898,-17.132736))*buf[4]+mat4(vec4(1.6889864,-4.5852966,3.8534803,-6.3482175),vec4(1.3543309,-1.2640043,9.932754,2.9079645),vec4(-5.2770967,0.07150358,-0.13962056,3.3269649),vec4(28.34703,-4.918278,6.1044083,4.085355))*buf[5]+vec4(6.6818056,12.522166,-3.7075126,-4.104386);\n buf[7]=mat4(vec4(-8.265602,-4.7027016,5.098234,0.7509808),vec4(8.6507845,-17.15949,16.51939,-8.884479),vec4(-4.036479,-2.3946867,-2.6055532,-1.9866527),vec4(-2.2167742,-1.8135649,-5.9759874,4.8846445))*buf[0]+mat4(vec4(6.7790847,3.5076547,-2.8191125,-2.7028968),vec4(-5.743024,-0.27844876,1.4958696,-5.0517144),vec4(13.122226,15.735168,-2.9397483,-4.101023),vec4(-14.375265,-5.030483,-6.2599335,2.9848232))*buf[1]+mat4(vec4(4.0950394,-0.94011575,-5.674733,4.755022),vec4(4.3809423,4.8310084,1.7425908,-3.437416),vec4(2.117492,0.16342592,-104.56341,16.949184),vec4(-5.22543,-2.994248,3.8350096,-1.9364246))*buf[2]+mat4(vec4(-5.900337,1.7946124,-13.604192,-3.8060522),vec4(6.6583457,31.911177,25.164474,91.81147),vec4(11.840538,4.1503043,-0.7314397,6.768467),vec4(-6.3967767,4.034772,6.1714606,-0.32874924))*buf[3]+mat4(vec4(3.4992442,-196.91893,-8.923708,2.8142626),vec4(3.4806502,-3.1846354,5.1725626,5.1804223),vec4(-2.4009497,15.585794,1.2863957,2.0252278),vec4(-71.25271,-62.441242,-8.138444,0.50670296))*buf[4]+mat4(vec4(-12.291733,-11.176166,-7.3474145,4.390294),vec4(10.805477,5.6337385,-0.9385842,-4.7348723),vec4(-12.869276,-7.039391,5.3029537,7.5436664),vec4(1.4593618,8.91898,3.5101583,5.840625))*buf[5]+vec4(2.2415268,-6.705987,-0.98861027,-2.117676);\n buf[6]=sigmoid(buf[6]);buf[7]=sigmoid(buf[7]);\n buf[0]=mat4(vec4(1.6794263,1.3817469,2.9625452,0.),vec4(-1.8834411,-1.4806935,-3.5924516,0.),vec4(-1.3279216,-1.0918057,-2.3124623,0.),vec4(0.2662234,0.23235129,0.44178495,0.))*buf[0]+mat4(vec4(-0.6299101,-0.5945583,-0.9125601,0.),vec4(0.17828953,0.18300213,0.18182953,0.),vec4(-2.96544,-2.5819945,-4.9001055,0.),vec4(1.4195864,1.1868085,2.5176322,0.))*buf[1]+mat4(vec4(-1.2584374,-1.0552157,-2.1688404,0.),vec4(-0.7200217,-0.52666044,-1.438251,0.),vec4(0.15345335,0.15196142,0.272854,0.),vec4(0.945728,0.8861938,1.2766753,0.))*buf[2]+mat4(vec4(-2.4218085,-1.968602,-4.35166,0.),vec4(-22.683098,-18.0544,-41.954372,0.),vec4(0.63792,0.5470648,1.1078634,0.),vec4(-1.5489894,-1.3075932,-2.6444845,0.))*buf[3]+mat4(vec4(-0.49252132,-0.39877754,-0.91366625,0.),vec4(0.95609266,0.7923952,1.640221,0.),vec4(0.30616966,0.15693925,0.8639857,0.),vec4(1.1825981,0.94504964,2.176963,0.))*buf[4]+mat4(vec4(0.35446745,0.3293795,0.59547555,0.),vec4(-0.58784515,-0.48177817,-1.0614829,0.),vec4(2.5271258,1.9991658,4.6846647,0.),vec4(0.13042648,0.08864098,0.30187556,0.))*buf[5]+mat4(vec4(-1.7718065,-1.4033192,-3.3355875,0.),vec4(3.1664357,2.638297,5.378702,0.),vec4(-3.1724713,-2.6107926,-5.549295,0.),vec4(-2.851368,-2.249092,-5.3013067,0.))*buf[6]+mat4(vec4(1.5203838,1.2212278,2.8404984,0.),vec4(1.5210563,1.2651345,2.683903,0.),vec4(2.9789467,2.4364579,5.2347264,0.),vec4(2.2270417,1.8825914,3.8028636,0.))*buf[7]+vec4(-1.5468478,-3.6171484,0.24762098,0.);\n buf[0]=sigmoid(buf[0]);\n return vec4(buf[0].x,buf[0].y,buf[0].z,1.);\n}\n\nvoid mainImage(out vec4 fragColor,in vec2 fragCoord){\n vec2 uv=fragCoord/uResolution.xy*2.-1.;\n uv.y*=-1.;\n uv+=uWarp*vec2(sin(uv.y*6.283+uTime*0.5),cos(uv.x*6.283+uTime*0.5))*0.05;\n fragColor=cppn_fn(uv,0.1*sin(0.3*uTime),0.1*sin(0.69*uTime),0.1*sin(0.44*uTime));\n}\n\nvoid main(){\n vec4 col;mainImage(col,gl_FragCoord.xy);\n col.rgb=hueShiftRGB(col.rgb,uHueShift);\n float scanline_val=sin(gl_FragCoord.y*uScanFreq)*0.5+0.5;\n col.rgb*=1.-(scanline_val*scanline_val)*uScan;\n col.rgb+=(rand(gl_FragCoord.xy+uTime)-0.5)*uNoise;\n gl_FragColor=vec4(clamp(col.rgb,0.0,1.0),1.0);\n}\n`;\n\ninterface Properties {\n hueShift?: number;\n noiseIntensity?: number;\n scanlineIntensity?: number;\n speed?: number;\n scanlineFrequency?: number;\n warpAmount?: number;\n resolutionScale?: number;\n className?: string;\n};\n\nexport function DarkVeil(properties: Properties) {\n const {\n hueShift = 0,\n noiseIntensity = 0,\n scanlineIntensity = 0,\n speed = 0.5,\n scanlineFrequency = 0,\n warpAmount = 0,\n resolutionScale = 1,\n className,\n } = properties;\n\n const ref = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n const canvas = ref.current as HTMLCanvasElement;\n const parent = canvas.parentElement as HTMLElement;\n\n const renderer = new Renderer({\n dpr: Math.min(window.devicePixelRatio, 2),\n canvas,\n });\n\n const gl = renderer.gl;\n const geometry = new Triangle(gl);\n\n const program = new Program(gl, {\n vertex,\n fragment,\n uniforms: {\n uTime: { value: 0 },\n uResolution: { value: new Vec2() },\n uHueShift: { value: hueShift },\n uNoise: { value: noiseIntensity },\n uScan: { value: scanlineIntensity },\n uScanFreq: { value: scanlineFrequency },\n uWarp: { value: warpAmount },\n },\n });\n\n const mesh = new Mesh(gl, { geometry, program });\n\n const resize = () => {\n const w = parent.clientWidth,\n h = parent.clientHeight;\n renderer.setSize(w * resolutionScale, h * resolutionScale);\n program.uniforms.uResolution.value.set(w, h);\n };\n\n window.addEventListener('resize', resize);\n resize();\n\n const start = performance.now();\n let frame = 0;\n\n const loop = () => {\n program.uniforms.uTime.value = ((performance.now() - start) / 1000) * speed;\n program.uniforms.uHueShift.value = hueShift;\n program.uniforms.uNoise.value = noiseIntensity;\n program.uniforms.uScan.value = scanlineIntensity;\n program.uniforms.uScanFreq.value = scanlineFrequency;\n program.uniforms.uWarp.value = warpAmount;\n renderer.render({ scene: mesh });\n frame = requestAnimationFrame(loop);\n };\n\n loop();\n\n return () => {\n cancelAnimationFrame(frame);\n window.removeEventListener('resize', resize);\n };\n }, [hueShift, noiseIntensity, scanlineIntensity, speed, scanlineFrequency, warpAmount, resolutionScale]);\n return <canvas ref={ref} className={cn('block h-full w-full', className)} />;\n}\n","import { cn } from '@digo-labs/common';\nimport { type Color, parseColor } from '..';\nimport { useEffect, useRef } from 'react';\nimport gsap from 'gsap';\n\nimport {\n Scene,\n OrthographicCamera,\n WebGLRenderer,\n PlaneGeometry,\n Mesh,\n ShaderMaterial,\n Vector2,\n Vector3,\n} from 'three';\n\nconst vertexShader = `\nprecision highp float;\n\nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n`;\n\nconst fragmentShader = `\nprecision highp float;\n\nuniform float uProgress;\nuniform vec3 uColor;\nuniform float uNoiseScale;\nuniform float uEdgeSoftness;\nuniform float uAdaptiveSoftness;\nuniform float uDisplacementStrength;\nuniform float uNoiseSpeed;\nuniform float uTime;\nuniform vec2 uResolution;\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec2 mod289(vec2 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec3 permute(vec3 x) { return mod289(((x * 34.0) + 1.0) * x); }\n\nfloat snoise(vec2 v) {\n const vec4 C = vec4(\n 0.211324865405187,\n 0.366025403784439,\n -0.577350269189626,\n 0.024390243902439\n );\n\n vec2 i = floor(v + dot(v, C.yy));\n vec2 x0 = v - i + dot(i, C.xx);\n\n vec2 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n i = mod289(i);\n vec3 p = permute(permute(i.y + vec3(0.0, i1.y, 1.0)) + i.x + vec3(0.0, i1.x, 1.0));\n\n vec3 m = max(0.5 - vec3(dot(x0, x0), dot(x12.xy, x12.xy), dot(x12.zw, x12.zw)), 0.0);\n m = m * m;\n m = m * m;\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n m *= 1.79284291400159 - 0.85373472095314 * (a0 * a0 + h * h);\n\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n\n return 130.0 * dot(m, g);\n}\n\nfloat fbm(vec2 uv, float time) {\n float timeOffset = time * uNoiseSpeed;\n float value = 0.0;\n\n value += snoise(uv * uNoiseScale * 1.0 + vec2(0.0, timeOffset)) * 0.5;\n value += snoise(uv * uNoiseScale * 2.0 + vec2(17.3, 31.7 + timeOffset)) * 0.25;\n value += snoise(uv * uNoiseScale * 4.0 + vec2(43.1, 7.9 + timeOffset)) * 0.125;\n value += snoise(uv * uNoiseScale * 8.0 + vec2(91.2, 53.4 + timeOffset)) * 0.0625;\n\n return clamp((value / 0.9375) * 0.5 + 0.5, 0.0, 1.0);\n}\n\nvoid main() {\n vec2 uv = gl_FragCoord.xy / uResolution;\n\n float totalSoftness = uEdgeSoftness + uAdaptiveSoftness;\n float progress = uProgress * (1.0 + totalSoftness * 2.0) - totalSoftness;\n\n float threshold = fbm(uv, uTime);\n\n float edgeProximity = 1.0 - abs(threshold - progress) / (totalSoftness + 0.001);\n edgeProximity = clamp(edgeProximity, 0.0, 1.0);\n\n float displace = uDisplacementStrength * (1.0 + uAdaptiveSoftness * 3.0);\n\n vec2 displacement = vec2(\n snoise(uv * uNoiseScale * 3.0 + vec2(5.2 + uTime * uNoiseSpeed, 1.3)),\n snoise(uv * uNoiseScale * 3.0 + vec2(9.7, 4.1 + uTime * uNoiseSpeed))\n ) * edgeProximity * displace;\n\n vec2 displacedUv = uv + displacement;\n float displacedThreshold = fbm(displacedUv, uTime);\n\n float alpha = 1.0 - smoothstep(\n progress - totalSoftness,\n progress + totalSoftness,\n displacedThreshold\n );\n\n gl_FragColor = vec4(uColor, alpha);\n}\n`;\n\nfunction colorToVec3(color: Color): Vector3 {\n const rgb = color.toFormat('rgb');\n const r = rgb.getChannelValue('red');\n const g = rgb.getChannelValue('green');\n const b = rgb.getChannelValue('blue');\n\n return new Vector3(r / 255, g / 255, b / 255);\n}\n\ninterface Properties {\n dissolve: boolean;\n color?: Color;\n duration?: number;\n easing?: string;\n noiseScale?: number;\n edgeSoftness?: number;\n displacementStrength?: number;\n noiseSpeed?: number;\n onFinish?: () => void;\n className?: string;\n}\n\nexport function DissolveOverlay(properties: Properties) {\n const {\n dissolve,\n color = parseColor('#000000'),\n duration = 1.2,\n easing = 'power2.out',\n noiseScale = 4.0,\n edgeSoftness = 0.1,\n displacementStrength = 0.03,\n noiseSpeed = 1.0,\n onFinish,\n className,\n } = properties;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const progressRef = useRef({ value: 1 });\n const tweenRef = useRef<gsap.core.Tween | null>(null);\n const uniformsRef = useRef<Record<string, { value: unknown; }> | null>(null);\n const isTransitioningRef = useRef(false);\n const onFinishRef = useRef(onFinish);\n\n onFinishRef.current = onFinish;\n\n const adaptiveSoftness = Math.min(0.3 / duration, 0.3);\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const scene = new Scene();\n const camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\n camera.position.z = 1;\n\n const renderer = new WebGLRenderer({ alpha: true, premultipliedAlpha: false });\n renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));\n renderer.setClearColor(0x000000, 0);\n renderer.domElement.style.width = '100%';\n renderer.domElement.style.height = '100%';\n containerRef.current.appendChild(renderer.domElement);\n\n const uniforms = {\n uProgress: { value: 1.0 },\n uColor: { value: colorToVec3(color) },\n uNoiseScale: { value: noiseScale },\n uEdgeSoftness: { value: edgeSoftness },\n uAdaptiveSoftness: { value: adaptiveSoftness },\n uDisplacementStrength: { value: displacementStrength },\n uNoiseSpeed: { value: noiseSpeed },\n uTime: { value: 0.0 },\n uResolution: { value: new Vector2(1, 1) },\n };\n\n uniformsRef.current = uniforms;\n\n const material = new ShaderMaterial({\n uniforms,\n vertexShader,\n fragmentShader,\n transparent: true,\n depthWrite: false,\n });\n\n const geometry = new PlaneGeometry(2, 2);\n const mesh = new Mesh(geometry, material);\n\n scene.add(mesh);\n\n const setSize = () => {\n const el = containerRef.current!;\n const width = el.clientWidth || 1;\n const height = el.clientHeight || 1;\n\n renderer.setSize(width, height, false);\n\n const canvasWidth = renderer.domElement.width;\n const canvasHeight = renderer.domElement.height;\n uniforms.uResolution.value.set(canvasWidth, canvasHeight);\n };\n\n setSize();\n\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(setSize) : null;\n\n if (ro && containerRef.current) {\n ro.observe(containerRef.current);\n }\n\n let rafId: number;\n let lastTime: number = performance.now();\n\n const renderLoop = () => {\n const now = performance.now();\n const delta = (now - lastTime) / 1000;\n lastTime = now;\n\n if (isTransitioningRef.current) {\n uniforms.uTime.value += delta;\n }\n\n uniforms.uProgress.value = progressRef.current.value;\n renderer.render(scene, camera);\n rafId = requestAnimationFrame(renderLoop);\n };\n\n rafId = requestAnimationFrame(renderLoop);\n\n return () => {\n cancelAnimationFrame(rafId);\n ro?.disconnect();\n geometry.dispose();\n material.dispose();\n renderer.dispose();\n if (containerRef.current) {\n containerRef.current.removeChild(renderer.domElement);\n }\n };\n }, []);\n\n useEffect(() => {\n if (!uniformsRef.current) return;\n\n (uniformsRef.current.uColor.value as Vector3).copy(colorToVec3(color));\n\n uniformsRef.current.uNoiseScale.value = noiseScale;\n uniformsRef.current.uEdgeSoftness.value = edgeSoftness;\n uniformsRef.current.uAdaptiveSoftness.value = adaptiveSoftness;\n uniformsRef.current.uDisplacementStrength.value = displacementStrength;\n uniformsRef.current.uNoiseSpeed.value = noiseSpeed;\n }, [color, noiseScale, edgeSoftness, adaptiveSoftness, displacementStrength, noiseSpeed]);\n\n useEffect(() => {\n if (tweenRef.current) {\n tweenRef.current.kill();\n tweenRef.current = null;\n }\n\n isTransitioningRef.current = true;\n\n tweenRef.current = gsap.to(progressRef.current, {\n value: dissolve ? 0 : 1,\n duration,\n ease: easing,\n onComplete: () => {\n isTransitioningRef.current = false;\n onFinishRef.current?.();\n },\n });\n\n return () => {\n if (tweenRef.current) {\n tweenRef.current.kill();\n tweenRef.current = null;\n }\n };\n }, [dissolve, duration, easing]);\n\n return (\n <div\n ref={containerRef}\n className={cn('pointer-events-none absolute inset-0', className)}\n />\n );\n}\n","import { cn, CommonHelpers } from '@digo-labs/common';\n\nimport { useRef, useEffect, useCallback, useMemo, CSSProperties } from 'react';\n\nimport { gsap } from 'gsap';\nimport { InertiaPlugin } from 'gsap/InertiaPlugin';\n\ngsap.registerPlugin(InertiaPlugin);\n\nconst throttle = (func: (...args: any[]) => void, limit: number) => {\n let lastCall = 0;\n return function (this: any, ...args: any[]) {\n const now = performance.now();\n if (now - lastCall >= limit) {\n lastCall = now;\n func.apply(this, args);\n }\n };\n};\n\ninterface Dot {\n cx: number;\n cy: number;\n xOffset: number;\n yOffset: number;\n _inertiaApplied: boolean;\n}\n\nexport interface DotGridProperties {\n dotSize?: number;\n gap?: number;\n baseColor?: string;\n activeColor?: string;\n proximity?: number;\n speedTrigger?: number;\n shockRadius?: number;\n shockStrength?: number;\n maxSpeed?: number;\n resistance?: number;\n returnDuration?: number;\n className?: string;\n style?: CSSProperties;\n onClick?: (x: number, y: number) => void;\n onMove?: (x: number, y: number) => void;\n}\n\nexport function DotGrid(properties: DotGridProperties) {\n const {\n dotSize = 16,\n gap = 32,\n baseColor = '#5227FF',\n activeColor = '#5227FF',\n proximity = 150,\n speedTrigger = 100,\n shockRadius = 250,\n shockStrength = 5,\n maxSpeed = 5000,\n resistance = 750,\n returnDuration = 1.5,\n className = '',\n style,\n onClick,\n onMove,\n } = properties;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const dotsRef = useRef<Dot[]>([]);\n const pointerRef = useRef({\n x: 0,\n y: 0,\n vx: 0,\n vy: 0,\n speed: 0,\n lastTime: 0,\n lastX: 0,\n lastY: 0,\n });\n\n const baseRgb = useMemo(() => CommonHelpers.hexToRgb(baseColor), [baseColor]);\n const activeRgb = useMemo(() => CommonHelpers.hexToRgb(activeColor), [activeColor]);\n\n const circlePath = useMemo(() => {\n if (typeof window === 'undefined' || !window.Path2D) return null;\n\n const p = new Path2D();\n p.arc(0, 0, dotSize / 2, 0, Math.PI * 2);\n return p;\n }, [dotSize]);\n\n const buildGrid = useCallback(() => {\n const wrap = wrapperRef.current;\n const canvas = canvasRef.current;\n if (!wrap || !canvas) return;\n\n const { width, height } = wrap.getBoundingClientRect();\n const dpr = window.devicePixelRatio || 1;\n\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n const ctx = canvas.getContext('2d');\n if (ctx) ctx.scale(dpr, dpr);\n\n const cols = Math.floor((width + gap) / (dotSize + gap));\n const rows = Math.floor((height + gap) / (dotSize + gap));\n const cell = dotSize + gap;\n\n const gridW = cell * cols - gap;\n const gridH = cell * rows - gap;\n\n const extraX = width - gridW;\n const extraY = height - gridH;\n\n const startX = extraX / 2 + dotSize / 2;\n const startY = extraY / 2 + dotSize / 2;\n\n const dots: Dot[] = [];\n for (let y = 0; y < rows; y++) {\n for (let x = 0; x < cols; x++) {\n const cx = startX + x * cell;\n const cy = startY + y * cell;\n dots.push({ cx, cy, xOffset: 0, yOffset: 0, _inertiaApplied: false });\n }\n }\n dotsRef.current = dots;\n }, [dotSize, gap]);\n\n useEffect(() => {\n if (!circlePath) return;\n\n let rafId: number;\n const proxSq = proximity * proximity;\n\n const draw = () => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n const { x: px, y: py } = pointerRef.current;\n\n for (const dot of dotsRef.current) {\n const ox = dot.cx + dot.xOffset;\n const oy = dot.cy + dot.yOffset;\n const dx = dot.cx - px;\n const dy = dot.cy - py;\n const dsq = dx * dx + dy * dy;\n\n let style = baseColor;\n if (dsq <= proxSq) {\n const dist = Math.sqrt(dsq);\n const t = 1 - dist / proximity;\n const r = Math.round(baseRgb.r + (activeRgb.r - baseRgb.r) * t);\n const g = Math.round(baseRgb.g + (activeRgb.g - baseRgb.g) * t);\n const b = Math.round(baseRgb.b + (activeRgb.b - baseRgb.b) * t);\n style = `rgb(${r},${g},${b})`;\n }\n\n ctx.save();\n ctx.translate(ox, oy);\n ctx.fillStyle = style;\n ctx.fill(circlePath);\n ctx.restore();\n }\n\n rafId = requestAnimationFrame(draw);\n };\n\n draw();\n return () => cancelAnimationFrame(rafId);\n }, [proximity, baseColor, activeRgb, baseRgb, circlePath]);\n\n useEffect(() => {\n buildGrid();\n let ro: ResizeObserver | null = null;\n if ('ResizeObserver' in window) {\n ro = new ResizeObserver(buildGrid);\n if (wrapperRef.current) {\n ro.observe(wrapperRef.current);\n }\n } else {\n (window as Window).addEventListener('resize', buildGrid);\n }\n return () => {\n if (ro) ro.disconnect();\n else window.removeEventListener('resize', buildGrid);\n };\n }, [buildGrid]);\n\n useEffect(() => {\n const throttledMove = throttle(onMoveHandler, 50);\n\n window.addEventListener('mousemove', throttledMove, { passive: true });\n window.addEventListener('click', onClickHandler);\n\n return () => {\n window.removeEventListener('mousemove', throttledMove);\n window.removeEventListener('click', onClickHandler);\n };\n }, [maxSpeed, speedTrigger, proximity, resistance, returnDuration, shockRadius, shockStrength]);\n\n function onMoveHandler(e: MouseEvent) {\n const now = performance.now();\n const pr = pointerRef.current;\n const dt = pr.lastTime ? now - pr.lastTime : 16;\n const dx = e.clientX - pr.lastX;\n const dy = e.clientY - pr.lastY;\n let vx = (dx / dt) * 1000;\n let vy = (dy / dt) * 1000;\n let speed = Math.hypot(vx, vy);\n if (speed > maxSpeed) {\n const scale = maxSpeed / speed;\n vx *= scale;\n vy *= scale;\n speed = maxSpeed;\n }\n pr.lastTime = now;\n pr.lastX = e.clientX;\n pr.lastY = e.clientY;\n pr.vx = vx;\n pr.vy = vy;\n pr.speed = speed;\n\n const rect = canvasRef.current!.getBoundingClientRect();\n pr.x = e.clientX - rect.left;\n pr.y = e.clientY - rect.top;\n\n if (onMove) {\n const normalizedX = pr.x / rect.width;\n const normalizedY = pr.y / rect.height;\n\n onMove(normalizedX, normalizedY);\n }\n\n for (const dot of dotsRef.current) {\n const dist = Math.hypot(dot.cx - pr.x, dot.cy - pr.y);\n if (speed > speedTrigger && dist < proximity && !dot._inertiaApplied) {\n dot._inertiaApplied = true;\n gsap.killTweensOf(dot);\n const pushX = dot.cx - pr.x + vx * 0.005;\n const pushY = dot.cy - pr.y + vy * 0.005;\n gsap.to(dot, {\n inertia: { xOffset: pushX, yOffset: pushY, resistance },\n onComplete: () => {\n gsap.to(dot, {\n xOffset: 0,\n yOffset: 0,\n duration: returnDuration,\n ease: 'elastic.out(1,0.75)',\n });\n dot._inertiaApplied = false;\n },\n });\n }\n }\n };\n\n function onClickHandler(e: MouseEvent) {\n const rect = canvasRef.current!.getBoundingClientRect();\n const cx = e.clientX - rect.left;\n const cy = e.clientY - rect.top;\n\n if (onClick) {\n const normalizedX = cx / rect.width;\n const normalizedY = cy / rect.height;\n\n onClick(normalizedX, normalizedY);\n }\n\n for (const dot of dotsRef.current) {\n const dist = Math.hypot(dot.cx - cx, dot.cy - cy);\n if (dist < shockRadius && !dot._inertiaApplied) {\n dot._inertiaApplied = true;\n gsap.killTweensOf(dot);\n const falloff = Math.max(0, 1 - dist / shockRadius);\n const pushX = (dot.cx - cx) * shockStrength * falloff;\n const pushY = (dot.cy - cy) * shockStrength * falloff;\n gsap.to(dot, {\n inertia: { xOffset: pushX, yOffset: pushY, resistance },\n onComplete: () => {\n gsap.to(dot, {\n xOffset: 0,\n yOffset: 0,\n duration: returnDuration,\n ease: 'elastic.out(1,0.75)',\n });\n dot._inertiaApplied = false;\n },\n });\n }\n }\n };\n\n return (\n <section className={cn('relative flex h-full w-full items-center justify-center p-4', className)} style={style}>\n <div ref={wrapperRef} className=\"relative h-full w-full\">\n <canvas ref={canvasRef} className=\"pointer-events-none absolute inset-0 h-full w-full\" />\n </div>\n </section>\n );\n};\n","import { CSSProperties, ReactNode } from 'react';\n\nimport { motion } from 'motion/react';\n\nimport { cn } from '@digo-labs/common';\n\ninterface Properties {\n children: ReactNode;\n className?: string;\n contentClasses?: string;\n cursor?: boolean;\n style?: CSSProperties;\n}\n\nexport function DraggableContainer(properties: Properties) {\n const {\n children,\n className,\n contentClasses,\n style,\n cursor = false,\n } = properties;\n\n return (\n\n <motion.div\n className={cn('relative grid outline-none', cursor && 'cursor-grab active:cursor-grabbing', className)}\n whileDrag={{ scale: 1.0 }}\n whileHover={{ scale: 1.0 }}\n whileTap={{ scale: 1.0 }}\n drag={true}\n dragTransition={{\n bounceStiffness: 300,\n bounceDamping: 10,\n power: 0.3,\n }}\n dragElastic={0.3}\n dragConstraints={{ left: 0, right: 0, top: 0, bottom: 0 }}\n >\n\n <div className={cn('relative z-30 grid', contentClasses)} style={style}>\n {children}\n </div>\n </motion.div>\n\n );\n};\n","import { cn } from '@digo-labs/common';\nimport { Renderer, Program, Mesh, Color as OGLColor, Triangle } from 'ogl';\nimport { type Color, parseColor } from '..';\nimport React, { useEffect, useRef, useMemo, useCallback } from 'react';\n\ntype Vec2 = [number, number];\n\ninterface FaultyTerminalProperties extends React.HTMLAttributes<HTMLDivElement> {\n scale?: number;\n gridMul?: Vec2;\n digitSize?: number;\n timeScale?: number;\n pause?: boolean;\n scanlineIntensity?: number;\n glitchAmount?: number;\n flickerAmount?: number;\n noiseAmp?: number;\n chromaticAberration?: number;\n dither?: number | boolean;\n curvature?: number;\n tint?: Color;\n mouseReact?: boolean;\n mouseStrength?: number;\n dpr?: number;\n pageLoadAnimation?: boolean;\n brightness?: number;\n}\n\nconst vertexShader = `\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = vec4(position, 0.0, 1.0);\n}\n`;\n\nconst fragmentShader = `\nprecision mediump float;\n\nvarying vec2 vUv;\n\nuniform float iTime;\nuniform vec3 iResolution;\nuniform float uScale;\n\nuniform vec2 uGridMul;\nuniform float uDigitSize;\nuniform float uScanlineIntensity;\nuniform float uGlitchAmount;\nuniform float uFlickerAmount;\nuniform float uNoiseAmp;\nuniform float uChromaticAberration;\nuniform float uDither;\nuniform float uCurvature;\nuniform vec3 uTint;\nuniform vec2 uMouse;\nuniform float uMouseStrength;\nuniform float uUseMouse;\nuniform float uPageLoadProgress;\nuniform float uUsePageLoadAnimation;\nuniform float uBrightness;\n\nfloat time;\n\nfloat hash21(vec2 p){\n p = fract(p * 234.56);\n p += dot(p, p + 34.56);\n return fract(p.x * p.y);\n}\n\nfloat noise(vec2 p)\n{\n return sin(p.x * 10.0) * sin(p.y * (3.0 + sin(time * 0.090909))) + 0.2; \n}\n\nmat2 rotate(float angle)\n{\n float c = cos(angle);\n float s = sin(angle);\n return mat2(c, -s, s, c);\n}\n\nfloat fbm(vec2 p)\n{\n p *= 1.1;\n float f = 0.0;\n float amp = 0.5 * uNoiseAmp;\n \n mat2 modify0 = rotate(time * 0.02);\n f += amp * noise(p);\n p = modify0 * p * 2.0;\n amp *= 0.454545;\n \n mat2 modify1 = rotate(time * 0.02);\n f += amp * noise(p);\n p = modify1 * p * 2.0;\n amp *= 0.454545;\n \n mat2 modify2 = rotate(time * 0.08);\n f += amp * noise(p);\n \n return f;\n}\n\nfloat pattern(vec2 p, out vec2 q, out vec2 r) {\n vec2 offset1 = vec2(1.0);\n vec2 offset0 = vec2(0.0);\n mat2 rot01 = rotate(0.1 * time);\n mat2 rot1 = rotate(0.1);\n \n q = vec2(fbm(p + offset1), fbm(rot01 * p + offset1));\n r = vec2(fbm(rot1 * q + offset0), fbm(q + offset0));\n return fbm(p + r);\n}\n\nfloat digit(vec2 p){\n vec2 grid = uGridMul * 15.0;\n vec2 s = floor(p * grid) / grid;\n p = p * grid;\n vec2 q, r;\n float intensity = pattern(s * 0.1, q, r) * 1.3 - 0.03;\n \n if(uUseMouse > 0.5){\n vec2 mouseWorld = uMouse * uScale;\n float distToMouse = distance(s, mouseWorld);\n float mouseInfluence = exp(-distToMouse * 8.0) * uMouseStrength * 10.0;\n intensity += mouseInfluence;\n \n float ripple = sin(distToMouse * 20.0 - iTime * 5.0) * 0.1 * mouseInfluence;\n intensity += ripple;\n }\n \n if(uUsePageLoadAnimation > 0.5){\n float cellRandom = fract(sin(dot(s, vec2(12.9898, 78.233))) * 43758.5453);\n float cellDelay = cellRandom * 0.8;\n float cellProgress = clamp((uPageLoadProgress - cellDelay) / 0.2, 0.0, 1.0);\n \n float fadeAlpha = smoothstep(0.0, 1.0, cellProgress);\n intensity *= fadeAlpha;\n }\n \n p = fract(p);\n p *= uDigitSize;\n \n float px5 = p.x * 5.0;\n float py5 = (1.0 - p.y) * 5.0;\n float x = fract(px5);\n float y = fract(py5);\n \n float i = floor(py5) - 2.0;\n float j = floor(px5) - 2.0;\n float n = i * i + j * j;\n float f = n * 0.0625;\n \n float isOn = step(0.1, intensity - f);\n float brightness = isOn * (0.2 + y * 0.8) * (0.75 + x * 0.25);\n \n return step(0.0, p.x) * step(p.x, 1.0) * step(0.0, p.y) * step(p.y, 1.0) * brightness;\n}\n\nfloat onOff(float a, float b, float c)\n{\n return step(c, sin(iTime + a * cos(iTime * b))) * uFlickerAmount;\n}\n\nfloat displace(vec2 look)\n{\n float y = look.y - mod(iTime * 0.25, 1.0);\n float window = 1.0 / (1.0 + 50.0 * y * y);\n return sin(look.y * 20.0 + iTime) * 0.0125 * onOff(4.0, 2.0, 0.8) * (1.0 + cos(iTime * 60.0)) * window;\n}\n\nvec3 getColor(vec2 p){\n \n float bar = step(mod(p.y + time * 20.0, 1.0), 0.2) * 0.4 + 1.0;\n bar *= uScanlineIntensity;\n \n float displacement = displace(p);\n p.x += displacement;\n\n if (uGlitchAmount != 1.0) {\n float extra = displacement * (uGlitchAmount - 1.0);\n p.x += extra;\n }\n\n float middle = digit(p);\n \n const float off = 0.002;\n float sum = digit(p + vec2(-off, -off)) + digit(p + vec2(0.0, -off)) + digit(p + vec2(off, -off)) +\n digit(p + vec2(-off, 0.0)) + digit(p + vec2(0.0, 0.0)) + digit(p + vec2(off, 0.0)) +\n digit(p + vec2(-off, off)) + digit(p + vec2(0.0, off)) + digit(p + vec2(off, off));\n \n vec3 baseColor = vec3(0.9) * middle + sum * 0.1 * vec3(1.0) * bar;\n return baseColor;\n}\n\nvec2 barrel(vec2 uv){\n vec2 c = uv * 2.0 - 1.0;\n float r2 = dot(c, c);\n c *= 1.0 + uCurvature * r2;\n return c * 0.5 + 0.5;\n}\n\nvoid main() {\n time = iTime * 0.333333;\n vec2 uv = vUv;\n\n if(uCurvature != 0.0){\n uv = barrel(uv);\n }\n \n vec2 p = uv * uScale;\n vec3 col = getColor(p);\n\n if(uChromaticAberration != 0.0){\n vec2 ca = vec2(uChromaticAberration) / iResolution.xy;\n col.r = getColor(p + ca).r;\n col.b = getColor(p - ca).b;\n }\n\n col *= uTint;\n col *= uBrightness;\n\n if(uDither > 0.0){\n float rnd = hash21(gl_FragCoord.xy);\n col += (rnd - 0.5) * (uDither * 0.003922);\n }\n\n gl_FragColor = vec4(col, 1.0);\n}\n`;\n\nfunction colorToRgb(color: Color): [number, number, number] {\n const rgb = color.toFormat('rgb');\n return [\n rgb.getChannelValue('red') / 255,\n rgb.getChannelValue('green') / 255,\n rgb.getChannelValue('blue') / 255,\n ];\n}\n\nexport function FaultyTerminal(properties: FaultyTerminalProperties) {\n const {\n scale = 1,\n gridMul = [2, 1],\n digitSize = 1.5,\n timeScale = 0.3,\n pause = false,\n scanlineIntensity = 0.3,\n glitchAmount = 1,\n flickerAmount = 1,\n noiseAmp = 1,\n chromaticAberration = 0,\n dither = 0,\n curvature = 0.2,\n tint = parseColor('#ffffff'),\n mouseReact = true,\n mouseStrength = 0.2,\n dpr = Math.min(window.devicePixelRatio || 1, 2),\n pageLoadAnimation = true,\n brightness = 1,\n className,\n style,\n ...rest\n } = properties;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const programRef = useRef<Program>(null);\n const rendererRef = useRef<Renderer>(null);\n const mouseRef = useRef({ x: 0.5, y: 0.5 });\n const smoothMouseRef = useRef({ x: 0.5, y: 0.5 });\n const frozenTimeRef = useRef(0);\n const rafRef = useRef<number>(0);\n const loadAnimationStartRef = useRef<number>(0);\n const timeOffsetRef = useRef<number>(Math.random() * 100);\n const pauseRef = useRef(pause);\n const timeScaleRef = useRef(timeScale);\n const mouseReactRef = useRef(mouseReact);\n const pageLoadAnimationRef = useRef(pageLoadAnimation);\n\n pauseRef.current = pause;\n timeScaleRef.current = timeScale;\n mouseReactRef.current = mouseReact;\n pageLoadAnimationRef.current = pageLoadAnimation;\n\n const tintVec = useMemo(() => colorToRgb(tint), [tint]);\n\n const ditherValue = useMemo(() => (typeof dither === 'boolean' ? (dither ? 1 : 0) : dither), [dither]);\n\n const handleMouseMove = useCallback((e: MouseEvent) => {\n const ctn = containerRef.current;\n if (!ctn) return;\n const rect = ctn.getBoundingClientRect();\n const x = (e.clientX - rect.left) / rect.width;\n const y = 1 - (e.clientY - rect.top) / rect.height;\n mouseRef.current = { x, y };\n }, []);\n\n useEffect(() => {\n const ctn = containerRef.current;\n if (!ctn) return;\n\n const renderer = new Renderer({ dpr });\n rendererRef.current = renderer;\n const gl = renderer.gl;\n gl.clearColor(0, 0, 0, 1);\n\n const geometry = new Triangle(gl);\n\n const program = new Program(gl, {\n vertex: vertexShader,\n fragment: fragmentShader,\n uniforms: {\n iTime: { value: 0 },\n iResolution: {\n value: new OGLColor(gl.canvas.width, gl.canvas.height, gl.canvas.width / gl.canvas.height),\n },\n uScale: { value: scale },\n uGridMul: { value: new Float32Array(gridMul) },\n uDigitSize: { value: digitSize },\n uScanlineIntensity: { value: scanlineIntensity },\n uGlitchAmount: { value: glitchAmount },\n uFlickerAmount: { value: flickerAmount },\n uNoiseAmp: { value: noiseAmp },\n uChromaticAberration: { value: chromaticAberration },\n uDither: { value: ditherValue },\n uCurvature: { value: curvature },\n uTint: { value: new OGLColor(tintVec[0], tintVec[1], tintVec[2]) },\n uMouse: { value: new Float32Array([0.5, 0.5]) },\n uMouseStrength: { value: mouseStrength },\n uUseMouse: { value: mouseReact ? 1 : 0 },\n uPageLoadProgress: { value: pageLoadAnimation ? 0 : 1 },\n uUsePageLoadAnimation: { value: pageLoadAnimation ? 1 : 0 },\n uBrightness: { value: brightness },\n },\n });\n programRef.current = program;\n\n const mesh = new Mesh(gl, { geometry, program });\n\n function resize() {\n if (!ctn || !renderer) return;\n renderer.setSize(ctn.offsetWidth, ctn.offsetHeight);\n program.uniforms.iResolution.value = new OGLColor(\n gl.canvas.width,\n gl.canvas.height,\n gl.canvas.width / gl.canvas.height,\n );\n }\n\n const resizeObserver = new ResizeObserver(() => resize());\n resizeObserver.observe(ctn);\n resize();\n\n const update = (t: number) => {\n rafRef.current = requestAnimationFrame(update);\n\n if (pageLoadAnimationRef.current && loadAnimationStartRef.current === 0) {\n loadAnimationStartRef.current = t;\n }\n\n if (!pauseRef.current) {\n const elapsed = (t * 0.001 + timeOffsetRef.current) * timeScaleRef.current;\n program.uniforms.iTime.value = elapsed;\n frozenTimeRef.current = elapsed;\n } else {\n program.uniforms.iTime.value = frozenTimeRef.current;\n }\n\n if (pageLoadAnimationRef.current && loadAnimationStartRef.current > 0) {\n const animationDuration = 2000;\n const animationElapsed = t - loadAnimationStartRef.current;\n const progress = Math.min(animationElapsed / animationDuration, 1);\n program.uniforms.uPageLoadProgress.value = progress;\n }\n\n if (mouseReactRef.current) {\n const dampingFactor = 0.08;\n const smoothMouse = smoothMouseRef.current;\n const mouse = mouseRef.current;\n smoothMouse.x += (mouse.x - smoothMouse.x) * dampingFactor;\n smoothMouse.y += (mouse.y - smoothMouse.y) * dampingFactor;\n\n const mouseUniform = program.uniforms.uMouse.value as Float32Array;\n mouseUniform[0] = smoothMouse.x;\n mouseUniform[1] = smoothMouse.y;\n }\n\n renderer.render({ scene: mesh });\n };\n rafRef.current = requestAnimationFrame(update);\n ctn.appendChild(gl.canvas);\n\n ctn.addEventListener('mousemove', handleMouseMove);\n\n return () => {\n cancelAnimationFrame(rafRef.current);\n resizeObserver.disconnect();\n ctn.removeEventListener('mousemove', handleMouseMove);\n if (gl.canvas.parentElement === ctn) ctn.removeChild(gl.canvas);\n gl.getExtension('WEBGL_lose_context')?.loseContext();\n loadAnimationStartRef.current = 0;\n timeOffsetRef.current = Math.random() * 100;\n };\n }, [dpr]);\n\n useEffect(() => {\n const u = programRef.current?.uniforms;\n if (!u) return;\n\n u.uScale.value = scale;\n u.uDigitSize.value = digitSize;\n u.uScanlineIntensity.value = scanlineIntensity;\n u.uGlitchAmount.value = glitchAmount;\n u.uFlickerAmount.value = flickerAmount;\n u.uNoiseAmp.value = noiseAmp;\n u.uChromaticAberration.value = chromaticAberration;\n u.uDither.value = ditherValue;\n u.uCurvature.value = curvature;\n u.uMouseStrength.value = mouseStrength;\n u.uUseMouse.value = mouseReact ? 1 : 0;\n u.uBrightness.value = brightness;\n\n const tintUniform = u.uTint.value as OGLColor;\n tintUniform.r = tintVec[0];\n tintUniform.g = tintVec[1];\n tintUniform.b = tintVec[2];\n\n const gridUniform = u.uGridMul.value as Float32Array;\n gridUniform[0] = gridMul[0];\n gridUniform[1] = gridMul[1];\n }, [scale, gridMul, digitSize, scanlineIntensity, glitchAmount, flickerAmount, noiseAmp, chromaticAberration, ditherValue, curvature, tintVec, mouseReact, mouseStrength, brightness]);\n\n return (\n <div ref={containerRef} className={cn('relative h-full w-full overflow-hidden', className)} style={style} {...rest} />\n );\n}\n","import { cn } from '@digo-labs/common';\nimport { useEffect, useRef } from 'react';\n\nimport { Scene, OrthographicCamera, WebGLRenderer, PlaneGeometry, Mesh, ShaderMaterial, Vector3, Vector2, Clock } from 'three';\n\nconst vertexShader = `\nprecision highp float;\n\nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n`;\n\nconst fragmentShader = `\nprecision highp float;\n\nuniform float iTime;\nuniform vec3 iResolution;\nuniform float animationSpeed;\n\nuniform bool enableTop;\nuniform bool enableMiddle;\nuniform bool enableBottom;\n\nuniform int topLineCount;\nuniform int middleLineCount;\nuniform int bottomLineCount;\n\nuniform float topLineDistance;\nuniform float middleLineDistance;\nuniform float bottomLineDistance;\n\nuniform vec3 topWavePosition;\nuniform vec3 middleWavePosition;\nuniform vec3 bottomWavePosition;\n\nuniform vec2 iMouse;\nuniform bool interactive;\nuniform float bendRadius;\nuniform float bendStrength;\nuniform float bendInfluence;\n\nuniform bool parallax;\nuniform float parallaxStrength;\nuniform vec2 parallaxOffset;\n\nuniform vec3 lineGradient[8];\nuniform int lineGradientCount;\n\nconst vec3 BLACK = vec3(0.0);\nconst vec3 PINK = vec3(233.0, 71.0, 245.0) / 255.0;\nconst vec3 BLUE = vec3(47.0, 75.0, 162.0) / 255.0;\n\nmat2 rotate(float r) {\n return mat2(cos(r), sin(r), -sin(r), cos(r));\n}\n\nvec3 background_color(vec2 uv) {\n vec3 col = vec3(0.0);\n\n float y = sin(uv.x - 0.2) * 0.3 - 0.1;\n float m = uv.y - y;\n\n col += mix(BLUE, BLACK, smoothstep(0.0, 1.0, abs(m)));\n col += mix(PINK, BLACK, smoothstep(0.0, 1.0, abs(m - 0.8)));\n return col * 0.5;\n}\n\nvec3 getLineColor(float t, vec3 baseColor) {\n if (lineGradientCount <= 0) {\n return baseColor;\n }\n\n vec3 gradientColor;\n \n if (lineGradientCount == 1) {\n gradientColor = lineGradient[0];\n } else {\n float clampedT = clamp(t, 0.0, 0.9999);\n float scaled = clampedT * float(lineGradientCount - 1);\n int idx = int(floor(scaled));\n float f = fract(scaled);\n int idx2 = min(idx + 1, lineGradientCount - 1);\n\n vec3 c1 = lineGradient[idx];\n vec3 c2 = lineGradient[idx2];\n \n gradientColor = mix(c1, c2, f);\n }\n \n return gradientColor * 0.5;\n}\n\n float wave(vec2 uv, float offset, vec2 screenUv, vec2 mouseUv, bool shouldBend) {\n float time = iTime * animationSpeed;\n\n float x_offset = offset;\n float x_movement = time * 0.1;\n float amp = sin(offset + time * 0.2) * 0.3;\n float y = sin(uv.x + x_offset + x_movement) * amp;\n\n if (shouldBend) {\n vec2 d = screenUv - mouseUv;\n float influence = exp(-dot(d, d) * bendRadius); // radial falloff around cursor\n float bendOffset = (mouseUv.y - screenUv.y) * influence * bendStrength * bendInfluence;\n y += bendOffset;\n }\n\n float m = uv.y - y;\n return 0.0175 / max(abs(m) + 0.01, 1e-3) + 0.01;\n}\n\nvoid mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 baseUv = (2.0 * fragCoord - iResolution.xy) / iResolution.y;\n baseUv.y *= -1.0;\n \n if (parallax) {\n baseUv += parallaxOffset;\n }\n\n vec3 col = vec3(0.0);\n\n vec3 b = lineGradientCount > 0 ? vec3(0.0) : background_color(baseUv);\n\n vec2 mouseUv = vec2(0.0);\n if (interactive) {\n mouseUv = (2.0 * iMouse - iResolution.xy) / iResolution.y;\n mouseUv.y *= -1.0;\n }\n \n if (enableBottom) {\n for (int i = 0; i < bottomLineCount; ++i) {\n float fi = float(i);\n float t = fi / max(float(bottomLineCount - 1), 1.0);\n vec3 lineCol = getLineColor(t, b);\n \n float angle = bottomWavePosition.z * log(length(baseUv) + 1.0);\n vec2 ruv = baseUv * rotate(angle);\n col += lineCol * wave(\n ruv + vec2(bottomLineDistance * fi + bottomWavePosition.x, bottomWavePosition.y),\n 1.5 + 0.2 * fi,\n baseUv,\n mouseUv,\n interactive\n ) * 0.2;\n }\n }\n\n if (enableMiddle) {\n for (int i = 0; i < middleLineCount; ++i) {\n float fi = float(i);\n float t = fi / max(float(middleLineCount - 1), 1.0);\n vec3 lineCol = getLineColor(t, b);\n \n float angle = middleWavePosition.z * log(length(baseUv) + 1.0);\n vec2 ruv = baseUv * rotate(angle);\n col += lineCol * wave(\n ruv + vec2(middleLineDistance * fi + middleWavePosition.x, middleWavePosition.y),\n 2.0 + 0.15 * fi,\n baseUv,\n mouseUv,\n interactive\n );\n }\n }\n\n if (enableTop) {\n for (int i = 0; i < topLineCount; ++i) {\n float fi = float(i);\n float t = fi / max(float(topLineCount - 1), 1.0);\n vec3 lineCol = getLineColor(t, b);\n \n float angle = topWavePosition.z * log(length(baseUv) + 1.0);\n vec2 ruv = baseUv * rotate(angle);\n ruv.x *= -1.0;\n col += lineCol * wave(\n ruv + vec2(topLineDistance * fi + topWavePosition.x, topWavePosition.y),\n 1.0 + 0.2 * fi,\n baseUv,\n mouseUv,\n interactive\n ) * 0.1;\n }\n }\n\n fragColor = vec4(col, 1.0);\n}\n\nvoid main() {\n vec4 color = vec4(0.0);\n mainImage(color, gl_FragCoord.xy);\n gl_FragColor = color;\n}\n`;\n\nconst MAX_GRADIENT_STOPS = 8;\n\ntype WavePosition = {\n x: number;\n y: number;\n rotate: number;\n};\n\ntype Properties = {\n linesGradient?: string[];\n enabledWaves?: Array<'top' | 'middle' | 'bottom'>;\n lineCount?: number | number[];\n lineDistance?: number | number[];\n topWavePosition?: WavePosition;\n middleWavePosition?: WavePosition;\n bottomWavePosition?: WavePosition;\n animationSpeed?: number;\n interactive?: boolean;\n bendRadius?: number;\n bendStrength?: number;\n mouseDamping?: number;\n parallax?: boolean;\n parallaxStrength?: number;\n mixBlendMode?: React.CSSProperties['mixBlendMode'];\n className?: string;\n};\n\nexport function FloatingLines(properties: Properties) {\n const {\n linesGradient,\n enabledWaves = ['top', 'middle', 'bottom'],\n lineCount = [6],\n lineDistance = [5],\n topWavePosition,\n middleWavePosition,\n bottomWavePosition = { x: 2.0, y: -0.7, rotate: -1 },\n animationSpeed = 1,\n interactive = true,\n bendRadius = 5.0,\n bendStrength = -0.5,\n mouseDamping = 0.05,\n parallax = true,\n parallaxStrength = 0.2,\n mixBlendMode = 'screen',\n className,\n } = properties;\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const targetMouseRef = useRef<Vector2>(new Vector2(-1000, -1000));\n const currentMouseRef = useRef<Vector2>(new Vector2(-1000, -1000));\n const targetInfluenceRef = useRef<number>(0);\n const currentInfluenceRef = useRef<number>(0);\n const targetParallaxRef = useRef<Vector2>(new Vector2(0, 0));\n const currentParallaxRef = useRef<Vector2>(new Vector2(0, 0));\n\n const topLineCount = enabledWaves.includes('top') ? getLineCount('top') : 0;\n const middleLineCount = enabledWaves.includes('middle') ? getLineCount('middle') : 0;\n const bottomLineCount = enabledWaves.includes('bottom') ? getLineCount('bottom') : 0;\n\n const topLineDistance = enabledWaves.includes('top') ? getLineDistance('top') * 0.01 : 0.01;\n const middleLineDistance = enabledWaves.includes('middle') ? getLineDistance('middle') * 0.01 : 0.01;\n const bottomLineDistance = enabledWaves.includes('bottom') ? getLineDistance('bottom') * 0.01 : 0.01;\n\n function getLineCount(waveType: 'top' | 'middle' | 'bottom'): number {\n if (typeof lineCount === 'number') return lineCount;\n if (!enabledWaves.includes(waveType)) return 0;\n const index = enabledWaves.indexOf(waveType);\n return lineCount[index] ?? 6;\n };\n\n function getLineDistance(waveType: 'top' | 'middle' | 'bottom'): number {\n if (typeof lineDistance === 'number') return lineDistance;\n if (!enabledWaves.includes(waveType)) return 0.1;\n const index = enabledWaves.indexOf(waveType);\n return lineDistance[index] ?? 0.1;\n };\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const scene = new Scene();\n\n const camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\n camera.position.z = 1;\n\n const renderer = new WebGLRenderer({ antialias: true, alpha: false });\n renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));\n renderer.domElement.style.width = '100%';\n renderer.domElement.style.height = '100%';\n containerRef.current.appendChild(renderer.domElement);\n\n const uniforms = {\n iTime: { value: 0 },\n iResolution: { value: new Vector3(1, 1, 1) },\n animationSpeed: { value: animationSpeed },\n\n enableTop: { value: enabledWaves.includes('top') },\n enableMiddle: { value: enabledWaves.includes('middle') },\n enableBottom: { value: enabledWaves.includes('bottom') },\n\n topLineCount: { value: topLineCount },\n middleLineCount: { value: middleLineCount },\n bottomLineCount: { value: bottomLineCount },\n\n topLineDistance: { value: topLineDistance },\n middleLineDistance: { value: middleLineDistance },\n bottomLineDistance: { value: bottomLineDistance },\n\n topWavePosition: {\n value: new Vector3(topWavePosition?.x ?? 10.0, topWavePosition?.y ?? 0.5, topWavePosition?.rotate ?? -0.4),\n },\n middleWavePosition: {\n value: new Vector3(\n middleWavePosition?.x ?? 5.0,\n middleWavePosition?.y ?? 0.0,\n middleWavePosition?.rotate ?? 0.2,\n ),\n },\n bottomWavePosition: {\n value: new Vector3(\n bottomWavePosition?.x ?? 2.0,\n bottomWavePosition?.y ?? -0.7,\n bottomWavePosition?.rotate ?? 0.4,\n ),\n },\n\n iMouse: { value: new Vector2(-1000, -1000) },\n interactive: { value: interactive },\n bendRadius: { value: bendRadius },\n bendStrength: { value: bendStrength },\n bendInfluence: { value: 0 },\n\n parallax: { value: parallax },\n parallaxStrength: { value: parallaxStrength },\n parallaxOffset: { value: new Vector2(0, 0) },\n\n lineGradient: {\n value: Array.from({ length: MAX_GRADIENT_STOPS }, () => new Vector3(1, 1, 1)),\n },\n lineGradientCount: { value: 0 },\n };\n\n if (linesGradient && linesGradient.length > 0) {\n const stops = linesGradient.slice(0, MAX_GRADIENT_STOPS);\n uniforms.lineGradientCount.value = stops.length;\n\n stops.forEach((hex, i) => {\n const color = hexToVec3(hex);\n uniforms.lineGradient.value[i].set(color.x, color.y, color.z);\n });\n }\n\n const material = new ShaderMaterial({\n uniforms,\n vertexShader,\n fragmentShader,\n });\n\n const geometry = new PlaneGeometry(2, 2);\n const mesh = new Mesh(geometry, material);\n scene.add(mesh);\n\n const clock = new Clock();\n\n const setSize = () => {\n const el = containerRef.current!;\n const width = el.clientWidth || 1;\n const height = el.clientHeight || 1;\n\n renderer.setSize(width, height, false);\n\n const canvasWidth = renderer.domElement.width;\n const canvasHeight = renderer.domElement.height;\n uniforms.iResolution.value.set(canvasWidth, canvasHeight, 1);\n };\n\n setSize();\n\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(setSize) : null;\n\n if (ro && containerRef.current) {\n ro.observe(containerRef.current);\n }\n\n const handlePointerMove = (event: PointerEvent) => {\n const rect = renderer.domElement.getBoundingClientRect();\n const x = event.clientX - rect.left;\n const y = event.clientY - rect.top;\n const dpr = renderer.getPixelRatio();\n\n targetMouseRef.current.set(x * dpr, (rect.height - y) * dpr);\n targetInfluenceRef.current = 1.0;\n\n if (parallax) {\n const centerX = rect.width / 2;\n const centerY = rect.height / 2;\n const offsetX = (x - centerX) / rect.width;\n const offsetY = -(y - centerY) / rect.height;\n targetParallaxRef.current.set(offsetX * parallaxStrength, offsetY * parallaxStrength);\n }\n };\n\n const handlePointerLeave = () => {\n targetInfluenceRef.current = 0.0;\n };\n\n if (interactive) {\n renderer.domElement.addEventListener('pointermove', handlePointerMove);\n renderer.domElement.addEventListener('pointerleave', handlePointerLeave);\n }\n\n let raf = 0;\n const renderLoop = () => {\n uniforms.iTime.value = clock.getElapsedTime();\n\n if (interactive) {\n currentMouseRef.current.lerp(targetMouseRef.current, mouseDamping);\n uniforms.iMouse.value.copy(currentMouseRef.current);\n\n currentInfluenceRef.current += (targetInfluenceRef.current - currentInfluenceRef.current) * mouseDamping;\n uniforms.bendInfluence.value = currentInfluenceRef.current;\n }\n\n if (parallax) {\n currentParallaxRef.current.lerp(targetParallaxRef.current, mouseDamping);\n uniforms.parallaxOffset.value.copy(currentParallaxRef.current);\n }\n\n renderer.render(scene, camera);\n raf = requestAnimationFrame(renderLoop);\n };\n renderLoop();\n\n return () => {\n cancelAnimationFrame(raf);\n if (ro && containerRef.current) {\n ro.disconnect();\n }\n\n if (interactive) {\n renderer.domElement.removeEventListener('pointermove', handlePointerMove);\n renderer.domElement.removeEventListener('pointerleave', handlePointerLeave);\n }\n\n geometry.dispose();\n material.dispose();\n renderer.dispose();\n if (renderer.domElement.parentElement) {\n renderer.domElement.parentElement.removeChild(renderer.domElement);\n }\n };\n }, [\n linesGradient,\n enabledWaves,\n lineCount,\n lineDistance,\n topWavePosition,\n middleWavePosition,\n bottomWavePosition,\n animationSpeed,\n interactive,\n bendRadius,\n bendStrength,\n mouseDamping,\n parallax,\n parallaxStrength,\n ]);\n\n return (\n <div\n ref={containerRef}\n className={cn('floating-lines-container relative h-full w-full overflow-hidden', className)}\n style={{\n mixBlendMode: mixBlendMode,\n }}\n />\n );\n}\n\nfunction hexToVec3(hex: string): Vector3 {\n let value = hex.trim();\n\n if (value.startsWith('#')) {\n value = value.slice(1);\n }\n\n let r = 255;\n let g = 255;\n let b = 255;\n\n if (value.length === 3) {\n r = parseInt(value[0] + value[0], 16);\n g = parseInt(value[1] + value[1], 16);\n b = parseInt(value[2] + value[2], 16);\n } else if (value.length === 6) {\n r = parseInt(value.slice(0, 2), 16);\n g = parseInt(value.slice(2, 4), 16);\n b = parseInt(value.slice(4, 6), 16);\n }\n\n return new Vector3(r / 255, g / 255, b / 255);\n}\n","import { ReactNode } from 'react';\n\nimport { cn } from '@digo-labs/common';\n\ninterface Properties {\n borderRadiusPx?: number;\n blurIntensity?: 'sm' | 'md' | 'lg' | 'xl';\n glowIntensity?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n shadowIntensity?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n contentClasses?: string;\n className?: string;\n children: ReactNode;\n onClick?: () => void;\n}\n\nexport function GlassContainer(properties: Properties) {\n const {\n children,\n className,\n contentClasses,\n borderRadiusPx = 32,\n blurIntensity = 'xl',\n glowIntensity = 'sm',\n shadowIntensity = 'md',\n onClick,\n } = properties;\n\n const borderRadius = `${borderRadiusPx}px`;\n\n return (\n <>\n {/* Hidden SVG Filter */}\n <svg className=\"hidden\">\n <defs>\n <filter\n id=\"glass-blur\"\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n filterUnits=\"objectBoundingBox\"\n >\n <feTurbulence\n type=\"fractalNoise\"\n baseFrequency=\"0.003 0.007\"\n numOctaves=\"1\"\n result=\"turbulence\"\n />\n\n <feDisplacementMap\n in=\"SourceGraphic\"\n in2=\"turbulence\"\n scale=\"200\"\n xChannelSelector=\"R\"\n yChannelSelector=\"G\"\n />\n </filter>\n </defs>\n </svg>\n\n <div className={cn('relative size-full grid outline-none', className)} style={{ borderRadius }}>\n\n {/* Bend Layer (Backdrop blur with distortion) */}\n <div className={cn('absolute inset-0 z-0', blurClasses[blurIntensity])} style={{ borderRadius, filter: 'url(#glass-blur)' }} />\n\n {/* Face Layer (Main shadow and glow) */}\n <div className=\"absolute inset-0 z-10\" style={{ borderRadius, boxShadow: glowStyles[glowIntensity] }} />\n\n {/* Edge Layer (Inner highlights) */}\n <div className=\"absolute inset-0 z-20\" style={{ borderRadius, boxShadow: shadowStyles[shadowIntensity] }} />\n\n <div className={cn('relative z-30 grid', contentClasses)}onClick={onClick}>\n {children}\n </div>\n\n </div>\n </>\n );\n};\n\nconst blurClasses = {\n sm: 'backdrop-blur-sm',\n md: 'backdrop-blur-md',\n lg: 'backdrop-blur-lg',\n xl: 'backdrop-blur-xl',\n};\n\nconst shadowStyles = {\n 'none': 'inset 0 0 0 0 rgba(255, 255, 255, 0)',\n 'xs': 'inset 1px 1px 1px 0 rgba(255, 255, 255, 0.3), inset -1px -1px 1px 0 rgba(255, 255, 255, 0.3)',\n 'sm': 'inset 2px 2px 2px 0 rgba(255, 255, 255, 0.35), inset -2px -2px 2px 0 rgba(255, 255, 255, 0.35)',\n 'md': 'inset 3px 3px 3px 0 rgba(255, 255, 255, 0.45), inset -3px -3px 3px 0 rgba(255, 255, 255, 0.45)',\n 'lg': 'inset 4px 4px 4px 0 rgba(255, 255, 255, 0.5), inset -4px -4px 4px 0 rgba(255, 255, 255, 0.5)',\n 'xl': 'inset 6px 6px 6px 0 rgba(255, 255, 255, 0.55), inset -6px -6px 6px 0 rgba(255, 255, 255, 0.55)',\n '2xl': 'inset 8px 8px 8px 0 rgba(255, 255, 255, 0.6), inset -8px -8px 8px 0 rgba(255, 255, 255, 0.6)',\n};\n\nconst glowStyles = {\n 'none': '0 4px 4px rgba(0, 0, 0, 0.05), 0 0 12px rgba(0, 0, 0, 0.05)',\n 'xs': '0 4px 4px rgba(0, 0, 0, 0.15), 0 0 12px rgba(0, 0, 0, 0.08), 0 0 16px rgba(255, 255, 255, 0.05)',\n 'sm': '0 4px 4px rgba(0, 0, 0, 0.15), 0 0 12px rgba(0, 0, 0, 0.08), 0 0 24px rgba(255, 255, 255, 0.1)',\n 'md': '0 4px 4px rgba(0, 0, 0, 0.15), 0 0 12px rgba(0, 0, 0, 0.08), 0 0 32px rgba(255, 255, 255, 0.15)',\n 'lg': '0 4px 4px rgba(0, 0, 0, 0.15), 0 0 12px rgba(0, 0, 0, 0.08), 0 0 40px rgba(255, 255, 255, 0.2)',\n 'xl': '0 4px 4px rgba(0, 0, 0, 0.15), 0 0 12px rgba(0, 0, 0, 0.08), 0 0 48px rgba(255, 255, 255, 0.25)',\n '2xl': '0 4px 4px rgba(0, 0, 0, 0.15), 0 0 12px rgba(0, 0, 0, 0.08), 0 0 60px rgba(255, 255, 255, 0.3)',\n};\n","import { cn } from '@digo-labs/common';\nimport { type Color, parseColor } from '..';\n\nimport { useEffect, useRef } from 'react';\nimport { Renderer, Program, Mesh, Triangle } from 'ogl';\n\nfunction colorToRgb(color: Color): [number, number, number] {\n const rgb = color.toFormat('rgb');\n return [\n rgb.getChannelValue('red') / 255,\n rgb.getChannelValue('green') / 255,\n rgb.getChannelValue('blue') / 255,\n ];\n}\n\nconst vertex = `#version 300 es\nin vec2 position;\nvoid main() {\n gl_Position = vec4(position, 0.0, 1.0);\n}\n`;\n\nconst fragment = `#version 300 es\nprecision highp float;\nuniform vec2 iResolution;\nuniform float iTime;\nuniform float uTimeSpeed;\nuniform float uColorBalance;\nuniform float uWarpStrength;\nuniform float uWarpFrequency;\nuniform float uWarpSpeed;\nuniform float uWarpAmplitude;\nuniform float uBlendAngle;\nuniform float uBlendSoftness;\nuniform float uRotationAmount;\nuniform float uNoiseScale;\nuniform float uGrainAmount;\nuniform float uGrainScale;\nuniform float uGrainAnimated;\nuniform float uContrast;\nuniform float uGamma;\nuniform float uSaturation;\nuniform vec2 uCenterOffset;\nuniform float uZoom;\nuniform vec3 uColor1;\nuniform vec3 uColor2;\nuniform vec3 uColor3;\nout vec4 fragColor;\n#define S(a,b,t) smoothstep(a,b,t)\nmat2 Rot(float a){float s=sin(a),c=cos(a);return mat2(c,-s,s,c);} \nvec2 hash(vec2 p){p=vec2(dot(p,vec2(2127.1,81.17)),dot(p,vec2(1269.5,283.37)));return fract(sin(p)*43758.5453);} \nfloat noise(vec2 p){vec2 i=floor(p),f=fract(p),u=f*f*(3.0-2.0*f);float n=mix(mix(dot(-1.0+2.0*hash(i+vec2(0.0,0.0)),f-vec2(0.0,0.0)),dot(-1.0+2.0*hash(i+vec2(1.0,0.0)),f-vec2(1.0,0.0)),u.x),mix(dot(-1.0+2.0*hash(i+vec2(0.0,1.0)),f-vec2(0.0,1.0)),dot(-1.0+2.0*hash(i+vec2(1.0,1.0)),f-vec2(1.0,1.0)),u.x),u.y);return 0.5+0.5*n;}\nvoid mainImage(out vec4 o, vec2 C){\n float t=iTime*uTimeSpeed;\n vec2 uv=C/iResolution.xy;\n float ratio=iResolution.x/iResolution.y;\n vec2 tuv=uv-0.5+uCenterOffset;\n tuv/=max(uZoom,0.001);\n\n float degree=noise(vec2(t*0.1,tuv.x*tuv.y)*uNoiseScale);\n tuv.y*=1.0/ratio;\n tuv*=Rot(radians((degree-0.5)*uRotationAmount+180.0));\n tuv.y*=ratio;\n\n float frequency=uWarpFrequency;\n float ws=max(uWarpStrength,0.001);\n float amplitude=uWarpAmplitude/ws;\n float warpTime=t*uWarpSpeed;\n tuv.x+=sin(tuv.y*frequency+warpTime)/amplitude;\n tuv.y+=sin(tuv.x*(frequency*1.5)+warpTime)/(amplitude*0.5);\n\n vec3 colLav=uColor1;\n vec3 colOrg=uColor2;\n vec3 colDark=uColor3;\n float b=uColorBalance;\n float s=max(uBlendSoftness,0.0);\n mat2 blendRot=Rot(radians(uBlendAngle));\n float blendX=(tuv*blendRot).x;\n float edge0=-0.3-b-s;\n float edge1=0.2-b+s;\n float v0=0.5-b+s;\n float v1=-0.3-b-s;\n vec3 layer1=mix(colDark,colOrg,S(edge0,edge1,blendX));\n vec3 layer2=mix(colOrg,colLav,S(edge0,edge1,blendX));\n vec3 col=mix(layer1,layer2,S(v0,v1,tuv.y));\n\n vec2 grainUv=uv*max(uGrainScale,0.001);\n if(uGrainAnimated>0.5){grainUv+=vec2(iTime*0.05);} \n float grain=fract(sin(dot(grainUv,vec2(12.9898,78.233)))*43758.5453);\n col+=(grain-0.5)*uGrainAmount;\n\n col=(col-0.5)*uContrast+0.5;\n float luma=dot(col,vec3(0.2126,0.7152,0.0722));\n col=mix(vec3(luma),col,uSaturation);\n col=pow(max(col,0.0),vec3(1.0/max(uGamma,0.001)));\n col=clamp(col,0.0,1.0);\n\n o=vec4(col,1.0);\n}\nvoid main(){\n vec4 o=vec4(0.0);\n mainImage(o,gl_FragCoord.xy);\n fragColor=o;\n}\n`;\n\ninterface Properties {\n timeSpeed?: number;\n colorBalance?: number;\n warpStrength?: number;\n warpFrequency?: number;\n warpSpeed?: number;\n warpAmplitude?: number;\n blendAngle?: number;\n blendSoftness?: number;\n rotationAmount?: number;\n noiseScale?: number;\n grainAmount?: number;\n grainScale?: number;\n grainAnimated?: boolean;\n contrast?: number;\n gamma?: number;\n saturation?: number;\n centerX?: number;\n centerY?: number;\n zoom?: number;\n color1?: Color;\n color2?: Color;\n color3?: Color;\n className?: string;\n}\n\nexport function Grainient(properties: Properties) {\n const {\n timeSpeed = 0.25,\n colorBalance = 0.0,\n warpStrength = 1.0,\n warpFrequency = 5.0,\n warpSpeed = 2.0,\n warpAmplitude = 50.0,\n blendAngle = 0.0,\n blendSoftness = 0.05,\n rotationAmount = 500.0,\n noiseScale = 2.0,\n grainAmount = 0.1,\n grainScale = 2.0,\n grainAnimated = false,\n contrast = 1.5,\n gamma = 1.0,\n saturation = 1.0,\n centerX = 0.0,\n centerY = 0.0,\n zoom = 0.9,\n color1 = parseColor('#FF9FFC'),\n color2 = parseColor('#5227FF'),\n color3 = parseColor('#B19EEF'),\n className = '',\n } = properties;\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const renderer = new Renderer({\n webgl: 2,\n alpha: true,\n antialias: false,\n dpr: Math.min(window.devicePixelRatio || 1, 2),\n });\n\n const gl = renderer.gl;\n const canvas = gl.canvas as HTMLCanvasElement;\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n canvas.style.display = 'block';\n\n const container = containerRef.current;\n container.appendChild(canvas);\n\n const geometry = new Triangle(gl);\n const program = new Program(gl, {\n vertex,\n fragment,\n uniforms: {\n iTime: { value: 0 },\n iResolution: { value: new Float32Array([1, 1]) },\n uTimeSpeed: { value: timeSpeed },\n uColorBalance: { value: colorBalance },\n uWarpStrength: { value: warpStrength },\n uWarpFrequency: { value: warpFrequency },\n uWarpSpeed: { value: warpSpeed },\n uWarpAmplitude: { value: warpAmplitude },\n uBlendAngle: { value: blendAngle },\n uBlendSoftness: { value: blendSoftness },\n uRotationAmount: { value: rotationAmount },\n uNoiseScale: { value: noiseScale },\n uGrainAmount: { value: grainAmount },\n uGrainScale: { value: grainScale },\n uGrainAnimated: { value: grainAnimated ? 1.0 : 0.0 },\n uContrast: { value: contrast },\n uGamma: { value: gamma },\n uSaturation: { value: saturation },\n uCenterOffset: { value: new Float32Array([centerX, centerY]) },\n uZoom: { value: zoom },\n uColor1: { value: new Float32Array(colorToRgb(color1)) },\n uColor2: { value: new Float32Array(colorToRgb(color2)) },\n uColor3: { value: new Float32Array(colorToRgb(color3)) },\n },\n });\n\n const mesh = new Mesh(gl, { geometry, program });\n\n function setSize() {\n const width = Math.max(1, container.offsetWidth);\n const height = Math.max(1, container.offsetHeight);\n renderer.setSize(width, height);\n const res = (program.uniforms.iResolution as { value: Float32Array; }).value;\n res[0] = gl.drawingBufferWidth;\n res[1] = gl.drawingBufferHeight;\n };\n\n const ro = new ResizeObserver(setSize);\n ro.observe(container);\n\n setSize();\n\n let raf = 0;\n const t0 = performance.now();\n const loop = (t: number) => {\n (program.uniforms.iTime as { value: number; }).value = (t - t0) * 0.001;\n renderer.render({ scene: mesh });\n raf = requestAnimationFrame(loop);\n };\n raf = requestAnimationFrame(loop);\n\n return () => {\n cancelAnimationFrame(raf);\n ro.disconnect();\n try {\n container.removeChild(canvas);\n } catch {\n // Ignore\n }\n };\n }, [\n timeSpeed,\n colorBalance,\n warpStrength,\n warpFrequency,\n warpSpeed,\n warpAmplitude,\n blendAngle,\n blendSoftness,\n rotationAmount,\n noiseScale,\n grainAmount,\n grainScale,\n grainAnimated,\n contrast,\n gamma,\n saturation,\n centerX,\n centerY,\n zoom,\n color1,\n color2,\n color3,\n ]);\n\n return <div ref={containerRef} className={cn('pointer-events-none absolute inset-0 overflow-hidden', className)} />;\n};\n","import gsap from 'gsap';\n\nimport { ImageTransitionType } from '..';\n\nexport type ImageTransitionEffect = (\n current: HTMLDivElement,\n currentInner: HTMLDivElement,\n next: HTMLDivElement,\n nextInner: HTMLDivElement\n) => gsap.core.Timeline;\n\nexport const animationEffects: Record<ImageTransitionType, ImageTransitionEffect> = {\n A: (current, currentInner, next, nextInner) => {\n const direction = 1;\n return gsap\n .timeline({\n defaults: {\n duration: 1.5,\n ease: 'power4.inOut',\n },\n })\n .addLabel('start', 0)\n .to(current, { yPercent: -direction * 100 }, 'start')\n .to(currentInner, { yPercent: direction * 30 }, 'start')\n .fromTo(next, { yPercent: direction * 100 }, { yPercent: 0 }, 'start')\n .fromTo(nextInner, { yPercent: -direction * 30 }, { yPercent: 0 }, 'start');\n },\n\n B: (current, currentInner, next, nextInner) => {\n const direction = 1;\n return gsap\n .timeline({\n defaults: {\n duration: 1.5,\n ease: 'power4.inOut',\n },\n })\n .addLabel('start', 0)\n .to(current, { yPercent: -direction * 100 }, 'start')\n .to(\n currentInner,\n {\n yPercent: direction * 30,\n transformOrigin: '0% 100%',\n rotation: -direction * 10,\n scaleY: 2.5,\n },\n 'start',\n )\n .fromTo(next, { yPercent: direction * 100 }, { yPercent: 0 }, 'start')\n .fromTo(\n nextInner,\n {\n transformOrigin: '0% 0%',\n yPercent: -direction * 30,\n scaleY: 2.5,\n rotation: -direction * 10,\n },\n { yPercent: 0, scaleY: 1, rotation: 0 },\n 'start',\n );\n },\n\n C: (current, currentInner, next, nextInner) => {\n const direction = 1;\n const tl = gsap\n .timeline({\n defaults: {\n duration: 1.1,\n ease: 'power2.inOut',\n },\n })\n .addLabel('start', 0)\n .to(current, { scale: 0.4 }, 'start')\n .to(currentInner, { scale: 1.5 }, 'start')\n .addLabel('middle', 'start+=0.65')\n .fromTo(\n next,\n { yPercent: direction * 100, scale: 1 },\n { duration: 1, ease: 'expo', yPercent: 0 },\n 'middle',\n )\n .fromTo(\n nextInner,\n { scale: 1.5, yPercent: -direction * 30 },\n { duration: 1.1, ease: 'expo', scale: 1, yPercent: 0 },\n 'middle',\n );\n\n gsap.set(next, { zIndex: 99 });\n return tl;\n },\n\n // Fade and slide with scale\n D: (current, _currentInner, next, nextInner) => {\n const direction = 1;\n const tl = gsap\n .timeline({\n defaults: {\n duration: 1.25,\n ease: 'power4.inOut',\n },\n })\n .addLabel('start', 0)\n .to(\n current,\n {\n duration: 0.4,\n ease: 'sine',\n scale: 0.9,\n autoAlpha: 0.2,\n },\n 'start',\n )\n .to(\n current,\n {\n yPercent: -direction * 20,\n autoAlpha: 0,\n },\n 'start+=0.1',\n )\n .fromTo(\n next,\n {\n autoAlpha: 1,\n scale: 1,\n yPercent: direction * 100,\n },\n { yPercent: 0 },\n 'start+=0.1',\n )\n .fromTo(\n nextInner,\n { yPercent: -direction * 50 },\n { yPercent: 0 },\n 'start+=0.1',\n );\n\n gsap.set(next, { zIndex: 99 });\n return tl;\n },\n\n // Scale and rotate transition\n E: (current, _currentInner, next, nextInner) => {\n const direction = 1;\n return gsap\n .timeline({\n defaults: {\n duration: 1.1,\n ease: 'power2.inOut',\n },\n })\n .addLabel('start', 0)\n .to(\n current,\n {\n scale: 0.6,\n yPercent: -direction * 90,\n rotation: direction * 20,\n autoAlpha: 0,\n },\n 'start',\n )\n .fromTo(\n next,\n {\n scale: 0.8,\n yPercent: direction * 100,\n rotation: 0,\n autoAlpha: 1,\n },\n { scale: 1, yPercent: 0 },\n 'start+=0.1',\n )\n .fromTo(nextInner, { scale: 1.1 }, { scale: 1 }, 'start+=0.1');\n },\n\n // Horizontal slide with scale\n F: (current, currentInner, next, nextInner) => {\n const direction = 1;\n return gsap\n .timeline({\n defaults: {\n duration: 1.6,\n ease: 'power3.inOut',\n },\n })\n .addLabel('start', 0)\n .to(current, { xPercent: -direction * 100 }, 'start')\n .to(\n currentInner,\n {\n transformOrigin: '100% 50%',\n scaleX: 4,\n },\n 'start',\n )\n .fromTo(next, { xPercent: direction * 100 }, { xPercent: 0 }, 'start')\n .fromTo(\n nextInner,\n {\n transformOrigin: '0% 50%',\n xPercent: -direction * 100,\n scaleX: 4,\n },\n { xPercent: 0, scaleX: 1 },\n 'start',\n );\n },\n\n // Scale from zero with brightness\n G: (current, _currentInner, next, nextInner) => {\n const direction = 1;\n const tl = gsap\n .timeline({\n defaults: {\n duration: 1.2,\n ease: 'expo',\n },\n })\n .addLabel('start', 0)\n .to(current, { ease: 'power2', autoAlpha: 0 }, 'start')\n .fromTo(\n next,\n {\n autoAlpha: 1,\n scale: 0,\n yPercent: direction * 100,\n },\n { scale: 1, yPercent: 0 },\n 'start',\n )\n .fromTo(\n nextInner,\n {\n scale: 2,\n filter: 'brightness(600%)',\n },\n { scale: 1, filter: 'brightness(100%)' },\n 'start',\n );\n\n gsap.set(next, { zIndex: 99 });\n return tl;\n },\n\n H: (current, currentInner, next, nextInner) => {\n const direction = 1;\n const tl = gsap\n .timeline()\n .addLabel('start', 0)\n .fromTo(\n next,\n {\n autoAlpha: 1,\n scale: 0.1,\n xPercent: direction * 100,\n },\n {\n duration: 0.7,\n ease: 'expo',\n scale: 0.4,\n xPercent: 0,\n },\n 'start',\n )\n .fromTo(\n nextInner,\n {\n filter: 'contrast(100%) saturate(100%)',\n transformOrigin: '100% 50%',\n scaleX: 4,\n },\n {\n duration: 0.7,\n ease: 'expo',\n scaleX: 1,\n },\n 'start',\n )\n .fromTo(\n currentInner,\n { filter: 'contrast(100%) saturate(100%)' },\n {\n duration: 0.7,\n ease: 'expo',\n filter: 'contrast(120%) saturate(140%)',\n },\n 'start',\n )\n .addLabel('middle', 'start+=0.6')\n .to(\n next,\n {\n duration: 1,\n ease: 'power4.inOut',\n scale: 1,\n },\n 'middle',\n )\n .to(\n current,\n {\n duration: 1,\n ease: 'power4.inOut',\n scale: 0.98,\n autoAlpha: 0,\n },\n 'middle',\n );\n\n gsap.set(next, { zIndex: 99 });\n return tl;\n },\n\n I: (current, _currentInner, next, _nextInner) => {\n const direction = 1;\n const tl = gsap\n .timeline({\n defaults: {\n duration: 1,\n ease: 'power3.inOut',\n },\n })\n .addLabel('start', 0)\n .to(\n current,\n {\n xPercent: -direction * 15,\n yPercent: -direction * 15,\n autoAlpha: 0,\n },\n 'start',\n )\n .fromTo(\n next,\n {\n autoAlpha: 1,\n xPercent: direction * 100,\n yPercent: direction * 100,\n },\n {\n xPercent: 0,\n yPercent: 0,\n },\n 'start',\n );\n\n gsap.set(next, { zIndex: 99 });\n return tl;\n },\n\n J: (current, currentInner, next, nextInner) => {\n const direction = 1;\n return gsap\n .timeline({\n defaults: {\n duration: 1.3,\n },\n })\n .addLabel('start', 0)\n .to(\n current,\n {\n duration: 0.4,\n ease: 'power2.in',\n yPercent: -direction * 100,\n },\n 'start',\n )\n .to(\n currentInner,\n {\n duration: 0.4,\n ease: 'power2.in',\n yPercent: direction * 75,\n rotation: -direction * 2,\n },\n 'start',\n )\n .fromTo(\n next,\n {\n autoAlpha: 1,\n yPercent: direction * 100,\n },\n {\n ease: 'expo',\n yPercent: 0,\n },\n 'start+=0.5',\n )\n .fromTo(\n nextInner,\n {\n yPercent: -direction * 75,\n rotation: direction * 2,\n },\n {\n ease: 'expo',\n yPercent: 0,\n rotation: 0,\n },\n 'start+=0.5',\n );\n },\n\n K: (current, currentInner, next, nextInner) => {\n const direction = 1;\n return gsap\n .timeline({\n defaults: {\n duration: 1.2,\n },\n })\n .addLabel('start', 0)\n .to(\n current,\n {\n duration: 0.4,\n ease: 'power2.in',\n xPercent: -direction * 100,\n },\n 'start',\n )\n .to(\n currentInner,\n {\n duration: 0.4,\n ease: 'power2.in',\n xPercent: direction * 75,\n rotation: -direction * 6,\n },\n 'start',\n )\n .fromTo(\n next,\n {\n autoAlpha: 1,\n xPercent: direction * 100,\n },\n {\n ease: 'power4',\n xPercent: 0,\n },\n 'start+=0.4',\n )\n .fromTo(\n nextInner,\n {\n xPercent: -direction * 75,\n rotation: direction * 6,\n },\n {\n ease: 'power4',\n xPercent: 0,\n rotation: 0,\n },\n 'start+=0.4',\n );\n },\n\n // Horizontal scale squeeze\n M: (current, _currentInner, next, _nextInner) => {\n return gsap\n .timeline({\n defaults: {\n duration: 1.2,\n ease: 'power4.inOut',\n },\n })\n .addLabel('start', 0)\n .to(\n current,\n {\n transformOrigin: '0% 50%',\n scaleX: 0,\n autoAlpha: 0,\n },\n 'start',\n )\n .fromTo(\n next,\n {\n transformOrigin: '100% 50%',\n autoAlpha: 0,\n scaleX: 0,\n },\n {\n autoAlpha: 1,\n scaleX: 1,\n },\n 'start',\n );\n },\n\n N: (current, _currentInner, next, _nextInner) => {\n const direction = 1;\n return gsap\n .timeline({\n defaults: {\n duration: 0.8,\n ease: 'power3.inOut',\n },\n })\n .addLabel('start', 0)\n .to(\n current,\n {\n scale: 1.1,\n rotation: direction * 2,\n },\n 'start',\n )\n .addLabel('middle', '>')\n .fromTo(\n next,\n {\n scale: 1.1,\n rotation: direction * 2,\n },\n {\n duration: 1.1,\n ease: 'expo',\n scale: 1,\n rotation: 0,\n },\n 'middle',\n );\n },\n\n};\n","import { cn } from '@digo-labs/common';\n\nimport { useEffect, useRef, useState, CSSProperties } from 'react';\n\nimport gsap from 'gsap';\n\nimport { animationEffects } from '../other/image-transition-effects';\n\nexport enum ImageTransitionType {\n A = 'A',\n B = 'B',\n C = 'C',\n D = 'D',\n E = 'E',\n F = 'F',\n G = 'G',\n H = 'H',\n I = 'I',\n J = 'J',\n K = 'K',\n M = 'M',\n N = 'N',\n}\n\ninterface Properties {\n src: string;\n effect?: ImageTransitionType;\n style?: CSSProperties;\n className?: string;\n}\n\nexport function ImageTransition(properties: Properties) {\n const {\n src,\n effect = ImageTransitionType.A,\n style = {},\n className = '',\n } = properties;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const currentImageRef = useRef<HTMLDivElement>(null);\n const nextImageRef = useRef<HTMLDivElement>(null);\n const currentInnerRef = useRef<HTMLDivElement>(null);\n const nextInnerRef = useRef<HTMLDivElement>(null);\n const isAnimatingRef = useRef<boolean>(false);\n\n const [currentSrc, setCurrentSrc] = useState<string>(src);\n const [nextSrc, setNextSrc] = useState<string | null>(null);\n\n useEffect(() => {\n if (src === currentSrc || isAnimatingRef.current) return;\n\n isAnimatingRef.current = true;\n\n setNextSrc(src);\n }, [src, currentSrc]);\n\n useEffect(() => {\n if (!nextSrc || !currentImageRef.current || !nextImageRef.current) return;\n\n const current = currentImageRef.current;\n const currentInner = currentInnerRef.current;\n const next = nextImageRef.current;\n const nextInner = nextInnerRef.current;\n\n if (!currentInner || !nextInner) return;\n\n const animation = animationEffects[effect] || animationEffects[ImageTransitionType.A];\n\n const timeline = animation(current, currentInner, next, nextInner);\n\n timeline.eventCallback('onComplete', () => {\n setCurrentSrc(nextSrc);\n\n gsap.set([current, currentInner], { clearProps: 'all' });\n\n setNextSrc(null);\n\n isAnimatingRef.current = false;\n });\n }, [nextSrc, effect]);\n\n return (\n <div\n ref={containerRef}\n className={cn('relative size-full overflow-hidden', className)}\n style={style}\n >\n\n <div ref={currentImageRef} className=\"absolute inset-0 overflow-hidden\">\n\n <div\n ref={currentInnerRef}\n className=\"size-full bg-cover bg-center\"\n style={{\n backgroundImage: `url(${currentSrc})`,\n }}\n role=\"img\"\n />\n\n </div>\n\n {nextSrc && (\n <div ref={nextImageRef} className=\"pointer-events-none absolute inset-0 overflow-hidden\">\n\n <div\n ref={nextInnerRef}\n className=\"size-full bg-cover bg-center\"\n style={{\n backgroundImage: `url(${nextSrc})`,\n }}\n role=\"img\"\n />\n\n </div>\n )}\n </div>\n );\n};\n","import { useRef, useState, useEffect, MutableRefObject } from 'react';\n\nimport { mat4, quat, vec2, vec3 } from 'gl-matrix';\nimport { cn } from '@digo-labs/common';\n\nconst discVertShaderSource = `#version 300 es\n\nuniform mat4 uWorldMatrix;\nuniform mat4 uViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform vec3 uCameraPosition;\nuniform vec4 uRotationAxisVelocity;\n\nin vec3 aModelPosition;\nin vec3 aModelNormal;\nin vec2 aModelUvs;\nin mat4 aInstanceMatrix;\n\nout vec2 vUvs;\nout float vAlpha;\nflat out int vInstanceId;\n\n#define PI 3.141593\n\nvoid main() {\n vec4 worldPosition = uWorldMatrix * aInstanceMatrix * vec4(aModelPosition, 1.);\n\n vec3 centerPos = (uWorldMatrix * aInstanceMatrix * vec4(0., 0., 0., 1.)).xyz;\n float radius = length(centerPos.xyz);\n\n if (gl_VertexID > 0) {\n vec3 rotationAxis = uRotationAxisVelocity.xyz;\n float rotationVelocity = min(.15, uRotationAxisVelocity.w * 15.);\n vec3 stretchDir = normalize(cross(centerPos, rotationAxis));\n vec3 relativeVertexPos = normalize(worldPosition.xyz - centerPos);\n float strength = dot(stretchDir, relativeVertexPos);\n float invAbsStrength = min(0., abs(strength) - 1.);\n strength = rotationVelocity * sign(strength) * abs(invAbsStrength * invAbsStrength * invAbsStrength + 1.);\n worldPosition.xyz += stretchDir * strength;\n }\n\n worldPosition.xyz = radius * normalize(worldPosition.xyz);\n\n gl_Position = uProjectionMatrix * uViewMatrix * worldPosition;\n\n vAlpha = smoothstep(0.5, 1., normalize(worldPosition.xyz).z) * .9 + .1;\n vUvs = aModelUvs;\n vInstanceId = gl_InstanceID;\n}\n`;\n\nconst discFragShaderSource = `#version 300 es\nprecision highp float;\n\nuniform sampler2D uTex;\nuniform int uItemCount;\nuniform int uAtlasSize;\n\nout vec4 outColor;\n\nin vec2 vUvs;\nin float vAlpha;\nflat in int vInstanceId;\n\nvoid main() {\n int itemIndex = vInstanceId % uItemCount;\n int cellsPerRow = uAtlasSize;\n int cellX = itemIndex % cellsPerRow;\n int cellY = itemIndex / cellsPerRow;\n vec2 cellSize = vec2(1.0) / vec2(float(cellsPerRow));\n vec2 cellOffset = vec2(float(cellX), float(cellY)) * cellSize;\n\n ivec2 texSize = textureSize(uTex, 0);\n float imageAspect = float(texSize.x) / float(texSize.y);\n float containerAspect = 1.0;\n \n float scale = max(imageAspect / containerAspect, \n containerAspect / imageAspect);\n \n vec2 st = vec2(vUvs.x, 1.0 - vUvs.y);\n st = (st - 0.5) * scale + 0.5;\n \n st = clamp(st, 0.0, 1.0);\n st = st * cellSize + cellOffset;\n \n outColor = texture(uTex, st);\n outColor.a *= vAlpha;\n}\n`;\n\nclass Face {\n public a: number;\n public b: number;\n public c: number;\n\n constructor(a: number, b: number, c: number) {\n this.a = a;\n this.b = b;\n this.c = c;\n }\n}\n\nclass Vertex {\n public position: vec3;\n public normal: vec3;\n public uv: vec2;\n\n constructor(x: number, y: number, z: number) {\n this.position = vec3.fromValues(x, y, z);\n this.normal = vec3.create();\n this.uv = vec2.create();\n }\n}\n\nclass Geometry {\n public vertices: Vertex[];\n public faces: Face[];\n\n constructor() {\n this.vertices = [];\n this.faces = [];\n }\n\n public addVertex(...args: number[]): this {\n for (let i = 0; i < args.length; i += 3) {\n this.vertices.push(new Vertex(args[i], args[i + 1], args[i + 2]));\n }\n return this;\n }\n\n public addFace(...args: number[]): this {\n for (let i = 0; i < args.length; i += 3) {\n this.faces.push(new Face(args[i], args[i + 1], args[i + 2]));\n }\n return this;\n }\n\n public get lastVertex(): Vertex {\n return this.vertices[this.vertices.length - 1];\n }\n\n public subdivide(divisions = 1): this {\n const midPointCache: Record<string, number> = {};\n let f = this.faces;\n\n for (let div = 0; div < divisions; ++div) {\n const newFaces = new Array<Face>(f.length * 4);\n\n f.forEach((face, ndx) => {\n const mAB = this.getMidPoint(face.a, face.b, midPointCache);\n const mBC = this.getMidPoint(face.b, face.c, midPointCache);\n const mCA = this.getMidPoint(face.c, face.a, midPointCache);\n\n const i = ndx * 4;\n newFaces[i + 0] = new Face(face.a, mAB, mCA);\n newFaces[i + 1] = new Face(face.b, mBC, mAB);\n newFaces[i + 2] = new Face(face.c, mCA, mBC);\n newFaces[i + 3] = new Face(mAB, mBC, mCA);\n });\n\n f = newFaces;\n }\n\n this.faces = f;\n return this;\n }\n\n public spherize(radius = 1): this {\n this.vertices.forEach((vertex) => {\n vec3.normalize(vertex.normal, vertex.position);\n vec3.scale(vertex.position, vertex.normal, radius);\n });\n return this;\n }\n\n public get data(): {\n vertices: Float32Array;\n indices: Uint16Array;\n normals: Float32Array;\n uvs: Float32Array;\n } {\n return {\n vertices: this.vertexData,\n indices: this.indexData,\n normals: this.normalData,\n uvs: this.uvData,\n };\n }\n\n public get vertexData(): Float32Array {\n return new Float32Array(this.vertices.flatMap(v => Array.from(v.position)));\n }\n\n public get normalData(): Float32Array {\n return new Float32Array(this.vertices.flatMap(v => Array.from(v.normal)));\n }\n\n public get uvData(): Float32Array {\n return new Float32Array(this.vertices.flatMap(v => Array.from(v.uv)));\n }\n\n public get indexData(): Uint16Array {\n return new Uint16Array(this.faces.flatMap(f => [f.a, f.b, f.c]));\n }\n\n public getMidPoint(ndxA: number, ndxB: number, cache: Record<string, number>): number {\n const cacheKey = ndxA < ndxB ? `k_${ndxB}_${ndxA}` : `k_${ndxA}_${ndxB}`;\n if (Object.prototype.hasOwnProperty.call(cache, cacheKey)) {\n return cache[cacheKey];\n }\n const a = this.vertices[ndxA].position;\n const b = this.vertices[ndxB].position;\n const ndx = this.vertices.length;\n cache[cacheKey] = ndx;\n this.addVertex((a[0] + b[0]) * 0.5, (a[1] + b[1]) * 0.5, (a[2] + b[2]) * 0.5);\n return ndx;\n }\n}\n\nclass IcosahedronGeometry extends Geometry {\n constructor() {\n super();\n const t = Math.sqrt(5) * 0.5 + 0.5;\n this.addVertex(\n -1,\n t,\n 0,\n 1,\n t,\n 0,\n -1,\n -t,\n 0,\n 1,\n -t,\n 0,\n 0,\n -1,\n t,\n 0,\n 1,\n t,\n 0,\n -1,\n -t,\n 0,\n 1,\n -t,\n t,\n 0,\n -1,\n t,\n 0,\n 1,\n -t,\n 0,\n -1,\n -t,\n 0,\n 1,\n ).addFace(\n 0,\n 11,\n 5,\n 0,\n 5,\n 1,\n 0,\n 1,\n 7,\n 0,\n 7,\n 10,\n 0,\n 10,\n 11,\n 1,\n 5,\n 9,\n 5,\n 11,\n 4,\n 11,\n 10,\n 2,\n 10,\n 7,\n 6,\n 7,\n 1,\n 8,\n 3,\n 9,\n 4,\n 3,\n 4,\n 2,\n 3,\n 2,\n 6,\n 3,\n 6,\n 8,\n 3,\n 8,\n 9,\n 4,\n 9,\n 5,\n 2,\n 4,\n 11,\n 6,\n 2,\n 10,\n 8,\n 6,\n 7,\n 9,\n 8,\n 1,\n );\n }\n}\n\nclass DiscGeometry extends Geometry {\n constructor(steps = 4, radius = 1) {\n super();\n const safeSteps = Math.max(4, steps);\n const alpha = (2 * Math.PI) / safeSteps;\n\n this.addVertex(0, 0, 0);\n this.lastVertex.uv[0] = 0.5;\n this.lastVertex.uv[1] = 0.5;\n\n for (let i = 0; i < safeSteps; ++i) {\n const x = Math.cos(alpha * i);\n const y = Math.sin(alpha * i);\n this.addVertex(radius * x, radius * y, 0);\n this.lastVertex.uv[0] = x * 0.5 + 0.5;\n this.lastVertex.uv[1] = y * 0.5 + 0.5;\n\n if (i > 0) {\n this.addFace(0, i, i + 1);\n }\n }\n this.addFace(0, safeSteps, 1);\n }\n}\n\nfunction createShader(gl: WebGL2RenderingContext, type: number, source: string): WebGLShader | null {\n const shader = gl.createShader(type);\n if (!shader) return null;\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (success) {\n return shader;\n }\n\n console.error(gl.getShaderInfoLog(shader));\n gl.deleteShader(shader);\n return null;\n}\n\nfunction createProgram(\n gl: WebGL2RenderingContext,\n shaderSources: [string, string],\n transformFeedbackVaryings?: string[] | null,\n attribLocations?: Record<string, number>,\n): WebGLProgram | null {\n const program = gl.createProgram();\n if (!program) return null;\n\n [gl.VERTEX_SHADER, gl.FRAGMENT_SHADER].forEach((type, ndx) => {\n const shader = createShader(gl, type, shaderSources[ndx]);\n if (shader) {\n gl.attachShader(program, shader);\n }\n });\n\n if (transformFeedbackVaryings) {\n gl.transformFeedbackVaryings(program, transformFeedbackVaryings, gl.SEPARATE_ATTRIBS);\n }\n\n if (attribLocations) {\n for (const attrib in attribLocations) {\n if (Object.prototype.hasOwnProperty.call(attribLocations, attrib)) {\n gl.bindAttribLocation(program, attribLocations[attrib], attrib);\n }\n }\n }\n\n gl.linkProgram(program);\n const success = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n if (success) {\n return program;\n }\n\n console.error(gl.getProgramInfoLog(program));\n gl.deleteProgram(program);\n return null;\n}\n\nfunction makeVertexArray(\n gl: WebGL2RenderingContext,\n bufLocNumElmPairs: Array<[WebGLBuffer, number, number]>,\n indices?: Uint16Array,\n): WebGLVertexArrayObject | null {\n const va = gl.createVertexArray();\n if (!va) return null;\n\n gl.bindVertexArray(va);\n\n for (const [buffer, loc, numElem] of bufLocNumElmPairs) {\n if (loc === -1) continue;\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.enableVertexAttribArray(loc);\n gl.vertexAttribPointer(loc, numElem, gl.FLOAT, false, 0, 0);\n }\n\n if (indices) {\n const indexBuffer = gl.createBuffer();\n if (indexBuffer) {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);\n }\n }\n\n gl.bindVertexArray(null);\n return va;\n}\n\nfunction resizeCanvasToDisplaySize(canvas: HTMLCanvasElement): boolean {\n const dpr = Math.min(2, window.devicePixelRatio || 1);\n const displayWidth = Math.round(canvas.clientWidth * dpr);\n const displayHeight = Math.round(canvas.clientHeight * dpr);\n const needResize = canvas.width !== displayWidth || canvas.height !== displayHeight;\n if (needResize) {\n canvas.width = displayWidth;\n canvas.height = displayHeight;\n }\n return needResize;\n}\n\nfunction makeBuffer(gl: WebGL2RenderingContext, sizeOrData: number | ArrayBufferView, usage: number): WebGLBuffer {\n const buf = gl.createBuffer();\n if (!buf) {\n throw new Error('Failed to create WebGL buffer.');\n }\n gl.bindBuffer(gl.ARRAY_BUFFER, buf);\n\n if (typeof sizeOrData === 'number') {\n gl.bufferData(gl.ARRAY_BUFFER, sizeOrData, usage);\n } else {\n gl.bufferData(gl.ARRAY_BUFFER, sizeOrData, usage);\n }\n\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n return buf;\n}\n\nfunction createAndSetupTexture(\n gl: WebGL2RenderingContext,\n minFilter: number,\n magFilter: number,\n wrapS: number,\n wrapT: number,\n): WebGLTexture {\n const texture = gl.createTexture();\n if (!texture) {\n throw new Error('Failed to create WebGL texture.');\n }\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrapS);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrapT);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter);\n return texture;\n}\n\ntype UpdateCallback = (deltaTime: number) => void;\n\nclass ArcballControl {\n private canvas: HTMLCanvasElement;\n private updateCallback: UpdateCallback;\n\n public isPointerDown = false;\n public orientation = quat.create();\n public pointerRotation = quat.create();\n public rotationVelocity = 0;\n public rotationAxis = vec3.fromValues(1, 0, 0);\n\n public snapDirection = vec3.fromValues(0, 0, -1);\n public snapTargetDirection: vec3 | null = null;\n\n private pointerPos = vec2.create();\n private previousPointerPos = vec2.create();\n private _rotationVelocity = 0;\n private _combinedQuat = quat.create();\n\n private readonly EPSILON = 0.1;\n private readonly IDENTITY_QUAT = quat.create();\n\n public snapStrength = 0.2;\n\n constructor(canvas: HTMLCanvasElement, updateCallback?: UpdateCallback) {\n this.canvas = canvas;\n this.updateCallback = updateCallback || (() => undefined);\n\n canvas.addEventListener('pointerdown', (e: PointerEvent) => {\n vec2.set(this.pointerPos, e.clientX, e.clientY);\n vec2.copy(this.previousPointerPos, this.pointerPos);\n this.isPointerDown = true;\n });\n canvas.addEventListener('pointerup', () => {\n this.isPointerDown = false;\n });\n canvas.addEventListener('pointerleave', () => {\n this.isPointerDown = false;\n });\n canvas.addEventListener('pointermove', (e: PointerEvent) => {\n if (this.isPointerDown) {\n vec2.set(this.pointerPos, e.clientX, e.clientY);\n }\n });\n canvas.style.touchAction = 'none';\n }\n\n public update(deltaTime: number, targetFrameDuration = 16): void {\n const timeScale = deltaTime / targetFrameDuration + 0.00001;\n let angleFactor = timeScale;\n const snapRotation = quat.create();\n\n if (this.isPointerDown) {\n const INTENSITY = 0.3 * timeScale;\n const ANGLE_AMPLIFICATION = 5 / timeScale;\n const midPointerPos = vec2.sub(vec2.create(), this.pointerPos, this.previousPointerPos);\n vec2.scale(midPointerPos, midPointerPos, INTENSITY);\n\n if (vec2.sqrLen(midPointerPos) > this.EPSILON) {\n vec2.add(midPointerPos, this.previousPointerPos, midPointerPos);\n\n const p = this.project(midPointerPos);\n const q = this.project(this.previousPointerPos);\n const a = vec3.normalize(vec3.create(), p);\n const b = vec3.normalize(vec3.create(), q);\n\n vec2.copy(this.previousPointerPos, midPointerPos);\n\n angleFactor *= ANGLE_AMPLIFICATION;\n\n this.quatFromVectors(a, b, this.pointerRotation, angleFactor);\n } else {\n quat.slerp(this.pointerRotation, this.pointerRotation, this.IDENTITY_QUAT, INTENSITY);\n }\n } else {\n const INTENSITY = 0.1 * timeScale;\n quat.slerp(this.pointerRotation, this.pointerRotation, this.IDENTITY_QUAT, INTENSITY);\n\n if (this.snapTargetDirection) {\n const SNAPPING_INTENSITY = this.snapStrength;\n const a = this.snapTargetDirection;\n const b = this.snapDirection;\n const sqrDist = vec3.squaredDistance(a, b);\n const distanceFactor = Math.max(0.1, 1 - sqrDist * 10);\n angleFactor *= SNAPPING_INTENSITY * distanceFactor;\n this.quatFromVectors(a, b, snapRotation, angleFactor);\n }\n }\n\n const combinedQuat = quat.multiply(quat.create(), snapRotation, this.pointerRotation);\n this.orientation = quat.multiply(quat.create(), combinedQuat, this.orientation);\n quat.normalize(this.orientation, this.orientation);\n\n const RA_INTENSITY = 0.8 * timeScale;\n quat.slerp(this._combinedQuat, this._combinedQuat, combinedQuat, RA_INTENSITY);\n quat.normalize(this._combinedQuat, this._combinedQuat);\n\n const rad = Math.acos(this._combinedQuat[3]) * 2.0;\n const s = Math.sin(rad / 2.0);\n let rv = 0;\n if (s > 0.000001) {\n rv = rad / (2 * Math.PI);\n this.rotationAxis[0] = this._combinedQuat[0] / s;\n this.rotationAxis[1] = this._combinedQuat[1] / s;\n this.rotationAxis[2] = this._combinedQuat[2] / s;\n }\n\n const RV_INTENSITY = 0.5 * timeScale;\n this._rotationVelocity += (rv - this._rotationVelocity) * RV_INTENSITY;\n this.rotationVelocity = this._rotationVelocity / timeScale;\n\n this.updateCallback(deltaTime);\n }\n\n private quatFromVectors(a: vec3, b: vec3, out: quat, angleFactor = 1): { q: quat; axis: vec3; angle: number; } {\n const axis = vec3.cross(vec3.create(), a, b);\n vec3.normalize(axis, axis);\n const d = Math.max(-1, Math.min(1, vec3.dot(a, b)));\n const angle = Math.acos(d) * angleFactor;\n quat.setAxisAngle(out, axis, angle);\n return { q: out, axis, angle };\n }\n\n private project(pos: vec2): vec3 {\n const r = 2;\n const w = this.canvas.clientWidth;\n const h = this.canvas.clientHeight;\n const s = Math.max(w, h) - 1;\n\n const x = (2 * pos[0] - w - 1) / s;\n const y = (2 * pos[1] - h - 1) / s;\n let z = 0;\n const xySq = x * x + y * y;\n const rSq = r * r;\n\n if (xySq <= rSq / 2.0) {\n z = Math.sqrt(rSq - xySq);\n } else {\n z = rSq / Math.sqrt(xySq);\n }\n return vec3.fromValues(-x, y, z);\n }\n}\n\nexport interface InfiniteMenuItem {\n id: string;\n imageUrl: string;\n}\n\ntype ActiveItemCallback = (index: number) => void;\ntype MovementChangeCallback = (isMoving: boolean) => void;\ntype InitCallback = (instance: InfiniteGridMenu) => void;\n\nexport interface InfiniteMenuOptions {\n discSize?: number;\n damping?: number;\n snapStrength?: number;\n cameraDistance?: number;\n sphereRadius?: number;\n}\n\ninterface Camera {\n matrix: mat4;\n near: number;\n far: number;\n fov: number;\n aspect: number;\n position: vec3;\n up: vec3;\n matrices: {\n view: mat4;\n projection: mat4;\n inversProjection: mat4;\n };\n}\n\nclass InfiniteGridMenu {\n private gl: WebGL2RenderingContext | null = null;\n private discProgram: WebGLProgram | null = null;\n private discVAO: WebGLVertexArrayObject | null = null;\n private discBuffers!: {\n vertices: Float32Array;\n indices: Uint16Array;\n normals: Float32Array;\n uvs: Float32Array;\n };\n\n private icoGeo!: IcosahedronGeometry;\n private discGeo!: DiscGeometry;\n private worldMatrix = mat4.create();\n private tex: WebGLTexture | null = null;\n private control!: ArcballControl;\n\n private discLocations!: {\n aModelPosition: number;\n aModelUvs: number;\n aInstanceMatrix: number;\n uWorldMatrix: WebGLUniformLocation | null;\n uViewMatrix: WebGLUniformLocation | null;\n uProjectionMatrix: WebGLUniformLocation | null;\n uCameraPosition: WebGLUniformLocation | null;\n uScaleFactor: WebGLUniformLocation | null;\n uRotationAxisVelocity: WebGLUniformLocation | null;\n uTex: WebGLUniformLocation | null;\n uFrames: WebGLUniformLocation | null;\n uItemCount: WebGLUniformLocation | null;\n uAtlasSize: WebGLUniformLocation | null;\n };\n\n private viewportSize = vec2.create();\n private drawBufferSize = vec2.create();\n\n private discInstances!: {\n matricesArray: Float32Array;\n matrices: Float32Array[];\n buffer: WebGLBuffer | null;\n };\n\n private instancePositions: vec3[] = [];\n private DISC_INSTANCE_COUNT = 0;\n private atlasSize = 1;\n\n private _time = 0;\n private _deltaTime = 0;\n private _deltaFrames = 0;\n private _frames = 0;\n\n private movementActive = false;\n\n private TARGET_FRAME_DURATION = 1000 / 60;\n private SPHERE_RADIUS = 2;\n private discSize = 0.25;\n private damping = 5;\n private cameraDistance = 3;\n\n public camera: Camera = {\n matrix: mat4.create(),\n near: 0.1,\n far: 40,\n fov: Math.PI / 4,\n aspect: 1,\n position: vec3.fromValues(0, 0, 3),\n up: vec3.fromValues(0, 1, 0),\n matrices: {\n view: mat4.create(),\n projection: mat4.create(),\n inversProjection: mat4.create(),\n },\n };\n\n public smoothRotationVelocity = 0;\n public scaleFactor = 1.0;\n\n constructor(\n private canvas: HTMLCanvasElement,\n private items: InfiniteMenuItem[],\n private onActiveItemChange: ActiveItemCallback,\n private onMovementChange: MovementChangeCallback,\n onInit?: InitCallback,\n options?: InfiniteMenuOptions,\n ) {\n this.SPHERE_RADIUS = options?.sphereRadius ?? 2;\n this.discSize = options?.discSize ?? 0.25;\n this.damping = options?.damping ?? 5;\n this.cameraDistance = options?.cameraDistance ?? 3;\n this.camera.position = vec3.fromValues(0, 0, this.cameraDistance);\n this.init(onInit);\n this.control.snapStrength = options?.snapStrength ?? 0.2;\n }\n\n public resize(): void {\n const needsResize = resizeCanvasToDisplaySize(this.canvas);\n if (!this.gl) return;\n if (needsResize) {\n this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight);\n }\n this.updateProjectionMatrix();\n }\n\n public run(time = 0): void {\n this._deltaTime = Math.min(32, time - this._time);\n this._time = time;\n this._deltaFrames = this._deltaTime / this.TARGET_FRAME_DURATION;\n this._frames += this._deltaFrames;\n\n this.animate(this._deltaTime);\n this.render();\n\n requestAnimationFrame(t => this.run(t));\n }\n\n private init(onInit?: InitCallback): void {\n const gl = this.canvas.getContext('webgl2', {\n antialias: true,\n alpha: true,\n });\n if (!gl) {\n throw new Error('No WebGL 2 context!');\n }\n this.gl = gl;\n\n vec2.set(this.viewportSize, this.canvas.clientWidth, this.canvas.clientHeight);\n vec2.clone(this.drawBufferSize);\n\n this.discProgram = createProgram(gl, [discVertShaderSource, discFragShaderSource], null, {\n aModelPosition: 0,\n aModelNormal: 1,\n aModelUvs: 2,\n aInstanceMatrix: 3,\n });\n\n this.discLocations = {\n aModelPosition: gl.getAttribLocation(this.discProgram!, 'aModelPosition'),\n aModelUvs: gl.getAttribLocation(this.discProgram!, 'aModelUvs'),\n aInstanceMatrix: gl.getAttribLocation(this.discProgram!, 'aInstanceMatrix'),\n uWorldMatrix: gl.getUniformLocation(this.discProgram!, 'uWorldMatrix'),\n uViewMatrix: gl.getUniformLocation(this.discProgram!, 'uViewMatrix'),\n uProjectionMatrix: gl.getUniformLocation(this.discProgram!, 'uProjectionMatrix'),\n uCameraPosition: gl.getUniformLocation(this.discProgram!, 'uCameraPosition'),\n uScaleFactor: gl.getUniformLocation(this.discProgram!, 'uScaleFactor'),\n uRotationAxisVelocity: gl.getUniformLocation(this.discProgram!, 'uRotationAxisVelocity'),\n uTex: gl.getUniformLocation(this.discProgram!, 'uTex'),\n uFrames: gl.getUniformLocation(this.discProgram!, 'uFrames'),\n uItemCount: gl.getUniformLocation(this.discProgram!, 'uItemCount'),\n uAtlasSize: gl.getUniformLocation(this.discProgram!, 'uAtlasSize'),\n };\n\n this.discGeo = new DiscGeometry(56, 1);\n this.discBuffers = this.discGeo.data;\n this.discVAO = makeVertexArray(\n gl,\n [\n [makeBuffer(gl, this.discBuffers.vertices, gl.STATIC_DRAW), this.discLocations.aModelPosition, 3],\n [makeBuffer(gl, this.discBuffers.uvs, gl.STATIC_DRAW), this.discLocations.aModelUvs, 2],\n ],\n this.discBuffers.indices,\n );\n\n this.icoGeo = new IcosahedronGeometry();\n this.icoGeo.subdivide(1).spherize(this.SPHERE_RADIUS);\n this.instancePositions = this.icoGeo.vertices.map(v => v.position);\n this.DISC_INSTANCE_COUNT = this.icoGeo.vertices.length;\n this.initDiscInstances(this.DISC_INSTANCE_COUNT);\n this.initTexture();\n this.control = new ArcballControl(this.canvas, deltaTime => this.onControlUpdate(deltaTime));\n\n this.updateCameraMatrix();\n this.updateProjectionMatrix();\n\n this.resize();\n\n if (onInit) {\n onInit(this);\n }\n }\n\n private initTexture(): void {\n if (!this.gl) return;\n const gl = this.gl;\n this.tex = createAndSetupTexture(gl, gl.LINEAR, gl.LINEAR, gl.CLAMP_TO_EDGE, gl.CLAMP_TO_EDGE);\n\n const itemCount = Math.max(1, this.items.length);\n this.atlasSize = Math.ceil(Math.sqrt(itemCount));\n const cellSize = 512;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d')!;\n canvas.width = this.atlasSize * cellSize;\n canvas.height = this.atlasSize * cellSize;\n\n Promise.all(\n this.items.map(\n item =>\n new Promise<HTMLImageElement>((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => resolve(img);\n img.onerror = e => reject(new Error(`Failed to load image: ${item.imageUrl}->${e} `));\n img.src = item.imageUrl;\n }),\n ),\n ).then((images) => {\n images.forEach((img, i) => {\n const x = (i % this.atlasSize) * cellSize;\n const y = Math.floor(i / this.atlasSize) * cellSize;\n ctx.drawImage(img, x, y, cellSize, cellSize);\n });\n\n gl.bindTexture(gl.TEXTURE_2D, this.tex);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, canvas);\n gl.generateMipmap(gl.TEXTURE_2D);\n });\n }\n\n private initDiscInstances(count: number): void {\n if (!this.gl || !this.discVAO) return;\n const gl = this.gl;\n\n const matricesArray = new Float32Array(count * 16);\n const matrices: Float32Array[] = [];\n for (let i = 0; i < count; ++i) {\n const instanceMatrixArray = new Float32Array(matricesArray.buffer, i * 16 * 4, 16);\n mat4.identity(instanceMatrixArray as unknown as mat4);\n matrices.push(instanceMatrixArray);\n }\n\n this.discInstances = {\n matricesArray,\n matrices,\n buffer: gl.createBuffer(),\n };\n\n gl.bindVertexArray(this.discVAO);\n gl.bindBuffer(gl.ARRAY_BUFFER, this.discInstances.buffer);\n gl.bufferData(gl.ARRAY_BUFFER, this.discInstances.matricesArray.byteLength, gl.DYNAMIC_DRAW);\n\n const mat4AttribSlotCount = 4;\n const bytesPerMatrix = 16 * 4;\n for (let j = 0; j < mat4AttribSlotCount; ++j) {\n const loc = this.discLocations.aInstanceMatrix + j;\n gl.enableVertexAttribArray(loc);\n gl.vertexAttribPointer(loc, 4, gl.FLOAT, false, bytesPerMatrix, j * 4 * 4);\n gl.vertexAttribDivisor(loc, 1);\n }\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n gl.bindVertexArray(null);\n }\n\n private animate(deltaTime: number): void {\n if (!this.gl) return;\n this.control.update(deltaTime, this.TARGET_FRAME_DURATION);\n\n const positions = this.instancePositions.map(p => vec3.transformQuat(vec3.create(), p, this.control.orientation));\n const scale = this.discSize;\n const SCALE_INTENSITY = 0.6;\n\n positions.forEach((p, ndx) => {\n const s = (Math.abs(p[2]) / this.SPHERE_RADIUS) * SCALE_INTENSITY + (1 - SCALE_INTENSITY);\n const finalScale = s * scale;\n const matrix = mat4.create();\n\n mat4.multiply(matrix, matrix, mat4.fromTranslation(mat4.create(), vec3.negate(vec3.create(), p)));\n mat4.multiply(matrix, matrix, mat4.targetTo(mat4.create(), [0, 0, 0], p, [0, 1, 0]));\n mat4.multiply(matrix, matrix, mat4.fromScaling(mat4.create(), [finalScale, finalScale, finalScale]));\n mat4.multiply(matrix, matrix, mat4.fromTranslation(mat4.create(), [0, 0, -this.SPHERE_RADIUS]));\n\n mat4.copy(this.discInstances.matrices[ndx], matrix);\n });\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.discInstances.buffer);\n this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, this.discInstances.matricesArray);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);\n\n this.smoothRotationVelocity = this.control.rotationVelocity;\n }\n\n private render(): void {\n if (!this.gl || !this.discProgram) return;\n const gl = this.gl;\n\n gl.useProgram(this.discProgram);\n gl.enable(gl.CULL_FACE);\n gl.enable(gl.DEPTH_TEST);\n\n gl.clearColor(0, 0, 0, 0);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n gl.uniformMatrix4fv(this.discLocations.uWorldMatrix, false, this.worldMatrix);\n gl.uniformMatrix4fv(this.discLocations.uViewMatrix, false, this.camera.matrices.view);\n gl.uniformMatrix4fv(this.discLocations.uProjectionMatrix, false, this.camera.matrices.projection);\n gl.uniform3f(\n this.discLocations.uCameraPosition,\n this.camera.position[0],\n this.camera.position[1],\n this.camera.position[2],\n );\n gl.uniform4f(\n this.discLocations.uRotationAxisVelocity,\n this.control.rotationAxis[0],\n this.control.rotationAxis[1],\n this.control.rotationAxis[2],\n this.smoothRotationVelocity * 1.1,\n );\n\n gl.uniform1i(this.discLocations.uItemCount, this.items.length);\n gl.uniform1i(this.discLocations.uAtlasSize, this.atlasSize);\n\n gl.uniform1f(this.discLocations.uFrames, this._frames);\n gl.uniform1f(this.discLocations.uScaleFactor, this.scaleFactor);\n\n gl.uniform1i(this.discLocations.uTex, 0);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, this.tex);\n\n gl.bindVertexArray(this.discVAO);\n gl.drawElementsInstanced(\n gl.TRIANGLES,\n this.discBuffers.indices.length,\n gl.UNSIGNED_SHORT,\n 0,\n this.DISC_INSTANCE_COUNT,\n );\n gl.bindVertexArray(null);\n }\n\n private updateCameraMatrix(): void {\n mat4.targetTo(this.camera.matrix, this.camera.position, [0, 0, 0], this.camera.up);\n mat4.invert(this.camera.matrices.view, this.camera.matrix);\n }\n\n private updateProjectionMatrix(): void {\n if (!this.gl) return;\n const canvasEl = this.gl.canvas as HTMLCanvasElement;\n this.camera.aspect = canvasEl.clientWidth / canvasEl.clientHeight;\n const height = this.SPHERE_RADIUS * 0.35;\n const distance = this.camera.position[2];\n if (this.camera.aspect > 1) {\n this.camera.fov = 2 * Math.atan(height / distance);\n } else {\n this.camera.fov = 2 * Math.atan(height / this.camera.aspect / distance);\n }\n mat4.perspective(\n this.camera.matrices.projection,\n this.camera.fov,\n this.camera.aspect,\n this.camera.near,\n this.camera.far,\n );\n mat4.invert(this.camera.matrices.inversProjection, this.camera.matrices.projection);\n }\n\n private onControlUpdate(deltaTime: number): void {\n const timeScale = deltaTime / this.TARGET_FRAME_DURATION + 0.0001;\n let damping = this.damping / timeScale;\n let cameraTargetZ = this.cameraDistance;\n\n const isMoving = this.control.isPointerDown || Math.abs(this.smoothRotationVelocity) > 0.01;\n\n if (isMoving !== this.movementActive) {\n this.movementActive = isMoving;\n this.onMovementChange(isMoving);\n }\n\n if (!this.control.isPointerDown) {\n const nearestVertexIndex = this.findNearestVertexIndex();\n const itemIndex = nearestVertexIndex % Math.max(1, this.items.length);\n this.onActiveItemChange(itemIndex);\n const snapDirection = vec3.normalize(vec3.create(), this.getVertexWorldPosition(nearestVertexIndex));\n this.control.snapTargetDirection = snapDirection;\n } else {\n cameraTargetZ += this.control.rotationVelocity * 80 + 2.5;\n damping = (this.damping + 2) / timeScale;\n }\n\n this.camera.position[2] += (cameraTargetZ - this.camera.position[2]) / damping;\n this.updateCameraMatrix();\n }\n\n private findNearestVertexIndex(): number {\n const n = this.control.snapDirection;\n const inversOrientation = quat.conjugate(quat.create(), this.control.orientation);\n const nt = vec3.transformQuat(vec3.create(), n, inversOrientation);\n\n let maxD = -1;\n let nearestVertexIndex = 0;\n for (let i = 0; i < this.instancePositions.length; ++i) {\n const d = vec3.dot(nt, this.instancePositions[i]);\n if (d > maxD) {\n maxD = d;\n nearestVertexIndex = i;\n }\n }\n return nearestVertexIndex;\n }\n\n private getVertexWorldPosition(index: number): vec3 {\n const nearestVertexPos = this.instancePositions[index];\n return vec3.transformQuat(vec3.create(), nearestVertexPos, this.control.orientation);\n }\n}\n\nconst defaultItems: InfiniteMenuItem[] = [\n {\n id: 'default-id',\n imageUrl: 'https://picsum.photos/900/900?grayscale',\n },\n];\n\ninterface Properties extends InfiniteMenuOptions {\n items: InfiniteMenuItem[];\n className?: string;\n onItemSelected?: (item: InfiniteMenuItem) => void;\n onDragChange?: (drag: boolean) => void;\n}\n\nexport function InfiniteMenu(properties: Properties) {\n const { items, className, onItemSelected, onDragChange, discSize, damping, snapStrength, cameraDistance, sphereRadius } = properties;\n\n const canvasRef = useRef<HTMLCanvasElement | null>(null) as MutableRefObject<HTMLCanvasElement | null>;\n const [activeItem, setActiveItem] = useState<InfiniteMenuItem | null>(null);\n const [isMoving, setIsMoving] = useState<boolean>(false);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n let sketch: InfiniteGridMenu | null = null;\n\n const handleActiveItem = (index: number) => {\n if (!items.length) return;\n const itemIndex = index % items.length;\n setActiveItem(items[itemIndex]);\n };\n\n const options: InfiniteMenuOptions = { discSize, damping, snapStrength, cameraDistance, sphereRadius };\n\n if (canvas) {\n sketch = new InfiniteGridMenu(canvas, items?.length ? items : defaultItems, handleActiveItem, setIsMoving, sk =>\n sk.run(), options);\n }\n\n const handleResize = () => {\n if (sketch) {\n sketch.resize();\n }\n };\n\n window.addEventListener('resize', handleResize);\n handleResize();\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [items, discSize, damping, snapStrength, cameraDistance, sphereRadius]);\n\n useEffect(() => {\n if (!onItemSelected || !activeItem || isMoving) return;\n\n onItemSelected(activeItem);\n }, [activeItem, isMoving]);\n\n useEffect(() => {\n onDragChange?.(isMoving);\n }, [isMoving, onDragChange]);\n\n return (\n <div className={cn('relative h-full w-full', className)}>\n\n <canvas\n id=\"infinite-grid-menu-canvas\"\n ref={canvasRef}\n className=\"relative h-full w-full cursor-grab overflow-hidden outline-none active:cursor-grabbing\"\n />\n\n </div>\n );\n};\n","import { cn } from '@digo-labs/common';\nimport { Renderer, Program, Mesh, Color, Triangle } from 'ogl';\n\nimport { CSSProperties, useEffect, useRef } from 'react';\n\nconst vertexShader = `\nattribute vec2 uv;\nattribute vec2 position;\n\nvarying vec2 vUv;\n\nvoid main() {\n vUv = uv;\n gl_Position = vec4(position, 0, 1);\n}\n`;\n\nconst fragmentShader = `\nprecision highp float;\n\nuniform float uTime;\nuniform vec3 uColor;\nuniform vec3 uResolution;\nuniform vec2 uMouse;\nuniform float uAmplitude;\nuniform float uSpeed;\nuniform float uOpacity;\n\nvarying vec2 vUv;\n\nvoid main() {\n float mr = min(uResolution.x, uResolution.y);\n vec2 uv = (vUv.xy * 2.0 - 1.0) * uResolution.xy / mr;\n\n uv += (uMouse - vec2(0.5)) * uAmplitude;\n\n float d = -uTime * 0.5 * uSpeed;\n float a = 0.0;\n for (float i = 0.0; i < 8.0; ++i) {\n a += cos(i - d - a * uv.x);\n d += sin(uv.y * i + a);\n }\n d += uTime * 0.5 * uSpeed;\n vec3 col = vec3(cos(uv * vec2(d, a)) * 0.6 + 0.4, cos(a + d) * 0.5 + 0.5);\n col = cos(col * cos(vec3(d, a, 2.5)) * 0.5 + 0.5) * uColor;\n gl_FragColor = vec4(col, uOpacity);\n\n}\n`;\n\ninterface Properties {\n color?: [number, number, number];\n speed?: number;\n opacity?: number;\n amplitude?: number;\n mouseReact?: boolean;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function Iridescence(properties: Properties) {\n const {\n color = [1, 1, 1],\n speed = 1.0,\n amplitude = 0.1,\n opacity = 1,\n mouseReact = true,\n className,\n style,\n } = properties;\n\n const ctnDom = useRef<HTMLDivElement>(null);\n const mousePos = useRef({ x: 0.5, y: 0.5 });\n const programRef = useRef<Program | null>(null);\n\n useEffect(() => {\n if (!ctnDom.current) return;\n const ctn = ctnDom.current;\n const renderer = new Renderer({ alpha: true });\n const gl = renderer.gl;\n gl.clearColor(0, 0, 0, 0);\n\n // eslint-disable-next-line prefer-const\n let program: Program;\n\n function resize() {\n const scale = 1;\n renderer.setSize(ctn.offsetWidth * scale, ctn.offsetHeight * scale);\n if (program) {\n program.uniforms.uResolution.value = new Color(\n gl.canvas.width,\n gl.canvas.height,\n gl.canvas.width / gl.canvas.height,\n );\n }\n }\n window.addEventListener('resize', resize, false);\n\n resize();\n\n const geometry = new Triangle(gl);\n\n program = new Program(gl, {\n vertex: vertexShader,\n fragment: fragmentShader,\n uniforms: {\n uTime: { value: 0 },\n uColor: { value: new Color(...color) },\n uResolution: {\n value: new Color(gl.canvas.width, gl.canvas.height, gl.canvas.width / gl.canvas.height),\n },\n uMouse: { value: new Float32Array([mousePos.current.x, mousePos.current.y]) },\n uAmplitude: { value: amplitude },\n uSpeed: { value: speed },\n uOpacity: { value: opacity },\n },\n });\n\n programRef.current = program;\n\n const mesh = new Mesh(gl, { geometry, program });\n let animateId: number;\n\n function update(t: number) {\n animateId = requestAnimationFrame(update);\n program.uniforms.uTime.value = t * 0.001;\n renderer.render({ scene: mesh });\n }\n\n animateId = requestAnimationFrame(update);\n\n ctn.appendChild(gl.canvas);\n\n function handleMouseMove(e: MouseEvent) {\n const rect = ctn.getBoundingClientRect();\n const x = (e.clientX - rect.left) / rect.width;\n const y = 1.0 - (e.clientY - rect.top) / rect.height;\n mousePos.current = { x, y };\n program.uniforms.uMouse.value[0] = x;\n program.uniforms.uMouse.value[1] = y;\n }\n\n if (mouseReact) {\n ctn.addEventListener('mousemove', handleMouseMove);\n }\n\n return () => {\n cancelAnimationFrame(animateId);\n window.removeEventListener('resize', resize);\n if (mouseReact) {\n ctn.removeEventListener('mousemove', handleMouseMove);\n }\n ctn.removeChild(gl.canvas);\n gl.getExtension('WEBGL_lose_context')?.loseContext();\n };\n }, [mouseReact]);\n\n useEffect(() => {\n if (programRef.current) {\n programRef.current.uniforms.uColor.value = new Color(...color);\n programRef.current.uniforms.uSpeed.value = speed;\n programRef.current.uniforms.uAmplitude.value = amplitude;\n programRef.current.uniforms.uOpacity.value = opacity;\n }\n }, [color, speed, amplitude, opacity]);\n\n return (\n <div ref={ctnDom} className={cn('h-full w-full', className)} style={style} />\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { useEffect, useState } from 'react';\nimport { AnimationOptions, motion, useAnimate } from 'motion/react';\n\nconst TRANSITION: AnimationOptions = {\n duration: 2,\n ease: 'backInOut',\n};\n\nconst DELAY = 60;\n\ntype AnimationDirection = 'topToBottom' | 'bottomToTop' | 'rightToLeft' | 'leftToRight';\n\nconst DIRECTIONS: AnimationDirection[] = ['topToBottom', 'bottomToTop', 'rightToLeft', 'leftToRight'];\n\ninterface LetterSwapProperties {\n letter: string;\n className?: string;\n direction?: AnimationDirection;\n}\n\nexport function LetterSwap(properties: LetterSwapProperties) {\n const { letter, className, direction = 'leftToRight' } = properties;\n\n const [scope, animate] = useAnimate();\n const [blocked, setBlocked] = useState(false);\n const [config] = useState(() => ANIMATION_CONFIGS[getRandomDirection()]);\n\n useEffect(() => {\n if (blocked) return;\n\n const timer = window.setTimeout(animationStart, getRandomDelay());\n\n return () => clearTimeout(timer);\n }, [blocked, animationStart]);\n\n useEffect(() => {\n if (blocked) return;\n\n const timer = window.setTimeout(animationStart, getRandomDelay());\n\n return () => clearTimeout(timer);\n }, [blocked, animationStart]);\n\n function animationStart() {\n if (blocked) return;\n\n setBlocked(true);\n\n animate('.letter', config.primary.animate, TRANSITION).then(() => {\n animate('.letter', config.primary.reset, { duration: 0 }).then(() => {\n setBlocked(false);\n });\n });\n\n animate('.letter-secondary', config.secondary.animate, TRANSITION).then(() => {\n animate('.letter-secondary', config.secondary.reset, { duration: 0 });\n });\n }\n\n function getRandomDelay() {\n return Math.floor(Math.random() * DELAY * 1000);\n }\n\n function getRandomDirection() {\n const index = Math.floor(Math.random() * DIRECTIONS.length);\n return DIRECTIONS[index];\n }\n\n const containerClass = direction.includes('Left') || direction.includes('Right')\n ? 'flex-row'\n : 'flex-col';\n\n return (\n <span className={cn('flex justify-center items-center relative overflow-hidden', containerClass, className)} ref={scope}>\n <span className=\"relative flex whitespace-pre\" aria-hidden={true}>\n <motion.span\n className=\"letter relative\"\n style={config.primary.style}\n >\n {letter}\n </motion.span>\n <motion.span\n className=\"letter-secondary absolute\"\n style={config.secondary.initial}\n >\n {letter}\n </motion.span>\n </span>\n </span>\n );\n}\n\nconst ANIMATION_CONFIGS = {\n topToBottom: {\n primary: {\n initial: { y: 0 },\n animate: { y: '100%' },\n reset: { y: 0 },\n style: { top: 0 },\n },\n secondary: {\n initial: { top: '-100%' },\n animate: { top: '0%' },\n reset: { top: '-100%' },\n },\n },\n bottomToTop: {\n primary: {\n initial: { y: 0 },\n animate: { y: '-100%' },\n reset: { y: 0 },\n style: { top: 0 },\n },\n secondary: {\n initial: { top: '100%' },\n animate: { top: '0%' },\n reset: { top: '100%' },\n },\n },\n rightToLeft: {\n primary: {\n initial: { x: 0 },\n animate: { x: '-100%' },\n reset: { x: 0 },\n style: { left: 0 },\n },\n secondary: {\n initial: { left: '100%' },\n animate: { left: '0%' },\n reset: { left: '100%' },\n },\n },\n leftToRight: {\n primary: {\n initial: { x: 0 },\n animate: { x: '100%' },\n reset: { x: 0 },\n style: { left: 0 },\n },\n secondary: {\n initial: { left: '-100%' },\n animate: { left: '0%' },\n reset: { left: '-100%' },\n },\n },\n};\n","import { cn } from '@digo-labs/common';\n\nimport { Icon, Marquee, TextScramble } from '..';\n\ninterface MarqueeBarProperties {\n direction?: 'left' | 'right' | 'up' | 'down';\n className?: string;\n}\n\nexport function MarqueeBar(properties: MarqueeBarProperties) {\n const { className, direction = 'right' } = properties;\n\n function renderType(content: MarqueeBarContent, key: string | number) {\n switch (content.type) {\n case 'text':\n return (\n <TextScramble\n key={key}\n duration={1.5}\n >\n {content.content}\n </TextScramble>\n );\n case 'icon':\n return (\n <Icon key={key} icon={content.content} className=\"size-5\" />\n );\n }\n }\n\n return (\n <Marquee\n baseVelocity={-8}\n repeat={6}\n draggable={true}\n scrollSpringConfig={{ damping: 50, stiffness: 400 }}\n slowDownFactor={0.1}\n slowdownOnHover\n slowDownSpringConfig={{ damping: 60, stiffness: 300 }}\n scrollAwareDirection={true}\n useScrollVelocity={true}\n direction={direction}\n className={cn('typo-code typo-xs text-neutral bg-accent border-neutral pointer-events-auto w-full items-center gap-4 overflow-hidden p-2', className)}\n >\n <div className=\"flex flex-row items-center gap-4 \">\n {CONTENT.map((content, index) => renderType(content, index))}\n </div>\n </Marquee>\n );\n}\n\ninterface MarqueeBarContent {\n type: 'icon' | 'text';\n content: string;\n}\n\nconst CONTENT: MarqueeBarContent[] = [\n { type: 'text', content: 'Charity is overrated. Try us.' },\n { type: 'icon', content: 'code' },\n { type: 'text', content: 'Turn cash into pure nothingness' },\n { type: 'text', content: '///////////////' },\n];\n","import { cn } from '@digo-labs/common';\n\nimport { CSSProperties, PointerEvent, ReactNode, RefObject, useRef } from 'react';\n\nimport { motion, SpringOptions, useAnimationFrame, useMotionValue, useScroll, useSpring, useTransform, useVelocity } from 'motion/react';\n\nfunction wrap(min: number, max: number, value: number): number {\n const range = max - min;\n return ((((value - min) % range) + range) % range) + min;\n};\n\ninterface SimpleMarqueeProperties {\n children: ReactNode;\n className?: string;\n direction?: 'left' | 'right' | 'up' | 'down';\n baseVelocity?: number;\n easing?: (value: number) => number;\n slowdownOnHover?: boolean;\n slowDownFactor?: number;\n slowDownSpringConfig?: SpringOptions;\n useScrollVelocity?: boolean;\n scrollAwareDirection?: boolean;\n scrollSpringConfig?: SpringOptions;\n scrollContainer?: RefObject<HTMLElement> | HTMLElement | null;\n repeat?: number;\n draggable?: boolean;\n dragSensitivity?: number;\n dragVelocityDecay?: number;\n dragAwareDirection?: boolean;\n dragAngle?: number;\n grabCursor?: boolean;\n style?: CSSProperties;\n}\n\nexport function Marquee(properites: SimpleMarqueeProperties) {\n const {\n children,\n className,\n direction = 'right',\n baseVelocity = 5,\n slowdownOnHover = false,\n slowDownFactor = 0.3,\n slowDownSpringConfig = { damping: 50, stiffness: 400 },\n useScrollVelocity = false,\n scrollAwareDirection = false,\n scrollSpringConfig = { damping: 50, stiffness: 400 },\n scrollContainer,\n repeat = 3,\n draggable = false,\n dragSensitivity = 0.2,\n dragVelocityDecay = 0.96,\n dragAwareDirection = false,\n dragAngle = 0,\n grabCursor = false,\n style,\n easing,\n } = properites;\n\n const innerContainer = useRef<HTMLDivElement>(null);\n const baseX = useMotionValue(0);\n const baseY = useMotionValue(0);\n\n const { scrollY } = useScroll({ container: (scrollContainer as RefObject<HTMLDivElement>) || innerContainer.current });\n\n const scrollVelocity = useVelocity(scrollY);\n const smoothVelocity = useSpring(scrollVelocity, scrollSpringConfig);\n\n const hoverFactorValue = useMotionValue(1);\n const defaultVelocity = useMotionValue(1);\n\n const isDragging = useRef(false);\n\n const dragVelocity = useRef(0);\n\n const smoothHoverFactor = useSpring(hoverFactorValue, slowDownSpringConfig);\n\n const velocityFactor = useTransform(useScrollVelocity ? smoothVelocity : defaultVelocity, [0, 1000], [0, 5], { clamp: false });\n\n const isHorizontal = direction === 'left' || direction === 'right';\n\n const actualBaseVelocity = direction === 'left' || direction === 'up' ? -baseVelocity : baseVelocity;\n\n const isHovered = useRef(false);\n\n const directionFactor = useRef(1);\n\n const x = useTransform(baseX, (v) => {\n const wrappedValue = wrap(0, -100, v);\n return `${easing ? easing(wrappedValue / -100) * -100 : wrappedValue}%`;\n });\n\n const y = useTransform(baseY, (v) => {\n const wrappedValue = wrap(0, -100, v);\n return `${easing ? easing(wrappedValue / -100) * -100 : wrappedValue}%`;\n });\n\n useAnimationFrame((_, delta) => {\n if (isDragging.current && draggable) {\n if (isHorizontal) {\n baseX.set(baseX.get() + dragVelocity.current);\n } else {\n baseY.set(baseY.get() + dragVelocity.current);\n }\n\n dragVelocity.current *= 0.9;\n\n if (Math.abs(dragVelocity.current) < 0.01) {\n dragVelocity.current = 0;\n }\n\n return;\n }\n\n if (isHovered.current) {\n hoverFactorValue.set(slowdownOnHover ? slowDownFactor : 1);\n } else {\n hoverFactorValue.set(1);\n }\n\n let moveBy = directionFactor.current * actualBaseVelocity * (delta / 1000) * smoothHoverFactor.get();\n\n if (scrollAwareDirection && !isDragging.current) {\n if (velocityFactor.get() < 0) {\n directionFactor.current = -1;\n } else if (velocityFactor.get() > 0) {\n directionFactor.current = 1;\n }\n }\n\n moveBy += directionFactor.current * moveBy * velocityFactor.get();\n\n if (draggable) {\n moveBy += dragVelocity.current;\n\n if (dragAwareDirection && Math.abs(dragVelocity.current) > 0.1) {\n directionFactor.current = Math.sign(dragVelocity.current);\n }\n\n if (!isDragging.current && Math.abs(dragVelocity.current) > 0.01) {\n dragVelocity.current *= dragVelocityDecay;\n } else if (!isDragging.current) {\n dragVelocity.current = 0;\n }\n }\n\n if (isHorizontal) {\n baseX.set(baseX.get() + moveBy);\n } else {\n baseY.set(baseY.get() + moveBy);\n }\n });\n\n const lastPointerPosition = useRef({ x: 0, y: 0 });\n\n function handlePointerDown(e: PointerEvent) {\n if (!draggable)\n return\n ;(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n\n if (grabCursor) {\n ;(e.currentTarget as HTMLElement).style.cursor = 'grabbing';\n }\n\n isDragging.current = true;\n lastPointerPosition.current = { x: e.clientX, y: e.clientY };\n\n dragVelocity.current = 0;\n };\n\n function handlePointerMove(e: PointerEvent) {\n if (!draggable || !isDragging.current) return;\n\n const currentPosition = { x: e.clientX, y: e.clientY };\n\n const deltaX = currentPosition.x - lastPointerPosition.current.x;\n const deltaY = currentPosition.y - lastPointerPosition.current.y;\n\n const angleInRadians = (dragAngle * Math.PI) / 180;\n\n const directionX = Math.cos(angleInRadians);\n const directionY = Math.sin(angleInRadians);\n\n const projectedDelta = deltaX * directionX + deltaY * directionY;\n\n dragVelocity.current = projectedDelta * dragSensitivity;\n\n lastPointerPosition.current = currentPosition;\n };\n\n function handlePointerUp(e: PointerEvent) {\n if (!draggable) return // Release pointer capture\n ;(e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId);\n\n isDragging.current = false;\n };\n\n return (\n <motion.div\n className={cn('flex', isHorizontal ? 'flex-row' : 'flex-col', className)}\n onHoverStart={() => (isHovered.current = true)}\n onHoverEnd={() => (isHovered.current = false)}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n ref={innerContainer}\n style={style}\n >\n {Array.from({ length: repeat }, (_, i) => i).map(i => (\n <motion.div\n key={i}\n className={cn(\n 'shrink-0',\n isHorizontal && 'flex',\n draggable && grabCursor && 'cursor-grab',\n )}\n style={isHorizontal ? { x } : { y }}\n aria-hidden={i > 0}\n >\n {children}\n </motion.div>\n ))}\n </motion.div>\n );\n};\n","import { cn } from '@digo-labs/common';\n\nimport { useRef, useEffect } from 'react';\n\ninterface NoiseProperties {\n patternSize?: number;\n patternScaleX?: number;\n patternScaleY?: number;\n patternRefreshInterval?: number;\n patternAlpha?: number;\n className?: string;\n}\n\nexport function Noise(properties: NoiseProperties) {\n const {\n patternSize = 250,\n patternScaleX = 1,\n patternScaleY = 1,\n patternRefreshInterval = 2,\n patternAlpha = 15,\n className,\n } = properties;\n\n const grainRef = useRef<HTMLCanvasElement | null>(null);\n\n useEffect(() => {\n const canvas = grainRef.current;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d', { alpha: true });\n if (!ctx) return;\n\n let frame = 0;\n let animationId: number;\n\n const canvasSize = 1024;\n\n const resize = () => {\n if (!canvas) return;\n canvas.width = canvasSize;\n canvas.height = canvasSize;\n\n canvas.style.width = '100vw';\n canvas.style.height = '100vh';\n };\n\n const drawGrain = () => {\n const imageData = ctx.createImageData(canvasSize, canvasSize);\n const data = imageData.data;\n\n for (let i = 0; i < data.length; i += 4) {\n const value = Math.random() * 255;\n data[i] = value;\n data[i + 1] = value;\n data[i + 2] = value;\n data[i + 3] = patternAlpha;\n }\n\n ctx.putImageData(imageData, 0, 0);\n };\n\n const loop = () => {\n if (frame % patternRefreshInterval === 0) {\n drawGrain();\n }\n frame++;\n animationId = window.requestAnimationFrame(loop);\n };\n\n window.addEventListener('resize', resize);\n resize();\n loop();\n\n return () => {\n window.removeEventListener('resize', resize);\n window.cancelAnimationFrame(animationId);\n };\n }, [patternSize, patternScaleX, patternScaleY, patternRefreshInterval, patternAlpha]);\n\n return (\n <div className={cn('pointer-events-none absolute inset-0 grid', className)}>\n <canvas\n className=\"size-full\"\n ref={grainRef}\n style={{\n imageRendering: 'pixelated',\n }}\n />\n </div>\n );\n};\n","import { cn } from '@digo-labs/common';\n\nimport { CSSProperties, useEffect, useRef } from 'react';\nimport { Renderer, Program, Mesh, Triangle, Vec3 } from 'ogl';\n\ntype ColorRGB = [number, number, number];\n\ninterface Properties {\n hue?: number;\n className?: string;\n innerRadius?: number;\n noiseScale?: number;\n rotationSpeed?: number;\n color1?: ColorRGB;\n color2?: ColorRGB;\n color3?: ColorRGB;\n style?: CSSProperties;\n}\n\nexport function Orb(properties: Properties) {\n const {\n hue = 0,\n rotationSpeed = 0,\n innerRadius = 0.6,\n noiseScale = 0.65,\n color1 = [1, 1, 1],\n color2 = [1, 0, 0],\n color3 = [0, 0, 1],\n style,\n className,\n } = properties;\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n const programRef = useRef<Program | null>(null);\n\n const vert = `\n precision highp float;\n attribute vec2 position;\n attribute vec2 uv;\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 0.0, 1.0);\n }\n `;\n\n const frag = `\n precision highp float;\n\n uniform float iTime;\n uniform float hue;\n uniform float innerRadius;\n uniform float noiseScale;\n uniform float rotationSpeed;\n uniform vec3 iResolution;\n uniform vec3 baseColor1;\n uniform vec3 baseColor2;\n uniform vec3 baseColor3;\n varying vec2 vUv;\n\n vec3 rgb2yiq(vec3 c) {\n float y = dot(c, vec3(0.299, 0.587, 0.114));\n float i = dot(c, vec3(0.596, -0.274, -0.322));\n float q = dot(c, vec3(0.211, -0.523, 0.312));\n return vec3(y, i, q);\n }\n \n vec3 yiq2rgb(vec3 c) {\n float r = c.x + 0.956 * c.y + 0.621 * c.z;\n float g = c.x - 0.272 * c.y - 0.647 * c.z;\n float b = c.x - 1.106 * c.y + 1.703 * c.z;\n return vec3(r, g, b);\n }\n \n vec3 adjustHue(vec3 color, float hueDeg) {\n float hueRad = hueDeg * 3.14159265 / 180.0;\n vec3 yiq = rgb2yiq(color);\n float cosA = cos(hueRad);\n float sinA = sin(hueRad);\n float i = yiq.y * cosA - yiq.z * sinA;\n float q = yiq.y * sinA + yiq.z * cosA;\n yiq.y = i;\n yiq.z = q;\n return yiq2rgb(yiq);\n }\n \n vec3 hash33(vec3 p3) {\n p3 = fract(p3 * vec3(0.1031, 0.11369, 0.13787));\n p3 += dot(p3, p3.yxz + 19.19);\n return -1.0 + 2.0 * fract(vec3(\n p3.x + p3.y,\n p3.x + p3.z,\n p3.y + p3.z\n ) * p3.zyx);\n }\n \n float snoise3(vec3 p) {\n const float K1 = 0.333333333;\n const float K2 = 0.166666667;\n vec3 i = floor(p + (p.x + p.y + p.z) * K1);\n vec3 d0 = p - (i - (i.x + i.y + i.z) * K2);\n vec3 e = step(vec3(0.0), d0 - d0.yzx);\n vec3 i1 = e * (1.0 - e.zxy);\n vec3 i2 = 1.0 - e.zxy * (1.0 - e);\n vec3 d1 = d0 - (i1 - K2);\n vec3 d2 = d0 - (i2 - K1);\n vec3 d3 = d0 - 0.5;\n vec4 h = max(0.6 - vec4(\n dot(d0, d0),\n dot(d1, d1),\n dot(d2, d2),\n dot(d3, d3)\n ), 0.0);\n vec4 n = h * h * h * h * vec4(\n dot(d0, hash33(i)),\n dot(d1, hash33(i + i1)),\n dot(d2, hash33(i + i2)),\n dot(d3, hash33(i + 1.0))\n );\n return dot(vec4(31.316), n);\n }\n \n vec4 extractAlpha(vec3 colorIn) {\n float a = max(max(colorIn.r, colorIn.g), colorIn.b);\n return vec4(colorIn.rgb / (a + 1e-5), a);\n }\n \n \n float light1(float intensity, float attenuation, float dist) {\n return intensity / (1.0 + dist * attenuation);\n }\n \n float light2(float intensity, float attenuation, float dist) {\n return intensity / (1.0 + dist * dist * attenuation);\n }\n \n vec4 draw(vec2 uv) {\n vec3 color1 = adjustHue(baseColor1, hue);\n vec3 color2 = adjustHue(baseColor2, hue);\n vec3 color3 = adjustHue(baseColor3, hue);\n \n float ang = atan(uv.y, uv.x);\n float len = length(uv);\n float invLen = len > 0.0 ? 1.0 / len : 0.0;\n \n float n0 = snoise3(vec3(uv * noiseScale, iTime * 0.5)) * 0.5 + 0.5;\n float r0 = mix(mix(innerRadius, 1.0, 0.4), mix(innerRadius, 1.0, 0.6), n0);\n float d0 = distance(uv, (r0 * invLen) * uv);\n float v0 = light1(1.0, 10.0, d0);\n v0 *= smoothstep(r0 * 1.05, r0, len);\n float cl = cos(ang + iTime * 2.0) * 0.5 + 0.5;\n \n float a = iTime * -1.0;\n vec2 pos = vec2(cos(a), sin(a)) * r0;\n float d = distance(uv, pos);\n float v1 = light2(1.5, 5.0, d);\n v1 *= light1(1.0, 50.0, d0);\n \n float v2 = smoothstep(1.0, mix(innerRadius, 1.0, n0 * 0.5), len);\n float v3 = smoothstep(innerRadius, mix(innerRadius, 1.0, 0.5), len);\n \n vec3 col = mix(color1, color2, cl);\n col = mix(color3, col, v0);\n col = (col + v1) * v2;\n col = clamp(col, 0.0, 1.0);\n \n return extractAlpha(col);\n }\n \n vec4 mainImage(vec2 fragCoord) {\n vec2 center = iResolution.xy * 0.5;\n float size = min(iResolution.x, iResolution.y);\n vec2 uv = (fragCoord - center) / size * 2.0;\n \n float angle = iTime * rotationSpeed;\n float s = sin(angle);\n float c = cos(angle);\n uv = vec2(c * uv.x - s * uv.y, s * uv.x + c * uv.y);\n \n return draw(uv);\n }\n \n void main() {\n vec2 fragCoord = vUv * iResolution.xy;\n vec4 col = mainImage(fragCoord);\n gl_FragColor = vec4(col.rgb * col.a, col.a);\n }\n `;\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const renderer = new Renderer({ alpha: true, premultipliedAlpha: false });\n\n const gl = renderer.gl;\n\n gl.clearColor(0, 0, 0, 0);\n\n container.appendChild(gl.canvas);\n\n const geometry = new Triangle(gl);\n\n const program = new Program(gl, {\n vertex: vert,\n fragment: frag,\n uniforms: {\n iTime: { value: 0 },\n iResolution: {\n value: new Vec3(gl.canvas.width, gl.canvas.height, gl.canvas.width / gl.canvas.height),\n },\n hue: { value: hue },\n rotationSpeed: { value: rotationSpeed },\n innerRadius: { value: innerRadius },\n noiseScale: { value: noiseScale },\n baseColor1: { value: new Vec3(...color1) },\n baseColor2: { value: new Vec3(...color2) },\n baseColor3: { value: new Vec3(...color3) },\n },\n });\n\n programRef.current = program;\n\n const mesh = new Mesh(gl, { geometry, program });\n\n function resize() {\n if (!container) return;\n const dpr = window.devicePixelRatio || 1;\n const width = container.clientWidth;\n const height = container.clientHeight;\n\n renderer.setSize(width * dpr, height * dpr);\n\n gl.canvas.style.width = width + 'px';\n gl.canvas.style.height = height + 'px';\n\n program.uniforms.iResolution.value.set(gl.canvas.width, gl.canvas.height, gl.canvas.width / gl.canvas.height);\n }\n\n window.addEventListener('resize', resize);\n\n resize();\n\n let rafId: number;\n\n const update = (t: number) => {\n rafId = requestAnimationFrame(update);\n\n program.uniforms.iTime.value = t * 0.001;\n\n renderer.render({ scene: mesh });\n };\n rafId = requestAnimationFrame(update);\n\n return () => {\n cancelAnimationFrame(rafId);\n window.removeEventListener('resize', resize);\n container.removeChild(gl.canvas);\n gl.getExtension('WEBGL_lose_context')?.loseContext();\n };\n }, []);\n\n useEffect(() => {\n if (!programRef.current) return;\n\n programRef.current.uniforms.hue.value = hue;\n programRef.current.uniforms.rotationSpeed.value = rotationSpeed;\n programRef.current.uniforms.noiseScale.value = noiseScale;\n programRef.current.uniforms.innerRadius.value = innerRadius;\n programRef.current.uniforms.baseColor1.value.set(...color1);\n programRef.current.uniforms.baseColor2.value.set(...color2);\n programRef.current.uniforms.baseColor3.value.set(...color3);\n }, [hue, rotationSpeed, noiseScale, innerRadius, color1, color2, color3]);\n\n return (\n\n <div\n ref={containerRef}\n className={cn('h-full w-full', className)}\n style={style}\n />\n\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { AnimatePresence, motion, Transition, Variants } from 'motion/react';\n\nimport { useMemo, useId, CSSProperties } from 'react';\n\nexport interface TextMorphProperties {\n children: string;\n className?: string;\n style?: CSSProperties;\n variants?: Variants;\n transition?: Transition;\n damping?: number;\n stiffness?: number;\n mass?: number;\n onFinish?: () => void;\n};\n\nexport function TextMorph(properties: TextMorphProperties) {\n const {\n children,\n className,\n style,\n variants,\n transition,\n damping = 10,\n stiffness = 150,\n mass = 0.5,\n onFinish,\n } = properties;\n\n const uniqueId = useId();\n\n const characters = useMemo(() => {\n const charCounts: Record<string, number> = {};\n\n return children.split('').map((char) => {\n const lowerChar = char.toLowerCase();\n charCounts[lowerChar] = (charCounts[lowerChar] || 0) + 1;\n\n return {\n id: `${uniqueId}-${lowerChar}${charCounts[lowerChar]}`,\n label: char === ' ' ? '\\u00A0' : char,\n };\n });\n }, [children, uniqueId]);\n\n const defaultVariants: Variants = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n };\n\n const defaultTransition: Transition = {\n type: 'spring',\n stiffness: stiffness,\n damping: damping,\n mass: mass,\n };\n\n return (\n <p className={cn(className)} aria-label={children} style={style}>\n <AnimatePresence mode=\"popLayout\" initial={false} onExitComplete={onFinish}>\n {characters.map(character => (\n <motion.span\n key={character.id}\n layoutId={character.id}\n className=\"inline-block transform-gpu\"\n aria-hidden=\"true\"\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={variants || defaultVariants}\n transition={transition || defaultTransition}\n >\n {character.label}\n </motion.span>\n ))}\n </AnimatePresence>\n </p>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { useEffect, useRef, useState } from 'react';\n\ninterface TextPressureProps {\n text?: string;\n width?: boolean;\n weight?: boolean;\n italic?: boolean;\n alpha?: boolean;\n flex?: boolean;\n scale?: boolean;\n className?: string;\n minFontSize?: number;\n}\n\nexport function TextPressure(properties: TextPressureProps) {\n const {\n text = 'Compressa',\n width = true,\n weight = true,\n italic = true,\n alpha = false,\n scale = false,\n className = '',\n minFontSize = 24,\n } = properties;\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const titleRef = useRef<HTMLHeadingElement | null>(null);\n const spansRef = useRef<(HTMLSpanElement | null)[]>([]);\n\n const mouseRef = useRef({ x: 0, y: 0 });\n const cursorRef = useRef({ x: 0, y: 0 });\n\n const [fontSize, setFontSize] = useState(minFontSize);\n const [scaleY, setScaleY] = useState(1);\n const [lineHeight, setLineHeight] = useState(1);\n\n const chars = text.split('');\n\n const dist = (a: { x: number; y: number; }, b: { x: number; y: number; }) => {\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => {\n cursorRef.current.x = e.clientX;\n cursorRef.current.y = e.clientY;\n };\n\n const handleTouchMove = (e: TouchEvent) => {\n const t = e.touches[0];\n cursorRef.current.x = t.clientX;\n cursorRef.current.y = t.clientY;\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n\n window.addEventListener('touchmove', handleTouchMove, { passive: false });\n\n if (containerRef.current) {\n const { left, top, width, height } = containerRef.current.getBoundingClientRect();\n mouseRef.current.x = left + width / 2;\n mouseRef.current.y = top + height / 2;\n cursorRef.current.x = mouseRef.current.x;\n cursorRef.current.y = mouseRef.current.y;\n }\n\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('touchmove', handleTouchMove);\n };\n }, []);\n\n const setSize = () => {\n if (!containerRef.current || !titleRef.current) return;\n\n const { width: containerW, height: containerH } = containerRef.current.getBoundingClientRect();\n\n let newFontSize = containerW / (chars.length / 2);\n newFontSize = Math.max(newFontSize, minFontSize);\n\n setFontSize(newFontSize);\n setScaleY(1);\n setLineHeight(1);\n\n requestAnimationFrame(() => {\n if (!titleRef.current) return;\n const textRect = titleRef.current.getBoundingClientRect();\n\n if (scale && textRect.height > 0) {\n const yRatio = containerH / textRect.height;\n setScaleY(yRatio);\n setLineHeight(yRatio);\n }\n });\n };\n\n useEffect(() => {\n setSize();\n\n window.addEventListener('resize', setSize);\n\n return () => window.removeEventListener('resize', setSize);\n }, [scale, text]);\n\n useEffect(() => {\n let rafId: number;\n const animate = () => {\n mouseRef.current.x += (cursorRef.current.x - mouseRef.current.x) / 15;\n mouseRef.current.y += (cursorRef.current.y - mouseRef.current.y) / 15;\n\n if (titleRef.current) {\n const titleRect = titleRef.current.getBoundingClientRect();\n const maxDist = titleRect.width / 2;\n\n spansRef.current.forEach((span) => {\n if (!span) return;\n\n const rect = span.getBoundingClientRect();\n const charCenter = {\n x: rect.x + rect.width / 2,\n y: rect.y + rect.height / 2,\n };\n\n const d = dist(mouseRef.current, charCenter);\n\n const getAttr = (distance: number, minVal: number, maxVal: number) => {\n const val = maxVal - Math.abs((maxVal * distance) / maxDist);\n return Math.max(minVal, val + minVal);\n };\n\n const wdth = width ? Math.floor(getAttr(d, 5, 200)) : 100;\n const wght = weight ? Math.floor(getAttr(d, 100, 900)) : 400;\n const italVal = italic ? getAttr(d, 0, 1).toFixed(2) : '0';\n const alphaVal = alpha ? getAttr(d, 0, 1).toFixed(2) : '1';\n\n span.style.opacity = alphaVal;\n span.style.fontVariationSettings = `'wght' ${wght}, 'wdth' ${wdth}, 'ital' ${italVal}`;\n });\n }\n\n rafId = requestAnimationFrame(animate);\n };\n\n animate();\n return () => cancelAnimationFrame(rafId);\n }, [width, weight, italic, alpha, chars.length]);\n\n return (\n <div\n ref={containerRef}\n className=\"relative size-full overflow-hidden bg-transparent\"\n >\n\n <h1\n ref={titleRef}\n className={cn('text-center typo-test uppercase text-neutral select-none flex justify-between', className)}\n style={{\n fontSize: fontSize,\n lineHeight,\n transform: `scale(1, ${scaleY})`,\n transformOrigin: 'center top',\n margin: 0,\n fontWeight: 100,\n }}\n >\n {chars.map((char, i) => (\n <span\n key={i}\n ref={(el) => { spansRef.current[i] = el; }}\n data-char={char}\n className=\"inline-block\"\n >\n {char}\n </span>\n ))}\n </h1>\n </div>\n );\n};\n","import { motion, VariantLabels, Target, TargetAndTransition, Transition } from 'motion/react';\n\ninterface Properties {\n children: string;\n duration?: number;\n getEnterDelay?: (index: number) => number;\n getExitDelay?: (index: number) => number;\n className?: string;\n transition?: Transition;\n variants?: {\n enter: {\n initial: Target | VariantLabels | boolean;\n animate: TargetAndTransition | VariantLabels;\n };\n exit: {\n initial: Target | VariantLabels | boolean;\n animate: TargetAndTransition | VariantLabels;\n };\n };\n onAnimationComplete?: () => void;\n};\n\nexport function TextRoll(properties: Properties) {\n const {\n children,\n duration = 0.5,\n getEnterDelay = i => i * 0.1,\n getExitDelay = i => i * 0.1 + 0.2,\n className,\n transition = { ease: 'easeIn' },\n variants,\n onAnimationComplete,\n } = properties;\n\n const defaultVariants = {\n enter: {\n initial: { rotateX: 0 },\n animate: { rotateX: 90 },\n },\n exit: {\n initial: { rotateX: 90 },\n animate: { rotateX: 0 },\n },\n } as const;\n\n const letters = children.split('');\n\n return (\n <span className={className}>\n {letters.map((letter, i) => {\n return (\n <span\n key={i}\n className=\"relative inline-block [width:auto] [perspective:10000px] [transform-style:preserve-3d]\"\n aria-hidden=\"true\"\n >\n <motion.span\n className=\"absolute inline-block [transform-origin:50%_25%] [backface-visibility:hidden]\"\n initial={\n variants?.enter?.initial ?? defaultVariants.enter.initial\n }\n animate={\n variants?.enter?.animate ?? defaultVariants.enter.animate\n }\n transition={{\n ...transition,\n duration,\n delay: getEnterDelay(i),\n }}\n >\n {letter === ' ' ? '\\u00A0' : letter}\n </motion.span>\n <motion.span\n className=\"absolute inline-block [transform-origin:50%_100%] [backface-visibility:hidden]\"\n initial={variants?.exit?.initial ?? defaultVariants.exit.initial}\n animate={variants?.exit?.animate ?? defaultVariants.exit.animate}\n transition={{\n ...transition,\n duration,\n delay: getExitDelay(i),\n }}\n onAnimationComplete={\n letters.length === i + 1 ? onAnimationComplete : undefined\n }\n >\n {letter === ' ' ? '\\u00A0' : letter}\n </motion.span>\n <span className=\"invisible\">\n {letter === ' ' ? '\\u00A0' : letter}\n </span>\n </span>\n );\n })}\n <span className=\"sr-only\">{children}</span>\n </span>\n );\n}\n","import { CSSProperties, type JSX, useEffect, useState } from 'react';\nimport { motion, MotionProps } from 'motion/react';\n\ninterface Properties extends MotionProps {\n children: string;\n duration?: number;\n delay?: number;\n characterSet?: 'default' | 'binary';\n as?: React.ElementType;\n className?: string;\n style?: CSSProperties;\n trigger?: boolean;\n triggerOnMouse?: boolean;\n onScrambleComplete?: () => void;\n}\n\nconst DEFAULT_CHARACTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\nconst BINARY_CHARACTERS = '01';\n\nexport function TextScramble(properties: Properties) {\n const {\n children,\n duration = 0.8,\n delay = 0.04,\n characterSet = 'default',\n className,\n as: Component = 'p',\n trigger = true,\n onScrambleComplete,\n triggerOnMouse = false,\n style,\n ...props\n } = properties;\n\n const MotionComponent = motion.create(Component as keyof JSX.IntrinsicElements);\n const [displayText, setDisplayText] = useState(children);\n const [isAnimating, setIsAnimating] = useState(false);\n const [isTrigger, setIsTrigger] = useState(trigger);\n\n useEffect(() => {\n setIsTrigger(trigger);\n }, [trigger]);\n\n useEffect(() => {\n setDisplayText(children);\n\n if (isAnimating) return;\n\n setIsTrigger(true);\n }, [children]);\n\n useEffect(() => {\n if (!isTrigger) return;\n\n setIsTrigger(false);\n\n scramble();\n }, [isTrigger]);\n\n async function scramble() {\n if (isAnimating) return;\n\n setIsAnimating(true);\n\n const steps = duration / delay;\n let step = 0;\n\n const characters = characterSet === 'binary' ? BINARY_CHARACTERS : DEFAULT_CHARACTERS;\n\n const interval = setInterval(() => {\n let scrambled = '';\n const progress = step / steps;\n\n for (let i = 0; i < children.length; i++) {\n if (children[i] === ' ') {\n scrambled += ' ';\n continue;\n }\n\n if (progress * children.length > i) {\n scrambled += children[i];\n } else {\n scrambled += characters[Math.floor(Math.random() * characters.length)];\n }\n }\n\n setDisplayText(scrambled);\n step++;\n\n if (step > steps) {\n clearInterval(interval);\n setDisplayText(children);\n setIsAnimating(false);\n setIsTrigger(false);\n onScrambleComplete?.();\n }\n }, delay * 1000);\n };\n\n return (\n <div onMouseEnter={() => !isAnimating && triggerOnMouse && setIsTrigger(true)}>\n <MotionComponent className={className} style={style} {...props}>\n {displayText}\n </MotionComponent>\n </div>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { CSSProperties, ElementType, useMemo, type JSX } from 'react';\nimport { motion } from 'motion/react';\n\nimport { ComponentStylesProps, createComponentStyles } from '../utils/styles';\n\nconst { ComponentStylesProvider, useComponentStyles } = createComponentStyles('textShimmer');\n\ntype Properties = RootProperties & ComponentStylesProps<'textShimmer'>;\n\nexport function TextShimmer(properties: Properties) {\n const { classNames, ...props } = properties;\n\n return (\n <ComponentStylesProvider classNames={classNames}>\n <TextShimmerRoot {...props} />\n </ComponentStylesProvider>\n );\n}\n\ninterface RootProperties {\n children: string;\n as?: ElementType;\n className?: string;\n duration?: number;\n spread?: number;\n highlightColor?: string;\n}\n\nfunction TextShimmerRoot(properties: RootProperties) {\n const {\n children,\n as: Component = 'p',\n className,\n duration = 2,\n spread = 2,\n highlightColor = '#000',\n } = properties;\n\n const styles = useComponentStyles();\n const MotionComponent = motion.create(Component as keyof JSX.IntrinsicElements);\n const dynamicSpread = useMemo(() => children.length * spread, [children, spread]);\n\n return (\n <MotionComponent\n data-slot=\"text-shimmer\"\n className={cn(styles.root, className)}\n initial={{ backgroundPosition: '100% center' }}\n animate={{ backgroundPosition: '0% center' }}\n transition={{\n repeat: Infinity,\n duration: duration,\n ease: 'linear',\n }}\n style={{\n backgroundImage: `linear-gradient(90deg, currentColor calc(50% - ${dynamicSpread}px), ${highlightColor} 50%, currentColor calc(50% + ${dynamicSpread}px))`,\n backgroundSize: '250% 100%',\n backgroundClip: 'text',\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n backgroundRepeat: 'no-repeat',\n } as CSSProperties}\n >\n {children}\n </MotionComponent>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { type JSX } from 'react';\nimport { motion, Transition } from 'motion/react';\n\ninterface Properties {\n children: string;\n as?: React.ElementType;\n className?: string;\n duration?: number;\n zDistance?: number;\n xDistance?: number;\n yDistance?: number;\n spread?: number;\n scaleDistance?: number;\n rotateYDistance?: number;\n transition?: Transition;\n};\n\nexport function TextShimmerWave(properties: Properties) {\n const {\n children,\n as: Component = 'p',\n className,\n duration = 1,\n zDistance = 10,\n xDistance = 2,\n yDistance = -2,\n spread = 1,\n scaleDistance = 1.1,\n rotateYDistance = 10,\n transition,\n } = properties;\n\n const MotionComponent = motion.create(\n Component as keyof JSX.IntrinsicElements,\n );\n\n return (\n <MotionComponent\n className={cn(\n 'relative inline-block perspective-normal',\n '[--base-color:#a1a1aa] [--base-gradient-color:#000]',\n className,\n )}\n style={{ color: 'var(--base-color)' }}\n >\n {children.split('').map((char, i) => {\n const delay = (i * duration * (1 / spread)) / children.length;\n\n return (\n <motion.span\n key={i}\n className={cn(\n 'inline-block whitespace-pre transform-3d',\n )}\n initial={{\n translateZ: 0,\n scale: 1,\n rotateY: 0,\n color: 'var(--base-color)',\n }}\n animate={{\n translateZ: [0, zDistance, 0],\n translateX: [0, xDistance, 0],\n translateY: [0, yDistance, 0],\n scale: [1, scaleDistance, 1],\n rotateY: [0, rotateYDistance, 0],\n color: [\n 'var(--base-color)',\n 'var(--base-gradient-color)',\n 'var(--base-color)',\n ],\n }}\n transition={{\n duration: duration,\n repeat: Infinity,\n repeatDelay: (children.length * 0.05) / spread,\n delay,\n ease: 'easeInOut',\n ...transition,\n }}\n >\n {char}\n </motion.span>\n );\n })}\n </MotionComponent>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { LetterSwap } from '..';\n\ninterface TextSwapLetterProperties {\n word: string;\n className?: string;\n}\n\nexport function TextSwapLetter(properties: TextSwapLetterProperties) {\n const { word, className } = properties;\n\n return (\n <div className={cn('typo-header gap-4 overflow-hidden ', className)}>\n <div className=\"mb-[-2vw] flex items-center text-[20vw] leading-[16vw]\">\n {word.split('').map((letter, index) => (\n <LetterSwap\n key={index}\n letter={letter}\n />\n ))}\n </div>\n </div>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport { ElementType, useEffect, useRef, useState, createElement, useMemo, HTMLAttributes, ReactNode } from 'react';\n\nimport { gsap } from 'gsap';\n\ninterface Properties extends HTMLAttributes<HTMLElement> {\n className?: string;\n showCursor?: boolean;\n hideCursorWhileTyping?: boolean;\n hideCursorOnComplete?: boolean;\n cursorCharacter?: '|' | '█' | '▮' | '▌' | '_' | ReactNode;\n cursorBlinkDuration?: number;\n cursorClassName?: string;\n text: string | string[];\n as?: ElementType;\n typingSpeed?: number;\n initialDelay?: number;\n pauseDuration?: number;\n deletingSpeed?: number;\n loop?: boolean;\n textColors?: string[];\n variableSpeed?: { min: number; max: number; };\n onSentenceComplete?: (sentence: string, index: number) => void;\n startOnVisible?: boolean;\n reverseMode?: boolean;\n}\n\nexport function TextType(properties: Properties) {\n const {\n text,\n as: Component = 'div',\n typingSpeed = 50,\n initialDelay = 100,\n pauseDuration = 500,\n deletingSpeed = 20,\n loop = true,\n className = '',\n showCursor = true,\n hideCursorWhileTyping = false,\n hideCursorOnComplete = false,\n cursorCharacter = '▌',\n cursorClassName = '',\n cursorBlinkDuration = 0.5,\n textColors = [],\n variableSpeed,\n onSentenceComplete,\n startOnVisible = true,\n reverseMode = false,\n ...props\n } = properties;\n\n const [displayedText, setDisplayedText] = useState('');\n const [currentCharIndex, setCurrentCharIndex] = useState(0);\n const [isDeleting, setIsDeleting] = useState(false);\n const [currentTextIndex, setCurrentTextIndex] = useState(0);\n const [isVisible, setIsVisible] = useState(!startOnVisible);\n const [previousText, setPreviousText] = useState(text);\n const cursorRef = useRef<HTMLSpanElement>(null);\n const containerRef = useRef<HTMLElement>(null);\n\n const textArray = useMemo(() => (Array.isArray(text) ? text : [text]), [text]);\n\n useEffect(() => {\n if (previousText !== text && displayedText !== '') {\n setIsDeleting(true);\n setPreviousText(text);\n }\n }, [text, previousText, displayedText]);\n\n function getRandomSpeed() {\n if (!variableSpeed) return typingSpeed;\n\n const { min, max } = variableSpeed;\n\n return Math.random() * (max - min) + min;\n }\n\n function getCurrentTextColor() {\n if (textColors.length === 0) return;\n\n return textColors[currentTextIndex % textColors.length];\n };\n\n useEffect(() => {\n if (!startOnVisible || !containerRef.current) return;\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n setIsVisible(true);\n }\n });\n },\n { threshold: 0.1 },\n );\n\n observer.observe(containerRef.current);\n return () => observer.disconnect();\n }, [startOnVisible]);\n\n useEffect(() => {\n if (showCursor && cursorRef.current) {\n gsap.set(cursorRef.current, { opacity: 1 });\n gsap.to(cursorRef.current, {\n opacity: 0,\n duration: cursorBlinkDuration,\n repeat: -1,\n yoyo: true,\n ease: 'power2.inOut',\n });\n }\n }, [showCursor, cursorBlinkDuration]);\n\n useEffect(() => {\n if (!isVisible) return;\n\n let timeout: NodeJS.Timeout;\n\n const currentText = textArray[currentTextIndex];\n const processedText = reverseMode ? currentText.split('').reverse().join('') : currentText;\n\n const executeTypingAnimation = () => {\n if (isDeleting) {\n if (displayedText === '') {\n setIsDeleting(false);\n\n setCurrentCharIndex(0);\n\n if (Array.isArray(text)) {\n if (currentTextIndex === textArray.length - 1 && !loop) {\n return;\n }\n\n if (onSentenceComplete) {\n onSentenceComplete(textArray[currentTextIndex], currentTextIndex);\n }\n\n setCurrentTextIndex(prev => (prev + 1) % textArray.length);\n }\n\n timeout = setTimeout(() => {}, pauseDuration);\n } else {\n timeout = setTimeout(() => {\n setDisplayedText(prev => prev.slice(0, -1));\n }, deletingSpeed);\n }\n } else {\n if (currentCharIndex < processedText.length) {\n timeout = setTimeout(\n () => {\n setDisplayedText(prev => prev + processedText[currentCharIndex]);\n setCurrentCharIndex(prev => prev + 1);\n },\n variableSpeed ? getRandomSpeed() : typingSpeed,\n );\n } else {\n if (onSentenceComplete) {\n onSentenceComplete(textArray[currentTextIndex], currentTextIndex);\n }\n\n if (Array.isArray(text) && textArray.length > 1) {\n timeout = setTimeout(() => {\n setIsDeleting(true);\n }, pauseDuration);\n }\n }\n }\n };\n\n if (currentCharIndex === 0 && !isDeleting && displayedText === '') {\n timeout = setTimeout(executeTypingAnimation, initialDelay);\n } else {\n executeTypingAnimation();\n }\n\n return () => clearTimeout(timeout);\n }, [\n currentCharIndex,\n displayedText,\n isDeleting,\n typingSpeed,\n deletingSpeed,\n pauseDuration,\n textArray,\n currentTextIndex,\n loop,\n initialDelay,\n isVisible,\n reverseMode,\n variableSpeed,\n onSentenceComplete,\n text,\n ]);\n\n const isComplete = currentCharIndex >= textArray[currentTextIndex].length && !isDeleting;\n\n const hideOnComplete = hideCursorOnComplete && isComplete;\n\n const shouldHideCursor = hideCursorWhileTyping && (currentCharIndex < textArray[currentTextIndex].length || isDeleting);\n\n return createElement(\n Component,\n {\n ref: containerRef,\n className: cn('typo-10 typo-header inline-block tracking-tight whitespace-pre-wrap ', className),\n ...props,\n },\n <span className=\"inline\" style={{ color: getCurrentTextColor() || 'inherit' }}>\n {displayedText}\n </span>,\n !hideOnComplete && showCursor && (\n <span\n ref={cursorRef}\n className={cn('ml-1 inline-block opacity-100 ', shouldHideCursor && 'hidden', cursorClassName)}\n >\n {cursorCharacter}\n </span>\n ),\n );\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport function useAnimatedValue(duration: number): [number, () => void] {\n const [value, setValue] = useState(0);\n const startTimeRef = useRef(Date.now());\n const previousProgressRef = useRef(0);\n\n useEffect(() => {\n const animationId = requestAnimationFrame(animate);\n\n return () => cancelAnimationFrame(animationId);\n }, [duration]);\n\n function reset() {\n startTimeRef.current = Date.now();\n previousProgressRef.current = 0;\n setValue(0);\n };\n\n function animate() {\n const elapsed = Date.now() - startTimeRef.current;\n const progress = (elapsed % duration) / duration;\n\n setValue(progress * 100);\n\n previousProgressRef.current = progress;\n\n if (progress < 1) {\n requestAnimationFrame(animate);\n }\n };\n\n return [value, reset];\n};\n","import { Size } from '@digo-labs/common';\n\nimport { useLayoutEffect, useRef, useState } from 'react';\n\nexport function useElementSize<T extends HTMLElement>() {\n const ref = useRef<T | null>(null);\n const [size, setSize] = useState<Size>({ width: 0, height: 0 });\n\n useLayoutEffect(() => {\n const element = ref.current;\n\n if (!element) return;\n\n update(element);\n\n const resizeObserver = new ResizeObserver(() => update(element));\n\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, []);\n\n function update(element: T) {\n setSize({ width: element.clientWidth, height: element.clientHeight });\n };\n\n return { ref, ...size };\n}\n","import { useEffect, useState } from 'react';\n\nexport function useFocusSize(isFocused: boolean, duration: number = 1000) {\n const [size, setSize] = useState(0);\n\n useEffect(() => {\n let start: number | null = null;\n let animationFrameId: number;\n\n const animate = (timestamp: number) => {\n if (!start) start = timestamp;\n const elapsed = timestamp - start;\n const progress = Math.min(elapsed / duration, 1);\n const newSize = isFocused ? progress * 100 : (1 - progress) * 100;\n setSize(newSize);\n if (elapsed < duration) {\n animationFrameId = requestAnimationFrame(animate);\n }\n };\n\n animationFrameId = requestAnimationFrame(animate);\n\n return () => cancelAnimationFrame(animationFrameId);\n }, [isFocused, duration]);\n\n return size;\n};\n","import { useEffect, useState } from 'react';\n\nexport function usePreloadedImage(src: string): string {\n const [loadedSrc, setLoadedSrc] = useState(src);\n\n useEffect(() => {\n const image = new Image();\n image.src = src;\n\n image.onload = () => {\n setLoadedSrc(src);\n };\n }, [src]);\n\n return loadedSrc;\n}\n","import { useEffect, useRef, useState } from 'react';\n\nexport interface Stopwatch {\n start: () => void;\n stop: () => void;\n}\n\ninterface StopwatchOutput extends Stopwatch {\n seconds: number;\n}\n\nexport function useStopwatch(): StopwatchOutput {\n const intervalRef = useRef<NodeJS.Timeout>(undefined);\n\n const [seconds, setSeconds] = useState(0);\n\n useEffect(() => {\n return () => stop();\n }, []);\n\n function start() {\n if (intervalRef.current) return;\n\n setSeconds(0);\n\n intervalRef.current = setInterval(() => {\n setSeconds(prev => parseFloat((prev + 0.1).toFixed(1)));\n }, 100);\n };\n\n function stop() {\n if (!intervalRef.current) return;\n\n clearInterval(intervalRef.current);\n\n intervalRef.current = undefined;\n };\n\n return { start, stop, seconds };\n}\n","import { useEffect, useRef, useState } from 'react';\n\nexport interface Timer {\n start: (seconds: number) => void;\n pause: () => void;\n resume: (currentSecons?: number) => void;\n reset: () => void;\n}\n\ninterface UseTimerProperties {\n initialSeconds: number;\n onComplete?: () => void;\n}\ninterface TimerOutput extends Timer {\n seconds: number;\n}\n\nexport function useTimer(properties: UseTimerProperties): TimerOutput {\n const {\n initialSeconds,\n onComplete,\n } = properties;\n\n const [seconds, setSeconds] = useState(initialSeconds);\n const [isRunning, setIsRunning] = useState(false);\n\n const timerRef = useRef<NodeJS.Timeout | null>(null);\n const onCompleteRef = useRef(onComplete);\n\n useEffect(() => {\n return () => {\n if (timerRef.current) clearInterval(timerRef.current);\n };\n }, []);\n\n useEffect(() => {\n onCompleteRef.current = onComplete;\n }, [onComplete]);\n\n function startInterval() {\n if (timerRef.current) return;\n\n setIsRunning(true);\n\n timerRef.current = setInterval(() => {\n setSeconds((prevSeconds) => {\n if (prevSeconds <= 1) {\n clearInterval(timerRef.current!);\n\n timerRef.current = null;\n\n setIsRunning(false);\n\n if (onCompleteRef.current) onCompleteRef.current();\n\n return 0;\n }\n\n return prevSeconds - 1;\n });\n }, 1000);\n }\n\n function start(seconds: number) {\n stop();\n\n setSeconds(seconds);\n\n setTimeout(() => startInterval(), 0);\n }\n\n function stop() {\n if (timerRef.current) {\n clearInterval(timerRef.current);\n timerRef.current = null;\n }\n setIsRunning(false);\n }\n\n function pause() {\n if (!timerRef.current) return;\n\n clearInterval(timerRef.current);\n\n timerRef.current = null;\n\n setIsRunning(false);\n }\n\n function resume(currentSeconds?: number) {\n if (isRunning) return;\n\n if (currentSeconds !== undefined) {\n setSeconds(currentSeconds);\n }\n\n if (currentSeconds === undefined && seconds <= 0) return;\n\n startInterval();\n }\n\n function reset() {\n stop();\n setSeconds(initialSeconds);\n }\n\n return { seconds, start, pause, resume, reset };\n}\n","import { createContext, ReactNode, useContext } from 'react';\n\ninterface CommandContextType {\n open: () => void;\n}\n\nconst CommandContext = createContext<CommandContextType | undefined>(undefined);\n\ninterface CommandProviderProperties {\n children: ReactNode;\n open: () => void;\n}\n\nexport function CommandProvider(properties: CommandProviderProperties) {\n const { open, children } = properties;\n\n return (\n <CommandContext.Provider value={{ open }}>\n {children}\n </CommandContext.Provider>\n );\n}\n\nexport function useCommand(): CommandContextType {\n const context = useContext(CommandContext);\n\n if (!context) {\n throw new Error('useCommand must be used within a CommandProvider');\n }\n\n return context;\n}\n","import { styles } from 'src/utils/styles';\n\nexport const accordion = styles({\n slots: {\n root: 'rounded-md max-w-[calc(100vw-8rem)] flex flex-col justify-center border border-neutral-6 overflow-hidden',\n item: 'border-b last:border-none typo-3 border-neutral-6 text-left',\n header: 'flex',\n trigger: 'group bg-neutral-4 relative flex w-full items-center justify-between gap-4 px-3 py-2 text-left hover:bg-neutral-5 cs-focus cs-transition cs-disabled',\n triggerIcon: 'typo-3 flex-col-center',\n panel: 'overflow-hidden',\n content: 'p-3 text-neutral-11 border-t border-neutral-6',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const alert = styles({\n slots: {\n root: 'rounded-md relative grid w-full items-start gap-4 border p-4 has-data-[slot=alert-action]:grid-cols-[1fr_auto] has-data-[slot=alert-icon]:grid-cols-[auto_1fr] has-data-[slot=alert-icon]:has-data-[slot=alert-action]:grid-cols-[auto_1fr_auto]',\n content: 'flex flex-col gap-2',\n title: 'typo-header typo-3',\n description: 'typo-body typo-3',\n action: 'flex',\n icon: 'flex typo-5',\n },\n variants: {\n variant: {\n default: {\n root: 'bg-neutralA-2 border-neutral-6',\n title: 'text-neutral-12',\n description: 'text-neutral-10',\n icon: 'text-neutral-12',\n },\n destructive: {\n root: 'bg-error-2 border-error-6',\n title: 'text-error-11',\n description: 'text-error-9',\n icon: 'text-error-11',\n },\n success: {\n root: 'bg-success-2 border-success-6',\n title: 'text-success-11',\n description: 'text-success-9',\n icon: 'text-success-11',\n },\n warning: {\n root: 'bg-warning-2 border-warning-6',\n title: 'text-warning-11',\n description: 'text-warning-9',\n icon: 'text-warning-11',\n },\n info: {\n root: 'bg-info-2 border-info-6',\n title: 'text-info-11',\n description: 'text-info-9',\n icon: 'text-info-11',\n },\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const autocomplete = styles({\n slots: {\n positioner: 'z-50 select-none',\n popup: [\n 'rounded-md border border-neutral-6 bg-neutral-2 shadow-l mt-0.5',\n 'relative flex max-h-full max-w-(--available-width) min-w-(--anchor-width) origin-(--transform-origin)',\n 'before:pointer-events-none before:absolute before:inset-0',\n ],\n popupInner: 'flex h-[min(var(--available-height),23rem)] max-h-fit flex-col overflow-hidden',\n input: 'p-0',\n item: [\n 'flex rounded-sm typo-2 text-neutralA-11 items-center gap-2 px-2.5 py-1.5 outline-none cursor-default select-none',\n 'data-highlighted:bg-neutralA-4 data-highlighted:text-neutralA-12',\n 'cs-disabled',\n ],\n separator: 'my-2 bg-neutral-4',\n group: '[[role=group]+&]:mt-1.5',\n groupLabel: 'px-2.5 py-1.5 typo-2 text-neutral-9 typo-label',\n empty: 'text-center text-neutralA-9 typo-2 typo-label not-empty:p-4',\n list: 'not-empty:scroll-py-1 not-empty:p-1 in-data-has-overflow-y:pe-3',\n clear: 'flex items-center justify-center text-neutral-8 hover:text-neutralA-11',\n status: 'px-2.5 py-1.5 typo-2 typo-label text-neutral-8 empty:m-0 empty:p-0',\n trigger: 'flex items-center justify-center text-neutral-11 hover:text-neutralA-12 active:scale-80 cs-transition',\n statusLoading: 'flex items-center justify-between gap-2',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const button = styles({\n slots: {\n root: [\n 'cursor-default select-none flex-row-center group/button',\n 'rounded-md typo-body typo-3 gap-2 px-2.5 py-2 border border-transparent whitespace-nowrap',\n 'cs-focus cs-transition cs-disabled',\n ],\n },\n variants: {\n variant: {\n default: {\n root: [\n 'border-neutral-6 text-neutral-11 bg-neutral-3',\n 'hover:border-neutral-8 hover:bg-neutral-5 hover:text-neutral-12',\n ],\n },\n accent: {\n root: [\n 'border-accent-6 text-accent-1 bg-accent-11',\n 'hover:border-accent-8 hover:bg-accent-12 hover:text-accent-1',\n ],\n },\n primary: {\n root: [\n 'border-neutral-6 text-neutral-1 bg-neutral-12',\n 'hover:border-neutral-12 hover:bg-neutral-12 hover:text-neutral-1',\n ],\n },\n secondary: {\n root: [\n 'border-neutral-6 text-neutral-11 bg-neutral-4',\n 'hover:border-neutral-8 hover:bg-neutral-6 hover:text-neutral-12',\n ],\n },\n destructive: {\n root: [\n 'border-error-6 text-error-11 bg-error-3',\n 'hover:border-error-8 hover:bg-error-5 hover:text-error-12 ',\n ],\n },\n outline: {\n root: [\n 'border-neutral-12 text-neutral-12',\n 'hover:border-neutral-9 hover:text-neutral-12 hover:bg-neutral-2',\n ],\n },\n ghost: {\n root: [\n 'text-neutral-11',\n 'hover:text-neutral-12 hover:bg-neutralA-2',\n ],\n },\n icon: {\n root: [\n 'text-neutral-11',\n 'hover:text-neutral-12',\n 'active:scale-110',\n ],\n },\n close: {\n root: [\n 'p-1 typo-1 rounded-lg shadow-md',\n 'border-neutral-10 bg-neutral-12 text-neutral-1',\n 'hover:border-neutral-12 hover:text-neutral-2 hover:bg-neutral-12',\n 'active:scale-110',\n ],\n },\n link: { root: 'text-accent-9 underline-offset-4 hover:underline' },\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const slider = styles({\n slots: {\n root: 'flex gap-2',\n control: 'flex touch-none select-none cs-disabled',\n track: 'relative flex grow items-center select-none bg-neutralA-6 rounded-md',\n indicator: 'bg-neutral-12 rounded-md',\n thumb: 'size-3 rounded-md border border-neutral-12 bg-neutral-2 shadow-l cs-focus cs-transition transition-[scale] hover:scale-110 data-dragging:scale-125',\n value: 'typo-2 typo-label flex justify-end',\n ticksContainer: 'flex items-center justify-between gap-2 typo-1 typo-label font-code',\n tick: 'gap-2',\n tickLine: 'bg-neutralA-6 rounded-full',\n tickLabel: 'text-neutralA-11 data-[major=false]:opacity-0',\n },\n variants: {\n orientation: {\n horizontal: {\n root: 'flex-col w-full',\n control: '',\n track: 'flex-row h-1',\n ticksContainer: 'flex-row mx-1',\n tick: 'flex-col-center w-0',\n tickLine: 'h-1 w-px data-[major=false]:h-0.5',\n },\n vertical: {\n root: 'flex-row h-full',\n control: 'flex-col',\n track: 'flex-col w-1',\n ticksContainer: 'flex-col my-1',\n tick: 'flex-row-center h-0',\n tickLine: 'h-px w-1 data-[major=false]:w-0.5',\n },\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const card = styles({\n slots: {\n root: [\n 'rounded-lg group/card select-none flex flex-col border overflow-hidden',\n 'bg-neutral-1 text-neutral-11 border-neutralA-3',\n 'hover:text-neutral-12 hover:bg-neutralA-2 hover:border-neutralA-6 hover:shadow-md',\n 'active:bg-neutralA-3',\n 'cs-focus cs-transition',\n ],\n content: 'overflow-hidden grid p-4 gap-2',\n feedback: 'bg-neutral-12 border-neutralA-6 border-t typo-1 typo-header font-code uppercase text-neutral-1 w-full px-4 py-3 overflow-hidden',\n feedbackWrapper: 'flex w-full flex-col justify-start overflow-hidden rounded-b-lg',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const chatThread = styles({\n slots: {\n root: 'flex flex-col gap-3 overflow-y-auto p-4',\n message: 'max-w-[75%] rounded-lg px-3 py-2 typo-3 flex flex-col gap-1',\n userMessage: 'self-end bg-neutral-3 text-neutral-12',\n assistantMessage: 'self-start text-neutral-12',\n errorMessage: 'self-start bg-error-2 text-error-11 border border-error-6',\n errorTag: 'self-start rounded-sm bg-error-3 text-error-11 typo-label typo-1 px-1.5 py-0.5',\n messageContent: 'whitespace-pre-wrap wrap-break-word',\n contentImages: 'flex flex-row flex-wrap gap-1 mt-1',\n contentImage: 'rounded-sm border size-20 border-neutralA-3',\n cursor: 'inline-block w-0.5 h-4 bg-current animate-pulse ml-0.5 align-text-bottom',\n stopReason: 'typo-1 typo-label text-neutral-10',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const chart = styles({\n slots: {\n root: [\n 'flex aspect-video justify-center typo-2',\n '[&_.recharts-cartesian-axis-tick_text]:fill-neutral-11',\n '[&_.recharts-cartesian-grid_line[stroke=\"#ccc\"]]:stroke-neutral-6/50',\n '[&_.recharts-curve.recharts-tooltip-cursor]:stroke-neutral-6',\n '[&_.recharts-polar-grid_[stroke=\"#ccc\"]]:stroke-neutral-6',\n '[&_.recharts-radial-bar-background-sector]:fill-neutral-3',\n '[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-neutral-3',\n '[&_.recharts-reference-line_[stroke=\"#ccc\"]]:stroke-neutral-6',\n '[&_.recharts-dot[stroke=\"#fff\"]]:stroke-transparent',\n '[&_.recharts-layer]:outline-hidden',\n '[&_.recharts-sector]:outline-hidden',\n '[&_.recharts-sector[stroke=\"#fff\"]]:stroke-transparent',\n '[&_.recharts-surface]:outline-hidden',\n ],\n tooltip: 'grid min-w-32 items-start gap-2 rounded-md border border-neutralA-6 bg-neutral-2 p-2 shadow-xl',\n tooltipItem: 'flex items-center gap-2 typo-2',\n tooltipIndicator: 'self-stretch w-2.5 rounded-xxs',\n tooltipLabel: 'text-neutral-10',\n tooltipValue: 'text-neutral-12 font-mono font-medium tabular-nums',\n legend: 'flex items-center justify-center gap-4 pt-3',\n legendItem: 'flex items-center gap-1.5',\n legendIndicator: 'size-3 shrink-0 rounded-xxs',\n legendLabel: 'text-neutral-10 typo-label typo-code',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const checkbox = styles({\n slots: {\n root: [\n 'cursor-default select-none inline-flex items-center justify-center',\n 'rounded-[min(var(--radius-sm),0.375rem)] size-4 shrink-0 border',\n 'border-neutral-6 bg-neutralA-2 text-neutral-11',\n 'hover:border-neutral-9 hover:bg-neutral-5',\n 'data-checked:border-accent-9 data-checked:bg-accent-9 data-checked:text-neutral-1',\n 'data-indeterminate:border-accent-9 data-indeterminate:bg-accent-9 data-indeterminate:text-neutral-1',\n 'cs-focus cs-transition cs-disabled',\n ],\n indicator: ['flex-col-center size-4'],\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const codeBlock = styles({\n slots: {\n root: 'relative group/code overflow-hidden bg-neutral-2 border border-neutral-6 rounded-lg',\n header: 'flex-row-center justify-between pl-3 pr-1 py-1 border-b bg-neutral-3 border-neutral-6 select-none',\n title: 'flex-row-center gap-2 typo-2 font-code typo-weight-600 text-neutral-11',\n actions: 'flex-row-center gap-2',\n code: [\n 'relative overflow-x-auto typo-2 font-code typo-weight-500 w-full py-4 leading-0.5',\n '[&_.line]:block [&_.line]:w-full [&_.line]:px-4 [&_.line]:py-2',\n '[&_.line-number]:inline-block [&_.line-number]:w-[3ch] [&_.line-number]:mr-4 [&_.line-number]:text-right [&_.line-number]:text-neutralA-9 [&_.line-number]:select-none',\n '[&_.line[data-highlighted]]:bg-accent-3 [&_.line[data-highlighted]]:border-l-2 [&_.line[data-highlighted]]:border-accent-11 [&_.line[data-highlighted]]:-ml-px',\n '[&_pre.shiki]:bg-transparent!',\n ],\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const collapsible = styles({\n slots: {\n root: 'rounded-md relative group/collapsible border cs-disabled border-neutral-6 overflow-hidden',\n trigger: 'typo-2 typo-label text-neutral-12 flex w-full items-center justify-between px-3 py-2 cursor-pointer cs-focus',\n panel: 'overflow-hidden',\n panelContent: 'relative p-3 typo-2 text-neutral-11 flex flex-col gap-1 border-t border-neutral-6',\n icon: 'flex-col-center cursor-pointer text-neutral-12 opacity-100 hover:text-neutral-12 active:scale-110 cs-focus',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const colorArea = styles({\n slots: {\n root: 'size-full min-h-40 rounded-sm border border-neutral-3',\n thumb: 'size-3 rounded-sm origin-center border border-neutral-12 shadow-md top-1/2 active:size-6 active:shadow-lg data-dragging:size-5 data-dragging:shadow-lg cs-transition transition-[width,height]',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const colorField = styles({\n slots: {\n root: 'w-full',\n input: [\n 'relative inline-flex bg-transparent w-full min-w-0 outline-none',\n 'typo-3 gap-2 px-2.5 py-1.5',\n 'rounded-sm border border-neutralA-6 text-neutralA-11 bg-neutralA-2',\n 'hover:border-neutralA-8 hover:bg-neutralA-3 hover:text-neutralA-12',\n 'typo-code uppercase',\n 'cs-focus cs-transition cs-disabled cs-invalid',\n ],\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const colorInput = styles({\n slots: {\n root: 'grid grid-flow-col grid-cols-[auto_auto_1fr] items-stretch gap-1 w-full',\n trigger: 'w-6 h-full rounded-sm',\n swatch: 'size-full rounded-sm border-neutral-6',\n select: 'overflow-hidden min-w-0 w-20',\n fields: 'flex flex-row gap-0 flex-1',\n hexInput: '',\n channelInput: 'rounded-none in-data-[slot=0]:rounded-l-sm in-data-[slot=1]:border-x-0 in-data-[slot=2]:rounded-r-sm',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const colorPicker = styles({\n slots: {\n root: '',\n trigger: 'grid cs-focus size-5 rounded-md',\n swatch: 'cursor-pointer size-full active:scale-110 cs-transition shadow-md',\n popup: 'bg-neutral-2 border-neutral-3 overflow-hidden w-60',\n content: 'flex flex-col gap-3 p-2 overflow-visible',\n channelsContainer: 'flex flex-col gap-2',\n select: 'w-full',\n channels: 'grid grid-cols-3 gap-1',\n inputs: 'rounded-sm',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const colorSlider = styles({\n slots: {\n root: '',\n track: 'rounded-xs cs-transition border border-neutral-6',\n thumb: 'size-4 rounded-sm origin-center border border-neutral-12 shadow-md top-1/2 active:size-6 active:shadow-lg data-dragging:size-6 data-dragging:shadow-lg cs-transition transition-[width,height]',\n transparentBackground: '-z-1 rounded-xs overflow-hidden',\n },\n variants: {\n orientation: {\n horizontal: {\n track: 'h-3 w-full',\n },\n vertical: {\n track: 'w-3 h-full',\n },\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const colorSwatch = styles({\n slots: {\n root: 'relative overflow-hidden size-4 rounded-md border border-neutralA-6 shadow-xs',\n transparentBackground: 'absolute inset-0',\n color: 'relative size-full ',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const colorSwatchPicker = styles({\n slots: {\n root: 'flex w-full justify-between gap-1.5',\n item: 'relative cs-focus rounded-md cs-transition',\n swatchContainer: [\n 'relative overflow-hidden rounded-md size-5',\n 'outline-2 outline-offset-0.5 outline-transparent',\n 'in-data-selected:scale-115 in-data-selected:outline in-data-selected:outline-accent-11 in-data-selected:p-0.5',\n 'cs-transition',\n ],\n swatch: 'size-full',\n indicator: 'absolute inset-0 p-1 flex-row-center text-neutral-1 cs-transition opacity-0 in-data-selected:opacity-80',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const combobox = styles({\n slots: {\n root: 'cs-disabled grid w-full',\n positioner: 'z-50 select-none max-w-(--anchor-width)! overflow-hidden',\n popup: [\n 'cs-backdrop-panel text-neutral-11',\n 'cs-popup-animation relative flex max-h-full max-w-(--available-width) min-w-(--anchor-width) flex-col',\n ],\n popupInner: 'flex h-[min(var(--available-height),23rem)] max-h-fit flex-col overflow-hidden',\n input: '',\n clear: 'flex-row-center hover:opacity-80',\n trigger: 'flex-row-center hover:opacity-80',\n item: 'flex-row-center min-w-0 overflow-hidden typo-2 rounded-sm text-neutral-11 gap-2 py-1.5 px-2.5 justify-between data-highlighted:bg-neutralA-3 data-highlighted:text-neutral-12 cs-disabled',\n itemIndicator: 'flex-col-center',\n separator: 'my-2 bg-neutralA-4 last:hidden',\n group: 'mt-1.5 first:mt-0',\n groupLabel: 'text-neutral-10 typo-label px-2 py-1.5 typo-2',\n empty: 'text-neutral-10 text-center typo-2 not-empty:p-2',\n list: 'not-empty:scroll-py-1 not-empty:px-1 not-empty:py-1 in-data-has-overflow-y:pe-3',\n scrollArea: '',\n status: 'text-neutral-10 px-3 py-2 typo-label typo-2 empty:m-0 empty:p-0',\n chips: 'flex-wrap overflow-hidden gap-0.5 p-0.5 has-[>[data-align=inline-start]]:py-0.5',\n chipsAddon: 'pl-2 pr-1',\n chip: 'rounded-sm h-7 gap-2 flex-row-center justify-between px-2 bg-neutral-4 border border-neutralA-4 shadow-m text-neutral-12 typo-2 typo-label',\n chipsInput: 'h-7 min-w-12 ps-2 flex-1 typo-2 outline-none [[data-slot=combobox-chip]+&]:ps-0.5',\n chipRemove: 'flex-col-center opacity-50 hover:opacity-100 cursor-pointer',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const commandButton = styles({\n slots: {\n root: 'text-neutral-11 p-1 pl-2 typo-3 hover:bg-neutral-2',\n placeholder: 'flex flex-1 items-center',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const command = styles({\n slots: {\n backdrop: 'fixed inset-0 z-50 bg-black/50 cs-transition data-ending-style:opacity-0 data-starting-style:opacity-0',\n viewport: 'fixed inset-0 z-50 flex flex-col items-center px-4 py-30',\n popup: [\n 'rounded-md bg-neutral-2 text-neutral-11 border border-neutral-6 shadow-l',\n 'cs-popup-animation relative row-start-2 flex max-h-105 min-h-0 w-full max-w-xl min-w-0 flex-col outline-none will-change-transform',\n 'translate-y-[calc(-1.25rem*var(--nested-dialogs))] scale-[calc(1-0.1*var(--nested-dialogs))] opacity-[calc(1-0.1*var(--nested-dialogs))]',\n 'data-nested:data-ending-style:translate-y-8 data-nested-dialog-open:origin-top data-nested:data-starting-style:translate-y-8',\n '**:data-[slot=scroll-area-viewport]:data-has-overflow-y:pe-1',\n ],\n inputContainer: 'flex items-center gap-2 px-4 py-3',\n input: 'text-neutral-11 typo-label',\n list: 'not-empty:scroll-py-2 not-empty:p-2',\n empty: 'not-empty:p-6',\n panel: 'relative min-h-0 bg-neutralA-2 border-t border-neutral-6 not-has-[+[data-slot=command-footer]]:rounded-none',\n item: 'pr-1.5',\n separator: 'my-2',\n shortcut: 'ml-auto',\n footer: 'typo-label text-neutral-10 border-neutral-6 typo-2 flex items-center justify-between gap-2 border-t p-3',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const counter = styles({\n slots: {\n root: 'relative inline-block',\n digits: 'flex overflow-hidden',\n digit: 'typo-code text-neutral-12 typo-11 typo-weight-600 relative w-[1ch] place-self-center tabular-nums',\n number: 'absolute inset-0 flex items-center justify-center',\n overlay: 'pointer-events-none absolute inset-0',\n topGradient: 'from-neutral-1 h-10 bg-linear-to-b to-transparent',\n bottomGradient: 'from-neutral-1 absolute bottom-0 h-10 w-full bg-linear-to-t to-transparent',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const drawer = styles({\n slots: {\n backdrop: [\n 'fixed inset-0 z-50',\n 'bg-neutral-1/50',\n 'opacity-[calc(1-var(--drawer-swipe-progress,0))]',\n '[transition-duration:calc(350ms*var(--drawer-swipe-strength,1))]',\n 'data-ending-style:opacity-0 data-starting-style:opacity-0',\n 'data-swiping:[transition-duration:0s]',\n 'cs-transition',\n ],\n viewport: 'fixed inset-0 z-50 flex p-2 data-no-backdrop:pointer-events-none',\n popup: [\n 'group/popup relative flex flex-col will-change-transform outline-none in-data-no-backdrop:pointer-events-auto',\n 'border border-neutralA-4 rounded-xl shadow-l bg-neutral-1 text-neutral-11',\n '[transition-duration:calc(350ms*var(--drawer-swipe-strength,1))]',\n 'data-swiping:[transition-duration:0s]',\n 'cs-transition',\n ],\n content: 'overflow-hidden flex flex-1 flex-col gap-3 typo-2 typo-neutral-10',\n header: 'flex flex-col gap-2 p-4 select-none border-b border-neutralA-4',\n title: 'typo-3 typo-header text-neutral-12',\n description: 'typo-2 text-neutral-11',\n footer: 'flex flex-col gap-2 p-4 border-t border-neutralA-4',\n handle: 'absolute shrink-0 group-data-nested-drawer-open/popup:opacity-0 rounded-full bg-neutralA-6 hover:bg-neutral-12 active:scale-x-110 cs-transition',\n },\n variants: {\n side: {\n top: {\n viewport: 'items-start justify-center',\n popup: 'w-full origin-top max-h-[calc(100dvh+var(--drawer-snap-point-offset,0px))] overflow-hidden scale-x-[calc(1-var(--nested-drawers,0)*0.02)] data-nested-drawer-open:h-(--drawer-frontmost-height) data-nested-drawer-open:overflow-hidden [translate:0_calc(var(--nested-drawers,0)*-16px+var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y,0px))] data-starting-style:[translate:0_-100%] data-ending-style:[translate:0_-100%]',\n handle: 'bottom-2 left-1/2 -translate-x-1/2 h-1 w-12',\n },\n right: {\n viewport: 'items-stretch justify-end',\n popup: 'h-full origin-right max-w-[calc(100dvw-var(--drawer-snap-point-offset,0px))] overflow-hidden scale-y-[calc(1-var(--nested-drawers,0)*0.02)] [translate:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-x,0px))_0] data-starting-style:[translate:100%_0] data-ending-style:[translate:100%_0]',\n handle: 'top-1/2 -translate-y-1/2 left-2 h-12 w-1',\n },\n bottom: {\n viewport: 'items-end justify-center',\n popup: 'flex max-h-[calc(100dvh-var(--drawer-snap-point-offset,0px))] w-full flex-col origin-bottom overflow-hidden scale-x-[calc(1-var(--nested-drawers,0)*0.02)] data-nested-drawer-open:h-(--drawer-frontmost-height) data-nested-drawer-open:overflow-hidden [translate:0_calc(var(--nested-drawers,0)*-16px+var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y,0px))] data-starting-style:[translate:0_100%] data-ending-style:[translate:0_100%]',\n handle: 'top-2 left-1/2 -translate-x-1/2 h-1 w-12',\n },\n left: {\n viewport: 'items-stretch justify-start',\n popup: 'h-full origin-left max-w-[calc(100dvw+var(--drawer-snap-point-offset,0px))] overflow-hidden scale-y-[calc(1-var(--nested-drawers,0)*0.02)] [translate:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-x,0px))_0] data-starting-style:[translate:-100%_0] data-ending-style:[translate:-100%_0]',\n handle: 'top-1/2 -translate-y-1/2 right-2 h-12 w-1',\n },\n },\n },\n defaultVariants: {\n side: 'right',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const dropzone = styles({\n slots: {\n root: 'select-none w-full',\n area: 'rounded-lg border cs-disabled border-dashed border-neutralA-6 bg-neutralA-2 p-2 gap-2 flex flex-col data-drag-over:border-accent-11 data-drag-over:bg-accent-2 overflow-hidden',\n cta: 'rounded-sm border flex-row-center typo-2 typo-label font-code gap-3 text-neutral-11 p-3 cs-focus border-neutralA-6 hover:bg-neutralA-2 hover:text-neutral-12 cs-transition',\n fileList: 'grid grid-flow-row',\n fileItem: 'rounded-sm grid grid-flow-col select-none items-center grid-cols-[auto_1fr] auto-cols-auto border border-neutralA-3 bg-neutral-3 shadow-m p-2 gap-3 mb-2 last:mb-0 data-dragging:bg-neutral-4',\n thumbnailContainer: 'rounded-sm size-12 border border-neutralA-3 shadow-m flex-col-center',\n thumbnail: 'size-full object-cover',\n info: 'flex flex-col gap-1 overflow-hidden',\n name: 'typo-label typo-2 text-neutral-12 self-start truncate hover:text-accent-11 cursor-pointer',\n type: 'typo-1 text-neutral-10 truncate',\n remove: 'self-stretch',\n grab: 'text-neutral-12 opacity-50 size-3 cursor-grab rotate-90',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const image = styles({\n slots: {\n root: 'relative overflow-hidden cs-transition',\n image: 'size-full object-cover cs-transition',\n placeholder: 'size-full',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const imageDropzone = styles({\n slots: {\n root: 'select-none',\n area: 'rounded-lg group/area w-full h-auto relative border-solid border-neutral-8 overflow-hidden cs-transition p-0 cs-gutter grid data-drag-over:p-2 shadow-md hover:p-2',\n image: 'object-contain outline outline-neutral-6 rounded-lg',\n placeholder: 'rounded-lg border border-transparent flex-col-center min-h-30 text-neutral-11 typo-2 gap-3 typo-label font-code bg-neutralA-2 outline outline-neutral-6 group-hover/area:bg-neutralA-4 group-hover/area:text-neutral-12 group-hover/area:border-neutral-3',\n placeholderIcon: 'typo-6 opacity-75',\n loader: 'absolute inset-0 bg-neutral-1/85 pointer-events-auto typo-4 flex-col-center text-neutral-12 ',\n loaderIcon: 'animate-spin',\n deleteButton: 'absolute top-1 right-1 z-10 p-1',\n cta: 'absolute inset-0 opacity-0 cursor-pointer',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const empty = styles({\n slots: {\n root: 'flex-col-center min-w-0 gap-4 text-balance p-6 text-center',\n header: 'flex-col-center max-w-sm gap-2',\n title: 'typo-header typo-4 text-neutral-12',\n description: 'typo-3 text-neutral-10',\n media: 'relative flex-col-center shrink-0 border size-20 overflow-hidden rounded-full border-neutral-6 mb-4',\n iconWrapper: 'flex-col-center relative shrink-0',\n iconShadow: 'rounded-md typo-8 flex-col-center border border-neutral-6 text-neutral-12 bg-neutral-2 p-4 mb-4 pointer-events-none absolute bottom-0 origin-bottom scale-90 shadow-none',\n icon: 'rounded-md typo-8 flex-col-center border border-neutral-6 text-neutral-12 bg-neutral-2 p-4 mb-4 z-1',\n content: 'flex-col-center w-full gap-2 text-balance typo-3',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const field = styles({\n slots: {\n root: 'flex flex-col items-start gap-2',\n label: 'typo-2 text-neutralA-11 inline-flex items-center gap-2 typo-label',\n item: 'flex',\n description: 'text-neutral-9 typo-2',\n error: 'typo-2 text-error-9',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const fieldSet = styles({\n slots: {\n root: 'flex w-full max-w-64 flex-col gap-4',\n legend: 'typo-3 typo-header text-neutral-12',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const form = styles({\n slots: {\n root: 'flex flex-col gap-4',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const group = styles({\n slots: {\n root: 'rounded-md flex w-fit overflow-hidden border border-neutral-6 *:data-slot:border-transparent *:data-slot:rounded-none *:focus-visible:z-1 has-[>[data-slot=group]]:gap-2',\n separator: 'pointer-events-none relative z-2 bg-neutral-6 shrink-0',\n text: 'relative inline-flex items-center whitespace-nowrap gap-2 border border-neutralA-6 bg-neutralA-3 px-2.5 text-neutral-11 typo-3 outline-none',\n },\n variants: {\n orientation: {\n horizontal: {\n separator: 'w-px self-stretch',\n },\n vertical: {\n root: 'flex-col',\n separator: 'h-px self-stretch',\n },\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const inputGroup = styles({\n slots: {\n root: [\n 'rounded-md group/input-group relative flex w-full min-w-0 items-center outline-none gap-2 p-2 pl-3',\n 'border border-neutralA-6 bg-neutralA-2',\n 'cs-transition duration-0',\n 'cs-has-focus cs-has-disabled cs-has-invalid',\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[>[data-align=inline-start]]:py-1.5',\n 'has-[>[data-align=inline-end]]:py-1.5',\n 'has-[>[data-align=block-start]]:gap-3 has-[>[data-align=block-start]]:py-3',\n 'has-[>[data-align=block-end]]:gap-3 has-[>[data-align=block-end]]:py-3',\n 'has-[>textarea]:h-auto',\n ],\n addon: [\n 'text-neutralA-11 typo-3 gap-2 select-none flex-row-center cursor-text',\n 'group-data-[disabled=true]/input-group:cs-disabled',\n 'data-[align=inline-start]:order-first',\n 'data-[align=inline-end]:order-last',\n 'data-[align=block-start]:order-first data-[align=block-start]:w-full data-[align=block-start]:justify-start',\n 'data-[align=block-end]:order-last data-[align=block-end]:w-full data-[align=block-end]:justify-start',\n ],\n text: 'text-neutralA-11 typo-label gap-2 typo-3 flex-row-center',\n input: 'bg-transparent p-0',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const input = styles({\n slots: {\n root: [\n 'relative inline-flex bg-transparent w-full min-w-0 outline-none',\n 'typo-2 gap-2 px-2.5 py-2',\n 'placeholder:text-neutralA-8',\n 'before:pointer-events-none before:absolute before:inset-0',\n 'file:typo-label file:text-neutralA-11 file:inline-flex file:rounded-sm file:border file:border-neutralA-6 file:bg-neutralA-4 file:px-1.5 file:py-1 file:mr-2.5 ',\n '[&:-webkit-autofill]:[transition:background-color_9999s] [&:-webkit-autofill]:[-webkit-text-fill-color:white] [&:-webkit-autofill]:caret-[white]',\n ],\n },\n variants: {\n variant: {\n default: {\n root: [\n 'rounded-sm border',\n 'border-neutralA-6 text-neutralA-11 bg-neutralA-2',\n 'hover:border-neutralA-8 hover:bg-neutralA-3 hover:text-neutralA-12',\n ],\n },\n ghost: {\n root: 'hover:text-neutralA-12',\n },\n },\n unstyled: {\n false: { root: 'cs-focus cs-transition cs-disabled cs-invalid' },\n true: { root: 'focus-visible:ring-0 focus-visible:outline-none' },\n },\n },\n defaultVariants: {\n unstyled: false,\n variant: 'default',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const masonry = styles({\n slots: {\n root: 'flex w-full items-start',\n column: 'flex min-w-0 flex-col',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const kbd = styles({\n slots: {\n root: 'rounded-md bg-neutralA-3 text-neutral-11 border border-neutralA-2 typo-label typo-body pointer-events-none inline-flex items-center justify-center select-none h-5 min-w-5 typo-2 gap-1 px-1.5 py-1 word-spacing-[4em]',\n group: 'inline-flex items-center gap-1',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const label = styles({\n slots: {\n root: 'typo-label typo-2 text-neutral-12',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const motionAnimatePresence = styles({\n slots: {\n root: 'relative grid size-full overflow-hidden',\n content: 'absolute inset-0 grid',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const navbar = styles({\n slots: {\n root: 'flex items-stretch justify-between border-b border-neutral-4 p-2 gap-2 select-none',\n logo: 'flex items-center rounded-md gap-2 hover:bg-neutralA-3 py-1 px-2',\n content: 'flex items-center gap-2',\n actions: 'flex items-center gap-3',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const navigationMenu = styles({\n slots: {\n root: 'group/navigation-menu relative flex-row-center items-stretch max-w-max flex-1 rounded-md',\n list: 'group flex-row-center items-stretch flex-1 list-none gap-0',\n item: 'relative',\n trigger: [\n 'group/navigation-menu-trigger px-2.5 rounded-sm py-1.5 h-full typo-2 typo-label flex-row-center gap-2 w-max group',\n 'bg-transparent text-neutral-11',\n 'hover:bg-neutralA-3',\n 'data-open:hover:bg-neutralA-3 data-open:focus:bg-neutralA-3 data-open:bg-neutralA-3/50',\n 'data-popup-open:bg-neutralA-3/50 data-popup-open:hover:bg-neutralA-3',\n 'cs-focus cs-transition cs-disabled',\n ],\n triggerIcon: 'cs-transition relative group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180',\n content: [\n 'h-full p-2 grid grid-flow-row grid-cols-2 gap-2 w-120 rounded-md',\n 'group-data-[viewport=false]/navigation-menu:bg-neutral-3 group-data-[viewport=false]/navigation-menu:text-neutral-11 group-data-[viewport=false]/navigation-menu:ring-accent-11/10 group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1',\n 'group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0',\n 'data-starting-style:data-[activation-direction=left]:[translate:-50%_0] data-starting-style:data-[activation-direction=right]:[translate:50%_0]',\n 'data-ending-style:data-[activation-direction=left]:[translate:50%_0] data-ending-style:data-[activation-direction=right]:[translate:-50%_0]',\n 'data-starting-style:opacity-0 data-ending-style:opacity-0',\n 'transition-[opacity,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:duration-300',\n '**:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none',\n ],\n positioner: [\n 'isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width)',\n 'transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)]',\n 'data-instant:transition-none',\n 'data-[side=bottom]:before:-top-2.5 data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0',\n ],\n popup: 'cs-backdrop-panel cs-popup-animation xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) transition-[opacity,transform,width,height,scale,translate] data-ending-style:duration-150',\n viewport: 'relative size-full overflow-hidden',\n link: [\n 'flex-row-center rounded-sm gap-2 px-2.5 py-1.5 typo-2 typo-label w-max h-full',\n 'bg-transparent text-neutral-11',\n 'hover:bg-neutralA-3',\n 'data-active:focus:bg-neutralA-3 data-active:hover:bg-neutralA-3/50 data-active:bg-neutralA-3/50 data-active:border-dashed data-active:border-neutral-6',\n 'cs-focus cs-transition cs-disabled',\n ],\n linkCard: [\n 'rounded-md flex flex-col items-start justify-start gap-1 px-2.5 py-1.5 border typo-2 typo-label',\n 'bg-transparent text-neutral-11 border-transparent',\n 'hover:bg-neutralA-3/50',\n 'in-data-[slot=navigation-menu-content]:hover:border-dashed in-data-[slot=navigation-menu-content]:hover:border-neutral-6',\n 'data-active:focus:bg-neutralA-3 data-active:hover:bg-neutralA-3/50 data-active:bg-neutralA-3/50 data-active:border-dashed data-active:border-neutral-6',\n 'cs-focus cs-transition',\n ],\n indicatorWrapper: 'data-[state=visible]:fade-in top-full z-1 flex h-1.5 items-end justify-center overflow-hidden',\n indicator: 'bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-m',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const numberField = styles({\n slots: {\n root: 'flex w-full flex-col items-start gap-2',\n group: [\n 'relative overflow-hidden flex w-full justify-between rounded-md border typo-2 shadow-xs',\n 'border-neutral-6 bg-neutralA-2 text-neutral-12',\n 'cs-has-focus cs-has-invalid cs-transition cs-has-disabled',\n ],\n button: [\n 'relative flex-col-center outline cursor-pointer px-3',\n 'text-neutral-10 outline-neutral-6',\n 'hover:bg-neutralA-3 hover:text-neutral-11',\n 'cs-transition',\n ],\n input: [\n 'px-2 py-2 w-full min-w-0 grow typo-2 typo-code text-center outline-none',\n 'bg-transparent',\n 'cs-transition',\n ],\n scrubAreaCursor: 'cursor-row-resize',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const pagination = styles({\n slots: {\n root: 'mx-auto flex w-full justify-center',\n content: 'flex flex-row items-center gap-1',\n previousNext: 'max-sm:aspect-square max-sm:p-0',\n previousNextLabel: 'max-sm:hidden',\n link: 'py-1 px-2 typo-2',\n ellipsis: 'flex min-w-7 justify-center text-neutral-10',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const fontPicker = styles({\n slots: {\n trigger: 'w-full py-1.5 px-3 truncate rounded-md justify-between gap-2 bg-neutralA-2 hover:bg-neutralA-3 typo-body capitalize text-neutral-11',\n popup: '',\n fontPreview: 'truncate typo-header typo-4 text-neutral-12',\n inputContainer: 'p-2',\n input: 'rounded-sm',\n item: 'flex-col-center overflow-hidden hover:border-neutral-6 p-4 gap-4 flex-col! border border-neutral-4 text-neutral-12 data-selected:bg-neutral-12 data-selected:text-neutral-1',\n itemPreview: 'typo-12 leading-none',\n itemlabel: 'typo-2 typo-label opacity-50 uppercase',\n itemIndicator: 'hidden',\n list: 'overflow-hidden grid grid-cols-1 gap-2',\n empty: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const googleSignInButton = styles({\n slots: {\n root: 'group typo-label typo-3 text-neutral-11 gap-3 py-2 pr-4 pl-2 active:gap-3.5 active:pl-2.5',\n icon: 'cs-transition size-4 group-active:scale-110',\n label: 'flex-1',\n spinner: 'size-4',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const palettePicker = styles({\n slots: {\n trigger: 'w-full justify-between gap-1 bg-neutralA-2 hover:bg-neutralA-3 typo-label text-neutral-11 capitalize',\n popup: '',\n colorBlock: 'size-4',\n paletteContainer: 'flex-row-center gap-1',\n inputContainer: 'p-2',\n input: 'rounded-sm',\n item: 'flex flex-row items-center gap-3 capitalize typo-2 px-0.5 py-0.5',\n list: '',\n empty: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameter = styles({\n slots: {\n root: 'flex flex-col gap-3 select-none',\n label: 'typo-label typo-2 text-neutral-11',\n value: 'typo-code typo-2 text-neutral-11',\n measure: 'typo-code typo-2 text-neutral-9',\n separator: 'bg-neutralA-3 flex-1',\n input: 'grid select-auto',\n row: 'flex flex-row items-center justify-start gap-2 min-h-4',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterColor = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterColorSwatchPicker = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterCombobox = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n trigger: 'w-full justify-between gap-1 bg-neutralA-2 hover:bg-neutralA-3 typo-label text-neutral-11 capitalize',\n popup: '',\n inputContainer: 'p-2',\n input: 'rounded-sm',\n item: 'flex typo-label flex-row justify-start items-center gap-3 capitalize typo-2 p-1.5 px-3',\n itemIcon: 'text-neutral-12 border border-neutralA-3 rounded-sm p-2 -ml-1.5',\n itemName: 'text-start flex-1',\n list: 'overflow-hidden',\n empty: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterFontPicker = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterGroup = styles({\n slots: {\n root: 'rounded-sm',\n trigger: 'justify-start items-center gap-2',\n icon: '',\n collapsibleIcon: '',\n name: 'flex-1 text-start',\n panel: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterPalettePicker = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterPresetPicker = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterSlider = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n value: '',\n measure: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterSwitch = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterText = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterTextArea = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterToggle = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterToggleGroup = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: 'w-full',\n item: 'flex-1',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterTypographyGroup = styles({\n slots: {\n root: '',\n content: 'flex flex-col gap-6',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterFiles = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterImage = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterNumber = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n measure: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterSelect = styles({\n slots: {\n root: '',\n row: '',\n label: '',\n separator: '',\n input: '',\n trigger: '',\n popup: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const parameterShadowGroup = styles({\n slots: {\n root: '',\n preview: 'border-neutral-6 bg-neutral-2 my-2 h-40 w-full rounded-md border mb-4',\n content: 'flex flex-col gap-6',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const placeholder = styles({\n slots: {\n root: 'size-full overflow-hidden',\n list: 'flex flex-col gap-2 p-4',\n itemWrapper: '',\n item: 'h-10 overflow-hidden bg-neutralA-3 rounded-md',\n scrollableArea: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const popover = styles({\n slots: {\n positioner: 'z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom,transform] data-instant:transition-none',\n popup: [\n 'cs-backdrop-panel text-neutral-11',\n 'cs-popup-animation relative grid h-(--popup-height,auto) w-(--popup-width,auto) transition-[width,height,scale,opacity]',\n ],\n viewport: [\n 'relative size-full max-h-(--available-height) overflow-clip not-data-transitioning:overflow-y-auto data-instant:transition-none',\n '**:data-current:w-[calc(var(--popup-width)-2px)] **:data-current:opacity-100 **:data-current:transition-opacity **:data-current:data-ending-style:opacity-0',\n '**:data-previous:w-[calc(var(--popup-width)-2px)] **:data-previous:opacity-100 **:data-previous:transition-opacity **:data-previous:data-ending-style:opacity-0',\n '**:data-current:data-starting-style:opacity-0 **:data-previous:data-starting-style:opacity-0',\n ],\n content: 'p-3 flex flex-col gap-2',\n title: 'typo-3 typo-label text-neutral-12',\n description: 'typo-2 text-neutral-10',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const presetPicker = styles({\n slots: {\n trigger: 'w-full justify-between gap-1 bg-neutralA-2 hover:bg-neutralA-3 typo-label text-neutral-11 capitalize',\n popup: '',\n colorBlock: 'size-4',\n presetContainer: 'flex-row-center gap-1',\n inputContainer: 'p-2',\n input: 'rounded-sm',\n item: 'flex flex-row items-center gap-3 capitalize typo-2 px-0.5 py-0.5',\n itemColors: 'flex-row-center gap-1',\n list: '',\n empty: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const progress = styles({\n slots: {\n root: 'flex w-full flex-col gap-2',\n track: 'block h-1.5 w-full overflow-hidden rounded bg-neutralA-3 data-indeterminate:cs-stripes data-indeterminate:bg-neutralA-2 data-indeterminate:outline data-indeterminate:outline-neutralA-6',\n indicator: 'bg-neutral-12 cs-transition',\n label: 'typo-label typo-3',\n value: 'typo-body typo-3 font-code tabular-nums',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const promptInput = styles({\n slots: {\n root: 'border border-neutral-6 bg-neutral-2 rounded-md p-2 flex flex-col gap-2 shadow-lg data-drag-over:border-accent-11 data-drag-over:border-dashed data-drag-over:bg-accent-2 overflow-hidden',\n attachments: 'flex flex-row items-center flex-wrap gap-1',\n attachment: 'group relative',\n attachmentImage: 'rounded-sm border size-16 border-neutralA-3 [&_img]:pointer-events-none [&_img]:select-none',\n attachmentImageTooltip: 'p-0 overflow-hidden',\n attachmentImagePreview: 'size-60',\n attachmentFile: 'rounded-sm border size-16 border-neutralA-3 bg-neutral-3 flex-col-center',\n attachmentExtension: 'typo-1 typo-weight-600 typo-code text-neutral-11',\n removeButton: 'absolute -top-1 -right-1 hidden group-hover:flex typo-1',\n input: 'p-2 rounded-none text-neutral-11',\n toolbarRow: 'flex flex-row items-center gap-1 w-full',\n modelPicker: 'w-40 bg-neutral-3 hover:bg-neutral-4 border-none',\n attachButton: 'bg-neutral-3 hover:bg-neutral-4 border-none rounded-sm',\n submitButton: 'rounded-sm',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const properties = styles({\n slots: {\n root: 'divide-neutral-4 border-neutral-4 grid auto-cols-fr grid-flow-col grid-cols-[auto] items-center divide-x *:h-full *:px-6 *:py-3',\n name: 'text-neutral-12 typo-2 typo-label font-code flex-row-center justify-start uppercase select-none',\n item: 'typo-1 font-code uppercase gap-6 group/property-item flex-row-center flex',\n labelWrapper: 'flex-row-center relative',\n label: 'text-neutral-12 cs-transition data-has-value:group-hover/property-item:opacity-0',\n valueWrapper: 'flex-row-center absolute right-0 gap-1 text-right opacity-0 group-hover/property-item:opacity-100',\n value: 'text-neutral-12',\n measure: 'text-neutral-10',\n separator: 'bg-neutral-4 flex-1',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const scrollArea = styles({\n slots: {\n root: 'relative size-full min-h-0 overflow-hidden',\n viewport: [\n 'cs-transition cs-focus h-full overscroll-contain rounded-[inherit] data-has-overflow-x:overscroll-x-contain',\n 'data-scroll-fade:scroll-py-[--fade-size] data-scroll-fade:mask-t-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-start)))] data-scroll-fade:mask-r-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-end)))] data-scroll-fade:mask-b-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-end)))] data-scroll-fade:mask-l-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-start)))] data-scroll-fade:[--fade-size:1.5rem]',\n 'data-scrollbar-gutter:data-has-overflow-x:pb-2.5 data-scrollbar-gutter:data-has-overflow-y:pe-2.5',\n ],\n scrollbar: [\n 'flex m-1 data-[orientation=vertical]:w-1 data-[orientation=horizontal]:h-1 cs-transition',\n 'opacity-0 hover:opacity-100 data-hovering:delay-0 data-hovering:duration-200 data-scrolling:opacity-100 data-scrolling:delay-0 data-scrolling:duration-200',\n 'data-[orientation=horizontal]:flex-col',\n ],\n thumb: 'relative flex-1 rounded-full bg-neutral-12/40',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const select = styles({\n slots: {\n root: 'cs-disabled w-full grid',\n positioner: 'z-50 select-none',\n popup: 'cs-popup-animation cs-backdrop-panel text-neutral-11 outline-none origin-(--transform-origin)',\n popupInner: ' relative h-full min-w-(--anchor-width)',\n trigger: [\n 'flex-row-center w-full min-w-36 justify-between gap-2 rounded-sm',\n 'typo-2 px-2.5 py-1.5 border',\n 'border-neutralA-6 text-neutral-11 bg-neutralA-2',\n 'hover:border-neutralA-8 hover:bg-neutralA-3 hover:text-neutral-12',\n 'cs-focus cs-transition cs-disabled',\n ],\n triggerIcon: 'opacity-60 flex-col-center',\n value: 'flex-1 text-left truncate data-placeholder:text-neutralA-8',\n item: 'grid grid-cols-[1rem_1fr] overflow-hidden typo-2 items-center rounded-sm text-neutral-11 gap-2 py-1.5 px-2.5 data-highlighted:bg-neutralA-3 data-highlighted:text-neutral-12 cs-disabled in-data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)]',\n itemText: 'col-start-2 min-w-0',\n itemIndicator: 'flex-col-center col-start-1',\n separator: 'my-2 bg-neutralA-4 last:hidden',\n group: 'mt-1.5 first:mt-0',\n groupLabel: 'text-neutral-10 typo-label px-2 py-1.5 typo-2',\n scrollArrow: 'flex-row-center z-50 h-6 w-full cursor-default',\n list: 'max-h-(--available-height) overflow-y-auto p-1',\n scrollArea: '',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const separator = styles({\n slots: {\n root: 'shrink-0 bg-neutralA-6 rounded-sm',\n },\n variants: {\n orientation: {\n horizontal: { root: 'h-px w-full' },\n vertical: { root: 'w-px self-stretch' },\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const sidebar = styles({\n slots: {\n root: 'flex h-full flex-col border-r border-neutral-6 bg-neutral-2',\n header: 'flex flex-col gap-2 p-4',\n content: 'flex flex-1 flex-col gap-6 overflow-y-auto p-4',\n footer: 'flex flex-col gap-2 p-4',\n group: 'flex flex-col gap-2',\n groupLabel: 'flex items-center justify-between',\n groupTitle: 'typo-2 typo-label text-neutral-12 px-2 py-1',\n groupAction: 'flex items-center',\n groupContent: 'flex flex-col gap-0.5',\n item: 'typo-2 gap-2 flex flex-row items-center border border-transparent text-neutral-10 rounded-sm px-2.5 py-1.5 hover:bg-neutralA-3 hover:text-neutral-12 data-active:bg-neutralA-3 data-active:text-neutral-12 data-active:shadow-sm data-active:border-neutralA-2 active:gap-3 active:pl-3 cs-transition',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const spacer = styles({\n slots: {\n root: 'grid size-full flex-1',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const spinner = styles({\n slots: {\n root: 'inline-flex items-center justify-center text-current typo-5',\n },\n variants: {\n spin: {\n true: { root: 'animate-spin' },\n false: {},\n },\n },\n defaultVariants: {\n spin: true,\n },\n});\n","import { styles } from 'src/utils/styles';\n\nconst _switch = styles({\n slots: {\n root: [\n 'peer inline-flex shrink-0 cursor-default items-center p-(--switch-padding) select-none',\n 'rounded-full border shadow-xs',\n 'border-neutral-6 bg-neutral-4',\n 'data-checked:bg-neutral-12',\n 'data-unchecked:bg-neutral-4',\n '[--thumb-size:--spacing(5)] [--switch-padding:1px]',\n 'cs-focus cs-transition cs-disabled',\n ],\n thumb: [\n 'group flex-col-center pointer-events-none aspect-square rounded-(--thumb-size) will-change-transform',\n '[transition:translate_.15s,border-radius_.15s,scale_.1s_.1s,transform-origin_.15s]',\n 'in-[[role=switch]:active,[data-slot=label]:active,[data-slot=field-label]:active]:not-data-disabled:rounded-[var(--thumb-size)/calc(var(--thumb-size)*1.1)]',\n 'shadow-s',\n 'data-checked:bg-neutral-1',\n 'data-unchecked:bg-neutral-12',\n ],\n checkedIcon: [\n 'size-2.5 cs-transition absolute',\n 'group-data-checked:text-neutral-12 group-data-checked:scale-100',\n 'group-data-unchecked:text-neutral-1 group-data-unchecked:scale-0',\n ],\n uncheckedIcon: [\n 'size-2.5 cs-transition absolute',\n 'group-data-unchecked:text-neutral-1 group-data-unchecked:scale-100',\n 'group-data-checked:text-neutral-12 group-data-checked:scale-0',\n ],\n },\n variants: {\n orientation: {\n horizontal: {\n root: 'h-[calc(var(--thumb-size)+2px)] w-[calc(var(--thumb-size)*2-var(--switch-padding)*2)]',\n thumb: 'h-full origin-left in-[[role=switch]:active,[data-slot=label]:active,[data-slot=field-label]:active]:not-data-disabled:scale-x-120 data-checked:origin-[var(--thumb-size)_50%] data-checked:translate-x-[calc(var(--thumb-size)-var(--switch-padding)*4)]',\n },\n vertical: {\n root: 'h-[calc(var(--thumb-size)*2-var(--switch-padding)*2)] w-[calc(var(--thumb-size)+var(--switch-padding)*2)] flex-col',\n thumb: 'w-full origin-top in-[[role=switch]:active,[data-slot=label]:active,[data-slot=field-label]:active]:not-data-disabled:scale-y-120 data-checked:origin-[50%_var(--thumb-size)] data-checked:translate-y-[calc(var(--thumb-size)-var(--switch-padding)*4)]',\n },\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n});\n\nexport { _switch as switch };\n","import { styles } from 'src/utils/styles';\n\nexport const tableOfContents = styles({\n slots: {\n root: 'flex flex-col gap-2',\n header: 'flex items-center gap-2 typo-3 typo-header text-neutral-11',\n items: 'relative flex flex-col',\n item: 'relative typo-2 text-neutral-10 py-2 hover:text-accent-12 data-[active=true]:text-accent-11 cs-transition',\n indicator: 'bg-accent-11 cs-transition duration-500 absolute top-(--toc-top) h-(--toc-height) w-full',\n line: 'stroke-neutral-6 absolute top-0 left-0',\n treeIndicator: 'absolute top-0 left-0',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const tabs = styles({\n slots: {\n root: 'flex flex-col-center gap-4',\n list: 'relative z-0 flex w-fit items-center justify-center',\n indicator: 'absolute bottom-0 left-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) -translate-y-(--active-tab-bottom) cs-transition',\n tab: [\n 'select-none relative flex-row-center px-2.5 py-1.5 shrink-0 gap-1.5 grow border-transparent typo-3 border-0 typo-label',\n 'text-neutral-10 hover:text-neutral-11 data-active:text-neutral-12',\n 'cs-focus cs-transition cs-disabled',\n ],\n panel: 'flex-1 outline-none typo-2 text-neutral-10 p-0',\n },\n variants: {\n variant: {\n default: {\n list: 'rounded-md bg-neutral-3 p-1 gap-0.5',\n indicator: 'bg-neutral-6 -z-1 rounded-sm',\n },\n underline: {\n list: 'text-neutral-11',\n tab: 'hover:text-neutral-12 border-neutral-6',\n indicator: 'bg-accent-11 z-10 rounded-lg',\n },\n },\n orientation: {\n horizontal: {},\n vertical: {\n root: 'flex-row',\n list: 'flex-col',\n tab: 'w-full justify-start',\n indicator: '',\n },\n },\n },\n compoundVariants: [\n {\n variant: 'underline',\n orientation: 'horizontal',\n class: {\n tab: 'border-b',\n indicator: 'h-0.5 translate-y-px',\n },\n },\n {\n variant: 'underline',\n orientation: 'vertical',\n class: {\n tab: 'border-l rounded-none rounded-r-md',\n indicator: 'w-0.5 -translate-x-px',\n },\n },\n ],\n defaultVariants: {\n variant: 'default',\n orientation: 'horizontal',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const textArea = styles({\n slots: {\n root: [\n 'relative inline-flex bg-transparent w-full min-w-0 outline-none rounded-md',\n 'typo-3 gap-1.5 px-2 py-1.5',\n 'placeholder:text-neutralA-8',\n 'before:pointer-events-none before:absolute before:inset-0',\n 'file:typo-label file:text-neutralA-11 file:inline-flex file:border file:border-neutralA-6 file:bg-neutralA-4 file:px-1 file:py-0.5 file:mr-2.5',\n '[&:-webkit-autofill]:[transition:background-color_9999s] [&:-webkit-autofill]:[-webkit-text-fill-color:white] [&:-webkit-autofill]:caret-[white]',\n ],\n },\n variants: {\n variant: {\n default: {\n root: [\n 'border',\n 'border-neutralA-6 text-neutralA-11 bg-neutralA-2',\n 'hover:border-neutralA-8 hover:bg-neutralA-3 hover:text-neutralA-12',\n ],\n },\n ghost: {\n root: 'hover:text-neutralA-12',\n },\n },\n unstyled: {\n false: { root: 'cs-focus cs-transition cs-disabled cs-invalid' },\n true: { root: 'focus-visible:ring-0 focus-visible:outline-none' },\n },\n resize: {\n false: { root: 'resize-none' },\n true: {},\n },\n },\n defaultVariants: {\n unstyled: false,\n variant: 'default',\n resize: false,\n },\n});\n","import { styles } from '../utils/styles';\n\nexport const textShimmer = styles({\n slots: {\n root: 'relative inline-block typo-header text-neutral-12 typo-8 ',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const tintImage = styles({\n slots: {\n root: 'relative cs-transition',\n image: 'opacity-0',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const toast = styles({\n slots: {\n root: 'rounded-md w-full max-w-72 select-none border',\n content: 'pointer-events-auto flex items-center justify-between overflow-hidden gap-1.5 p-4 typo-2 cs-transition',\n outerContainer: 'flex gap-2',\n innerContainer: 'flex flex-col gap-2',\n title: 'typo-2 typo-header',\n description: 'typo-2 typo-body',\n icon: 'typo-2',\n action: 'rounded-md px-2 py-1 border absolute top-2 right-2 text-neutral-11',\n viewport: [\n 'fixed z-50 mx-auto flex w-[calc(100%-var(--toast-inset)*2)] [--toast-inset:--spacing(4)]',\n 'data-[position*=top]:top-(--toast-inset)',\n 'data-[position*=bottom]:bottom-(--toast-inset)',\n 'data-[position*=left]:left-(--toast-inset)',\n 'data-[position*=right]:right-(--toast-inset)',\n 'data-[position*=center]:left-1/2 data-[position*=center]:-translate-x-1/2',\n ],\n toastRoot: [\n 'absolute z-[calc(9999-var(--toast-index))] h-(--toast-calc-height) [transition:transform_.5s_cubic-bezier(.22,1,.36,1),opacity_.5s,height_.15s] before:pointer-events-none before:absolute before:inset-0',\n 'data-[position*=right]:right-0 data-[position*=right]:left-auto',\n 'data-[position*=left]:right-auto data-[position*=left]:left-0',\n 'data-[position*=center]:right-0 data-[position*=center]:left-0',\n 'data-[position*=top]:top-0 data-[position*=top]:bottom-auto data-[position*=top]:origin-top',\n 'data-[position*=bottom]:top-auto data-[position*=bottom]:bottom-0 data-[position*=bottom]:origin-bottom',\n 'after:absolute after:left-0 after:h-[calc(var(--toast-gap)+1px)] after:w-full',\n 'data-[position*=top]:after:top-full',\n 'data-[position*=bottom]:after:bottom-full',\n '[--toast-calc-height:var(--toast-frontmost-height,var(--toast-height))] [--toast-gap:--spacing(2)] [--toast-peek:--spacing(3)] [--toast-scale:calc(max(0,1-(var(--toast-index)*.1)))] [--toast-shrink:calc(1-var(--toast-scale))]',\n 'data-[position*=top]:[--toast-calc-offset-y:calc(var(--toast-offset-y)+var(--toast-index)*var(--toast-gap)+var(--toast-swipe-movement-y))]',\n 'data-[position*=bottom]:[--toast-calc-offset-y:calc(var(--toast-offset-y)*-1+var(--toast-index)*var(--toast-gap)*-1+var(--toast-swipe-movement-y))]',\n 'data-[position*=top]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--toast-peek))+(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]',\n 'data-[position*=bottom]:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--toast-peek))-(var(--toast-shrink)*var(--toast-calc-height))))_scale(var(--toast-scale))]',\n 'data-limited:opacity-0',\n 'data-expanded:h-(--toast-height)',\n 'data-position:data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(var(--toast-calc-offset-y))]',\n 'data-[position*=top]:data-starting-style:transform-[translateY(calc(-100%-var(--toast-inset)))]',\n 'data-[position*=bottom]:data-starting-style:transform-[translateY(calc(100%+var(--toast-inset)))]',\n 'data-ending-style:opacity-0',\n 'data-ending-style:not-data-limited:not-data-swipe-direction:transform-[translateY(calc(100%+var(--toast-inset)))]',\n 'data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]',\n 'data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]',\n 'data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]',\n 'data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]',\n 'data-expanded:data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-100%-var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]',\n 'data-expanded:data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+100%+var(--toast-inset)))_translateY(var(--toast-calc-offset-y))]',\n 'data-expanded:data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-100%-var(--toast-inset)))]',\n 'data-expanded:data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+100%+var(--toast-inset)))]',\n ],\n toastContent: 'data-behind:opacity-0 data-behind:not-data-expanded:pointer-events-none data-expanded:opacity-100',\n },\n variants: {\n variant: {\n default: {\n root: 'bg-neutral-2 border-neutral-4',\n icon: 'text-neutral-11',\n title: 'text-neutral-12',\n description: 'text-neutral-10',\n action: 'bg-neutral-3 border-neutral-6 hover:border-neutral-9 hover:bg-neutral-4',\n },\n success: {\n root: 'bg-success-2 border-success-4',\n icon: 'text-success-11',\n title: 'text-success-12',\n description: 'text-success-10',\n action: 'bg-success-3 border-success-6 hover:border-success-9 hover:bg-success-4',\n },\n error: {\n root: 'bg-error-2 border-error-4',\n icon: 'text-error-11',\n title: 'text-error-12',\n description: 'text-error-10',\n action: 'bg-error-3 border-error-6 hover:border-error-9 hover:bg-error-4',\n },\n warning: {\n root: 'bg-warning-2 border-warning-4',\n icon: 'text-warning-11',\n title: 'text-warning-12',\n description: 'text-warning-10',\n action: 'bg-warning-3 border-warning-6 hover:border-warning-9 hover:bg-warning-4',\n },\n info: {\n root: 'bg-info-2 border-info-4',\n icon: 'text-info-11',\n title: 'text-info-12',\n description: 'text-info-10',\n action: 'bg-info-3 border-info-6 hover:border-info-9 hover:bg-info-4',\n },\n loading: {\n root: 'bg-neutral-2 border-neutral-4',\n icon: 'text-neutral-12 animate-spin',\n title: 'text-neutral-12',\n description: 'text-neutral-10',\n action: 'bg-neutral-3 border-neutral-6 hover:border-neutral-9 hover:bg-neutral-4',\n },\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const toggleGroup = styles({\n slots: {\n root: 'flex w-fit *:focus-visible:z-1 overflow-hidden',\n separator: 'pointer-events-none shrink-0 bg-neutral-6 relative before:absolute before:inset-0 before:cs-transition',\n },\n variants: {\n variant: {\n default: {\n root: 'gap-1',\n },\n outline: {\n root: 'rounded-md border border-neutral-6 *:data-[slot=toggle]:border-transparent *:data-[slot=toggle]:rounded-none',\n },\n },\n orientation: {\n horizontal: {\n separator: 'w-px self-stretch',\n },\n vertical: {\n root: 'flex-col',\n separator: 'h-px self-stretch',\n },\n },\n },\n defaultVariants: {\n variant: 'default',\n orientation: 'horizontal',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const toggle = styles({\n slots: {\n root: [\n 'group/toggle cursor-default select-none inline-flex items-center justify-center',\n 'rounded-sm typo-label typo-2 gap-2 px-2.5 py-2 border',\n 'cs-focus cs-transition cs-disabled',\n ],\n },\n variants: {\n variant: {\n default: {\n root: [\n 'border-neutralA-3 bg-neutralA-2 text-neutral-11',\n 'hover:bg-neutralA-3 hover:text-neutral-12 hover:border-neutralA-6',\n 'data-pressed:bg-neutralA-4 data-pressed:text-neutral-12 data-pressed:border-neutralA-6',\n ],\n },\n outline: {\n root: [\n 'border-neutralA-6 bg-transparent text-neutral-11',\n 'hover:border-neutral-11 hover:text-neutral-12',\n 'data-pressed:border-neutral-12 data-pressed:bg-neutral-12 data-pressed:text-neutral-1',\n ],\n },\n ghost: {\n root: [\n 'bg-transparent text-neutral-10 border-none',\n 'hover:text-accent-12',\n 'data-pressed:text-neutral-12 p-0',\n ],\n },\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n","import { styles } from 'src/utils/styles';\n\nexport const tooltip = styles({\n slots: {\n positioner: [\n 'z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width)',\n 'transition-[top,left,right,bottom,transform] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)]',\n 'data-instant:transition-none',\n ],\n popup: [\n 'cs-popup-animation relative h-(--popup-height,auto) w-(--popup-width,auto) text-balance',\n 'transition-[width,height,scale,opacity]',\n 'typo-label rounded-md border border-neutral-6 bg-neutral-2 text-neutral-12 typo-2 shadow-l py-1.5 select-none',\n ],\n arrow: [\n 'size-4',\n 'fill-neutral-2 stroke-neutral-6 stroke-1',\n 'data-[side=top]:-bottom-3 data-[side=top]:rotate-180',\n 'data-[side=bottom]:-top-3 data-[side=bottom]:rotate-0',\n 'data-[side=left]:-right-3 data-[side=left]:rotate-90',\n 'data-[side=right]:-left-3 data-[side=right]:-rotate-90',\n 'transition-[left] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)]',\n 'data-instant:transition-none',\n ],\n viewport: [\n 'px-(--viewport-inline-padding)',\n '[--viewport-inline-padding:0.5rem]',\n 'relative h-full w-full overflow-clip',\n '**:data-current:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding))]',\n '**:data-current:translate-x-0',\n '**:data-current:opacity-100',\n '**:data-current:transition-[translate,opacity]',\n '**:data-current:duration-[350ms,175ms]',\n '**:data-current:ease-[cubic-bezier(0.22,1,0.36,1)]',\n '**:data-previous:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding))]',\n '**:data-previous:translate-x-0',\n '**:data-previous:opacity-100',\n '**:data-previous:transition-[translate,opacity]',\n '**:data-previous:duration-[350ms,175ms]',\n '**:data-previous:ease-[cubic-bezier(0.22,1,0.36,1)]',\n 'data-[activation-direction~=left]:[&_[data-current][data-starting-style]]:-translate-x-1/2',\n 'data-[activation-direction~=left]:[&_[data-current][data-starting-style]]:opacity-0',\n 'data-[activation-direction~=right]:[&_[data-current][data-starting-style]]:translate-x-1/2',\n 'data-[activation-direction~=right]:[&_[data-current][data-starting-style]]:opacity-0',\n 'data-[activation-direction~=left]:[&_[data-previous][data-ending-style]]:translate-x-1/2',\n 'data-[activation-direction~=left]:[&_[data-previous][data-ending-style]]:opacity-0',\n 'data-[activation-direction~=right]:[&_[data-previous][data-ending-style]]:-translate-x-1/2',\n 'data-[activation-direction~=right]:[&_[data-previous][data-ending-style]]:opacity-0',\n '[[data-instant]_&_[data-previous]]:transition-none',\n '[[data-instant]_&_[data-current]]:transition-none',\n ],\n },\n});\n","import type { BundledLanguage, HighlighterGeneric, LanguageInput } from 'shiki';\nimport { createHighlighter } from 'shiki';\nimport { Mode } from 'src/presets';\n\nlet highlighterInstance: HighlighterGeneric<BundledLanguage, any> | null = null;\n\nconst THEMES = [\n 'github-dark',\n 'github-light',\n 'nord',\n 'one-dark-pro',\n 'dracula',\n 'monokai',\n 'material-theme-darker',\n 'tokyo-night',\n 'catppuccin-mocha',\n 'solarized-dark',\n 'solarized-light',\n 'min-dark',\n 'min-light',\n];\n\nconst LANGUAJES = ['typescript', 'javascript', 'tsx', 'jsx', 'python', 'bash', 'json', 'css', 'html', 'text'];\n\nexport async function getHighlighter() {\n if (highlighterInstance) {\n return highlighterInstance;\n }\n\n highlighterInstance = await createHighlighter({\n themes: THEMES,\n langs: LANGUAJES,\n });\n\n return highlighterInstance;\n}\n\ninterface HighlightOptions {\n highlightLines?: number[];\n showLineNumbers?: boolean;\n mode?: Mode;\n}\n\nexport async function highlightCode(code: string, lang: string = 'text', options: HighlightOptions = {}): Promise<string> {\n const highlighter = await getHighlighter();\n\n const { highlightLines = [], showLineNumbers = false, mode = 'dark' } = options;\n\n const loadedLanguages = highlighter.getLoadedLanguages();\n\n if (!loadedLanguages.includes(lang as BundledLanguage)) {\n try {\n await highlighter.loadLanguage(lang as unknown as LanguageInput);\n } catch (_error) {\n console.warn(`Language \"${lang}\" not found, falling back to plaintext`);\n lang = 'text';\n }\n }\n\n const html = highlighter.codeToHtml(code, {\n lang,\n theme: mode === 'light' ? 'min-light' : 'tokyo-night',\n transformers: [\n {\n pre(node) {\n node.properties.tabindex = '-1';\n },\n line(node, line) {\n node.properties['data-line'] = String(line);\n\n if (highlightLines.includes(line)) {\n node.properties['data-highlighted'] = '';\n }\n\n // Add line number as first child when enabled\n if (showLineNumbers) {\n node.children.unshift({\n type: 'element',\n tagName: 'span',\n properties: { class: 'line-number' },\n children: [{ type: 'text', value: String(line) }],\n });\n }\n },\n },\n ],\n });\n\n return html;\n}\n","export interface CodeMeta {\n title?: string;\n highlightLines?: number[];\n showLineNumbers?: boolean;\n}\n\nexport function parseCodeMeta(meta: string = ''): CodeMeta {\n const result: CodeMeta = {};\n\n const titleMatch = meta.match(/title=\"([^\"]+)\"/);\n\n if (titleMatch) {\n result.title = titleMatch[1];\n }\n\n const highlightMatch = meta.match(/\\{([0-9,-]+)\\}/);\n\n if (highlightMatch) {\n result.highlightLines = parseLineNumbers(highlightMatch[1]);\n }\n\n result.showLineNumbers = meta.includes('showLineNumbers');\n\n return result;\n}\n\nfunction parseLineNumbers(input: string): number[] {\n const lines: number[] = [];\n const parts = input.split(',');\n\n for (const part of parts) {\n if (part.includes('-')) {\n const [start, end] = part.split('-').map(Number);\n for (let i = start; i <= end; i++) {\n lines.push(i);\n }\n } else {\n lines.push(Number(part));\n }\n }\n\n return lines;\n}\n","import { CommonHelpers } from '@digo-labs/common';\nimport { parseColor, Color } from '..';\n\nexport function cssColor(varName: string): Color {\n let cached: Color | null = null;\n const resolve = () => cached ??= parseColor(CommonHelpers.getCssVariable(varName));\n\n return new Proxy({} as Color, {\n get(_target, prop) {\n const real = resolve() as unknown as Record<string | symbol, unknown>;\n const value = real[prop as string];\n return typeof value === 'function' ? (value as (...args: unknown[]) => unknown).bind(real) : value;\n },\n });\n}\n","import { cn } from '@digo-labs/common';\nimport { Tint } from '..';\n\nimport { ComponentPropsWithoutRef } from 'react';\nimport LottieUI from 'lottie-react';\n\ninterface LottieProperties extends ComponentPropsWithoutRef<typeof LottieUI> {\n tint?: string;\n containerClasses?: string;\n}\n\nexport function Lottie(properties: LottieProperties) {\n const {\n className,\n tint,\n containerClasses,\n ...props\n } = properties;\n\n return (\n <div className={cn('relative', containerClasses)}>\n <LottieUI\n className={cn('', className)}\n {...props}\n />\n\n <Tint color={tint ? tint : 'transparent'} />\n </div>\n );\n}\n","import { cn } from '@digo-labs/common';\n\nimport QR from 'qrcode';\n\nimport { ComponentPropsWithoutRef, useEffect, useState } from 'react';\n\nexport interface QRCodeProperties extends ComponentPropsWithoutRef<'div'> {\n data: string;\n foreground?: string;\n background?: string;\n robustness?: 'L' | 'M' | 'Q' | 'H';\n};\n\nexport function QRCode(properties: QRCodeProperties) {\n const {\n data,\n foreground,\n background,\n robustness = 'M',\n className,\n ...props\n } = properties;\n\n const [svg, setSVG] = useState<string | null>(null);\n\n useEffect(() => {\n generateQR();\n }, [data, foreground, background, robustness]);\n\n if (!svg) return undefined;\n\n async function generateQR() {\n try {\n const newSvg = await QR.toString(data, {\n type: 'svg',\n color: {\n dark: foreground,\n light: background,\n },\n width: 200,\n errorCorrectionLevel: robustness,\n margin: 0,\n });\n\n setSVG(newSvg);\n } catch (err) {\n console.error(err);\n }\n };\n\n return (\n <div\n className={cn('size-full', '[&_svg]:size-full', className)}\n dangerouslySetInnerHTML={{ __html: svg }}\n {...props}\n />\n );\n};\n","export default \"data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20x='0.5'%20y='0.5'%20width='100'%20height='100'%20fill='inherit'%20stroke='inherit'%20stroke-width='inherit'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='100'%20height='100'%20viewBox='0%200%20100%20100'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cx='50'%20cy='50'%20r='40'%20fill='inherit'%20stroke='inherit'%20stroke-width='inherit'%20paint-order='stroke%20fill'/%3e%3c/svg%3e\"","import { ComponentType } from 'react';\n\nimport Square from '../shapes/square.svg?react';\nimport Circle from '../shapes/circle.svg?react';\n\nexport type ShapeType = 'triangle' | 'square' | 'circle' | 'star';\n\ninterface Properties {\n type: ShapeType;\n fill?: string;\n stroke?: string;\n strokeWidthPercent?: number;\n width?: number;\n height?: number;\n}\n\nexport function Shape(properties: Properties) {\n const { type, fill, width, height, stroke, strokeWidthPercent } = properties;\n\n const SvgComponent = getShape();\n\n function getShape(): ComponentType<any> {\n switch (type) {\n case 'square':\n return Square;\n case 'circle':\n return Circle;\n default:\n return Square;\n }\n }\n\n const radius = strokeWidthPercent ? 50 - strokeWidthPercent / 2 : 50;\n\n return (\n <SvgComponent\n width={width}\n height={height}\n fill={fill}\n stroke={stroke}\n strokeWidth={strokeWidthPercent}\n style={{ display: 'block' }}\n r={radius}\n />\n );\n}\n","import { cn } from '@digo-labs/common';\n\ninterface Properties {\n color: string;\n className?: string;\n}\n\nexport function Tint(properties: Properties) {\n const {\n color,\n className,\n } = properties;\n\n return (\n <div\n className={cn('pointer-events-none absolute inset-0 mix-blend-darken', className)}\n style={{ backgroundColor: color }}\n />\n );\n};\n"],"names":["PALETTES","SHADOW_STEPS","COLOR_ROLES","TYPOGRAPHY_ROLES","PresetHelpers","preset","mode","vars","role","palette","solid","alpha","alphaKey","i","step","config","LOCAL_STORAGE_KEY","DesignSystemContext","createContext","StylesContext","baseStyles","DesignSystemProvider","properties","children","defaultMode","overrides","setMode","useState","currentPreset","setCurrentPreset","previousVarsRef","useRef","useEffect","savedMode","LocalStorage","useLayoutEffect","root","prevVars","key","value","toggleMode","current","updatePreset","partial","prev","setRolePalette","updateTypography","updateShadow","updateComponentOverrides","component","componentOverrides","styles","useMemo","presetOverrides","contextValue","jsx","useDesignSystem","context","useContext","useStyles","createComponentStyles","styleKey","Context","ComponentStylesProvider","props","classNames","variants","styleFn","variantKey","classNamesKey","slots","name","base","cn","useComponentStyles","useComponentVariants","createTV","defineOverrides","motionTransitionPresets","motionComponentPresets","motionPresencePresets","MotionAnimatePresence","MotionAnimatePresenceRoot","activeIndex","transition","className","resolved","finalVariants","finalTransition","AnimatePresence","motion","ANIMATIONS","AuthGuard","loginPath","fallback","isAuthenticated","isLoading","useAuth","location","useLocation","Outlet","Navigate","DEFAULT_HOVERED","DEFAULT_TAPPED","Card","onClick","delay","showFeedback","setShowFeedback","timeoutRef","indexRef","handleClick","getNextIndex","CardRoot","e","CardContent","CardItem","hovered","tapped","index","CardFeedback","label","ChatThread","ChatThreadRoot","messages","streamingText","bottomRef","jsxs","message","ChatThreadBubble","ChatThreadStreamingBubble","variantSlot","showStopReason","ChatThreadMessageContent","text","content","textParts","part","imageParts","joinedText","Fragment","Image","Icon","icon","iconClass","IconHelpers","Kbd","KbdRoot","KbdGroup","KbdGroupRoot","CommandButton","CommandButtonRoot","placeholder","Button","variant","ButtonRoot","ButtonPrimitive","CopyPasteButton","onCopy","timeout","copied","setCopied","handleCopy","CommonHelpers","FieldControl","FieldPrimitive","FieldValidity","Field","FieldRoot","FieldLabel","FieldItem","FieldDescription","FieldError","Dropzone","files","onChange","multiple","accept","maxSize","disabled","onDropRejected","id","required","getRootProps","getInputProps","inputRef","isDragActive","open","useDropzone","acceptedFiles","next","handleRemove","file","f","DropzoneRoot","DropzoneArea","DropzoneCTA","DropzoneFileList","dataTransfer","event","onReorder","ReorderList","DropzoneFileItem","onDeleteFile","onRemove","handleDelete","previewUrl","fonts","FONT_FACES","FontPicker","FontPickerRoot","onValueChange","triggerRef","Combobox","font","ComboboxTrigger","ComboboxValue","ComboboxPopup","ComboboxInput","ComboboxEmpty","ComboboxList","ComboboxItem","ImageDropzone","ImageDropzoneRoot","dropzoneProps","setIsLoading","handleChange","nextFiles","image","error","ImageDropzonePlaceHolder","ImageDropzoneLoader","Navbar","NavbarRoot","ref","element","resizeObserver","NavbarLogo","NavbarContent","NavbarActions","paletteNames","palettes","PalettePicker","PalettePickerRoot","ColorSwatch","ParameterText","ParameterTextRoot","Parameter","ParameterRow","ParameterLabel","ParameterSeparator","ParameterInput","Input","ParameterPalettePicker","ParameterPalettePickerRoot","ParameterTextArea","ParameterTextAreaRoot","TextArea","ParameterSlider","measure","ParameterSliderRoot","ParameterValue","ParameterMeasure","Slider","ParameterToggleGroup","items","ParameterToggleGroupRoot","itemVariant","inline","toggleInput","ToggleGroup","item","ToggleGroupItem","ParameterSwitch","ParameterSwitchRoot","Switch","ParameterToggle","ParameterToggleRoot","Toggle","ParameterColor","ParameterColorRoot","pickerProps","ColorInput","ParameterColorSwatchPicker","ParameterColorSwatchPickerRoot","ColorSwatchPicker","ParameterCombobox","ParameterComboboxRoot","ParameterFiles","ParameterFilesRoot","ParameterFontPicker","ParameterFontPickerRoot","ParameterImage","ParameterImageRoot","ParameterNumber","ParameterNumberRoot","NumberField","NumberFieldGroup","NumberFieldDecrement","NumberFieldInput","NumberFieldIncrement","ParameterPresetPicker","ParameterPresetPickerRoot","PresetPicker","ParameterSelect","ParameterSelectRoot","Select","SelectTrigger","SelectValue","SelectPopup","SelectItem","ParameterGroup","ParameterGroupRoot","collapsible","Collapsible","CollapsibleTrigger","CollapsibleIcon","CollapsiblePanel","ParameterTypographyGroup","ParameterTypographyGroupRoot","groupProps","weight","tracking","leading","ParameterShadowGroup","ParameterShadowGroupRoot","colorHex","color","Placeholder","PlaceholderRoot","PlaceholderList","count","_","PlaceholderItem","PlaceholderScrollableArea","ScrollArea","defaultPreset","oceanPreset","retroFuturisticPreset","PRESETS","curated","presets","PresetPickerRoot","PromptInputContext","usePromptInputContext","PromptInput","PromptInputRoot","attachments","onAttachmentsChange","maxAttachments","model","onModelChange","models","isSubmitting","isStreaming","onSubmit","onAbort","openFilePicker","toastManager","payloads","payload","PromptInputDefault","PromptInputAttachments","PromptInputInput","PromptInputToolbarRow","PromptInputAttachButton","PromptInputModelPicker","Separator","PromptInputSubmit","base64","a","attachment","isImagePayload","Tooltip","getFileExtensionLabel","onKeyDown","minRows","maxRows","handleKeyDown","submitAndClear","handleValueChange","nextId","entry","found","atLimit","idleDisabled","isBusy","subtype","GoogleSignInButton","GoogleSignInButtonRoot","isSigningIn","setIsSigningIn","from","_b","_a","handleSignIn","client","AuthHelper","tryCatch","Spinner","SwitchTheme","ToggleTheme","pressed","setPressed","setHovered","TransparentBackground","cols","rows","Accordion","AccordionRoot","AccordionPrimitive","AccordionItem","AccordionTrigger","state","AccordionContent","Alert","AlertRoot","AlertContent","AlertTitle","AlertDescription","AlertAction","AlertIcon","Autocomplete","AutocompletePrimitive","AutocompleteInput","AutocompletePopup","anchor","side","sideOffset","align","alignOffset","AutocompleteItem","AutocompleteSeparator","AutocompleteGroup","AutocompleteGroupLabel","AutocompleteEmpty","AutocompleteRow","AutocompleteValue","AutocompleteList","AutocompleteClear","AutocompleteStatus","loading","AutocompleteCollection","AutocompleteTrigger","useAutocompleteFilter","INITIAL_DIMENSION","ChartContext","useChart","ChartItemContext","useChartItem","ChartContainer","ChartContainerRoot","initialDimension","style","cssVars","ResponsiveContainer","ChartTooltip","ChartTooltipRoot","active","ChartTooltipItem","ChartTooltipIndicator","ChartTooltipLabel","ChartTooltipValue","itemConfig","getPayloadConfigFromPayload","ChartLegend","Legend","ChartLegendRoot","ChartLegendItem","ChartLegendIndicator","ChartLegendLabel","nestedPayload","nestedKey","Checkbox","CheckboxRoot","indeterminate","CheckboxPrimitive","CodeBlock","code","language","showLineNumbers","highlightLines","CodeBlockRoot","CodeBlockCode","CodeBlockHeader","CodeBlockTitle","languageMetadata","LANGUAGE_MAP","CodeBlockActions","CodeBlockCopyButton","highlightedCode","setHighlightedCode","_isLoading","cancelled","highlight","html","highlightCode","CollapsibleRoot","CollapsiblePrimitive","openAnimation","closeAnimation","renderProps","ColorArea","ColorAreaRoot","ColorAreaPrimitive","ColorThumb","ColorField","ColorFieldRoot","CHANNEL_PLACEHOLDERS","channel","ColorFieldPrimitive","colorModeItems","ColorInputRoot","controlledValue","defaultValue","showAlpha","isControlled","internalColor","setInternalColor","colorMode","setColorMode","newColor","ColorPicker","getColorChannels","colorSpaces","ColorPickerRoot","showChannels","swatches","colorSpace","setColorSpace","ColorPickerPrimitive","Popover","PopoverTrigger","PopoverPopup","ColorSlider","orientation","ColorSliderRoot","ColorSliderPrimitive","SliderTrack","ColorSwatchRoot","ColorSwatchPrimitive","ColorSwatchPickerRoot","colors","ColorSwatchPickerPrimitive","ColorSwatchPickerItemPrimitive","anchorRef","ComboboxRoot","ComboboxPrimitive","showTrigger","showClear","startAddon","triggerProps","clearProps","InputGroup","InputGroupAddon","InputGroupInput","ComboboxClear","anchorProp","ComboboxSeparator","ComboboxGroup","ComboboxGroupLabel","ComboboxRow","ComboboxStatus","ComboboxCollection","ComboboxMultipleInput","getLabel","getKey","useComboboxFilter","CommandDialogRoot","CommandDialogPrimitive","CommandDialogPortal","CommandCreateHandle","CommandDialog","CommandDialogTrigger","CommandDialogPopup","Command","autoHighlight","keepHighlight","CommandInput","CommandList","CommandEmpty","CommandPanel","CommandGroup","CommandGroupLabel","CommandCollection","CommandItem","CommandSeparator","CommandShortcut","CommandFooter","Counter","CounterRoot","places","containerHeight","spring","placesArray","place","CounterDigit","height","valueRoundedToPlace","animatedValue","useSpring","CounterNumber","mv","number","y","useTransform","latest","placeValue","offset","memo","sideToSwipe","Drawer","swipeDirection","DrawerPrimitive","DrawerCreateHandle","DrawerTrigger","DrawerHandle","DrawerClose","DrawerPopup","backdrop","container","DrawerContent","DrawerHeader","DrawerFooter","DrawerTitle","DrawerDescription","Empty","EmptyRoot","EmptyHeader","EmptyMedia","EmptyIcon","rotate","EmptyTitle","EmptyDescription","EmptyContent","Fieldset","FieldsetRoot","FieldsetPrimitive","FieldsetLegend","Form","FormRoot","FormPrimitive","Group","GroupRoot","GroupSeparator","GroupText","ImageRoot","src","resolvedSrc","InputGroupRoot","parent","InputGroupTextarea","InputGroupText","unstyled","InputRoot","InputPrimitive","Label","LabelRoot","Masonry","MasonryRoot","columns","Children","measureRef","distributed","setDistributed","distribute","useCallback","nodes","heights","node","shortest","columnItems","NavigationMenu","NavigationMenuRoot","NavigationMenuPrimitive","NavigationMenuPositioner","NavigationMenuList","NavigationMenuItem","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","NavigationMenuLinkCard","NavigationMenuIndicator","NumberFieldRoot","generatedId","useId","fieldId","NumberFieldPrimitive","body","original","Pagination","PaginationRoot","PaginationContent","PaginationItem","PaginationLink","isActive","render","PaginationPrevious","PaginationNext","PaginationEllipsis","ParameterRoot","PopoverCreateHandle","PopoverPrimitive","PopoverPopupRoot","PopoverClose","PopoverTitle","PopoverDescription","Progress","ProgressRoot","ProgressPrimitive","ProgressTrack","ProgressIndicator","ProgressLabel","ProgressValue","ScrollAreaRoot","scrollFade","scrollbarGutter","ScrollAreaPrimitive","ScrollBar","SelectRoot","SelectPrimitive","alignItemWithTrigger","SelectSeparator","SelectGroup","SelectGroupLabel","SeparatorRoot","SeparatorPrimitive","Sidebar","defaultOpen","setOpen","toggle","SidebarRoot","SidebarHeader","SidebarContent","SidebarFooter","SidebarGroup","SidebarGroupLabel","SidebarGroupTitle","SidebarGroupAction","SidebarGroupContent","SidebarItem","itemClassName","isValidElement","cloneElement","Spacer","SpacerRoot","SliderRoot","min","max","bottomContent","_values","SliderPrimitive","SliderTicks","skipInterval","renderLabel","ticks","isMajor","SliderValue","icons","spin","SpinnerRoot","SwitchRoot","checkedIcon","uncheckedIcon","SwitchPrimitive","loaders","Ring","Ring2","Tailspin","LineSpinner","Squircle","Square","Reuleaux","TailChase","DotSpinner","Spiral","Bouncy","Treadmill","BouncyArc","Waveform","Hatch","Hourglass","Zoomies","LineWobble","InfinityLoader","Trefoil","Cardio","Helix","Grid","Quantum","Wobble","Orbit","ChaoticOrbit","Superballs","Trio","Momentum","DotWave","Leapfrog","NewtonsCradle","DotStream","DotPulse","Metronome","Jelly","JellyTriangle","Mirage","Ping","Pulsar","Ripples","Miyagi","Pinwheel","Loader","type","size","speed","stroke","strokeLength","bgOpacity","Component","Tabs","TabsRoot","TabsPrimitive","TabsList","TabsTab","TabsPanel","ToggleRoot","TogglePrimitive","ToggleGroupRoot","ToggleGroupPrimitive","ToggleGroupSeparator","useTocHeadings","pathname","setItems","updateHeadings","headings","toc","h","heading","observer","TableOfContents","TableOfContentsRoot","TableOfContentsHeader","TableOfContentsItem","target","top","TableOfContentsThumb","containerRef","activeItems","thumbRef","calc","upper","lower","slug","computed","update","TableOfContentsItems","activeSlugs","itemOffsets","lineOffsets","lineWidth","svg","setSvg","onResize","w","d","bottom","resize","TextAreaRoot","TextareaAutosize","TintImage","TintImageRoot","Toast","TOAST_ICONS","ToastProvider","position","Toasts","toasts","getSwipeDirection","isTop","toast","ToastItem","TooltipProvider","handle","TooltipPrimitive","TooltipPopup","CursorContainer","showNativeCursor","dimensions","setActive","x","useMotionValue","handleMove","rect","useCursorTracking","springX","springY","CursorClipping","radius","width","entered","setEntered","outerLeft","v","outerTop","innerLeft","innerTop","diameter","SNAP_SPRING","CursorBracket","lineLength","borderWidth","sentinelRef","wasSnapped","rawLeft","rawTop","rawWidth","rawHeight","boxLeft","boxTop","boxWidth","boxHeight","cornerW","cornerH","requestAnimationFrameId","sentinel","containerRect","cursorX","cursorY","clientX","clientY","targetRect","buildBoxShadow","glowColor","intensity","hsl","s","l","blur","spread","inset","easeOutCubic","easeInCubic","animateValue","start","end","duration","ease","onUpdate","onEnd","t0","tick","elapsed","t","GRADIENT_POSITIONS","COLOR_MAP","buildMeshGradients","gradients","c","BorderGlow","edgeSensitivity","parseColor","backgroundColor","borderRadius","glowRadius","glowIntensity","coneSpread","animated","fillOpacity","cardRef","isHovered","setIsHovered","cursorAngle","setCursorAngle","edgeProximity","setEdgeProximity","sweepActive","setSweepActive","getCenterOfElement","el","getEdgeProximity","cx","cy","dx","dy","kx","ky","getCursorAngle","degrees","handlePointerMove","card","angleStart","angleEnd","colorSensitivity","isVisible","borderOpacity","glowOpacity","meshGradients","borderBg","g","fillBg","angleDeg","backgroundCss","BorderTrail","onAnimationComplete","defaultTransition","vertex","fragment","DarkVeil","hueShift","noiseIntensity","scanlineIntensity","scanlineFrequency","warpAmount","resolutionScale","canvas","renderer","Renderer","gl","geometry","Triangle","program","Program","Vec2","mesh","Mesh","frame","loop","vertexShader","fragmentShader","colorToVec3","rgb","r","b","Vector3","DissolveOverlay","dissolve","easing","noiseScale","edgeSoftness","displacementStrength","noiseSpeed","onFinish","progressRef","tweenRef","uniformsRef","isTransitioningRef","onFinishRef","adaptiveSoftness","scene","Scene","camera","OrthographicCamera","WebGLRenderer","uniforms","Vector2","material","ShaderMaterial","PlaneGeometry","setSize","canvasWidth","canvasHeight","ro","rafId","lastTime","renderLoop","now","delta","gsap","InertiaPlugin","throttle","func","limit","lastCall","args","DotGrid","dotSize","gap","baseColor","activeColor","proximity","speedTrigger","shockRadius","shockStrength","maxSpeed","resistance","returnDuration","onMove","wrapperRef","canvasRef","dotsRef","pointerRef","baseRgb","activeRgb","circlePath","p","buildGrid","wrap","dpr","ctx","cell","gridW","gridH","extraX","extraY","startX","startY","dots","proxSq","draw","px","py","dot","ox","oy","dsq","throttledMove","onMoveHandler","onClickHandler","pr","dt","vx","vy","scale","normalizedX","normalizedY","dist","pushX","pushY","falloff","DraggableContainer","contentClasses","cursor","colorToRgb","FaultyTerminal","gridMul","digitSize","timeScale","pause","glitchAmount","flickerAmount","noiseAmp","chromaticAberration","dither","curvature","tint","mouseReact","mouseStrength","pageLoadAnimation","brightness","rest","programRef","rendererRef","mouseRef","smoothMouseRef","frozenTimeRef","rafRef","loadAnimationStartRef","timeOffsetRef","pauseRef","timeScaleRef","mouseReactRef","pageLoadAnimationRef","tintVec","ditherValue","handleMouseMove","ctn","OGLColor","animationElapsed","progress","smoothMouse","mouse","mouseUniform","u","tintUniform","gridUniform","MAX_GRADIENT_STOPS","FloatingLines","linesGradient","enabledWaves","lineCount","lineDistance","topWavePosition","middleWavePosition","bottomWavePosition","animationSpeed","interactive","bendRadius","bendStrength","mouseDamping","parallax","parallaxStrength","mixBlendMode","targetMouseRef","currentMouseRef","targetInfluenceRef","currentInfluenceRef","targetParallaxRef","currentParallaxRef","topLineCount","getLineCount","middleLineCount","bottomLineCount","topLineDistance","getLineDistance","middleLineDistance","bottomLineDistance","waveType","stops","hex","hexToVec3","clock","Clock","centerX","centerY","offsetX","offsetY","handlePointerLeave","raf","GlassContainer","borderRadiusPx","blurIntensity","shadowIntensity","blurClasses","glowStyles","shadowStyles","Grainient","timeSpeed","colorBalance","warpStrength","warpFrequency","warpSpeed","warpAmplitude","blendAngle","blendSoftness","rotationAmount","grainAmount","grainScale","grainAnimated","contrast","gamma","saturation","zoom","color1","color2","color3","res","animationEffects","currentInner","nextInner","tl","_currentInner","_nextInner","ImageTransitionType","ImageTransition","effect","currentImageRef","nextImageRef","currentInnerRef","nextInnerRef","isAnimatingRef","currentSrc","setCurrentSrc","nextSrc","setNextSrc","discVertShaderSource","discFragShaderSource","Face","__publicField","Vertex","z","vec3","vec2","Geometry","divisions","midPointCache","div","newFaces","face","ndx","mAB","mBC","mCA","ndxA","ndxB","cache","cacheKey","IcosahedronGeometry","DiscGeometry","steps","safeSteps","createShader","source","shader","createProgram","shaderSources","transformFeedbackVaryings","attribLocations","attrib","makeVertexArray","bufLocNumElmPairs","indices","va","buffer","loc","numElem","indexBuffer","resizeCanvasToDisplaySize","displayWidth","displayHeight","needResize","makeBuffer","sizeOrData","usage","buf","createAndSetupTexture","minFilter","magFilter","wrapS","wrapT","texture","ArcballControl","updateCallback","quat","deltaTime","targetFrameDuration","angleFactor","snapRotation","INTENSITY","ANGLE_AMPLIFICATION","midPointerPos","q","SNAPPING_INTENSITY","sqrDist","distanceFactor","combinedQuat","RA_INTENSITY","rad","rv","RV_INTENSITY","out","axis","angle","pos","xySq","rSq","InfiniteGridMenu","onActiveItemChange","onMovementChange","onInit","options","mat4","needsResize","time","itemCount","cellSize","resolve","reject","img","images","matricesArray","matrices","instanceMatrixArray","mat4AttribSlotCount","bytesPerMatrix","j","positions","SCALE_INTENSITY","finalScale","matrix","canvasEl","distance","damping","cameraTargetZ","isMoving","nearestVertexIndex","itemIndex","snapDirection","n","inversOrientation","nt","maxD","nearestVertexPos","defaultItems","InfiniteMenu","onItemSelected","onDragChange","discSize","snapStrength","cameraDistance","sphereRadius","activeItem","setActiveItem","setIsMoving","sketch","handleActiveItem","sk","handleResize","Iridescence","amplitude","opacity","ctnDom","mousePos","Color","animateId","TRANSITION","DELAY","DIRECTIONS","LetterSwap","letter","direction","scope","animate","useAnimate","blocked","setBlocked","ANIMATION_CONFIGS","getRandomDirection","timer","animationStart","getRandomDelay","containerClass","MarqueeBar","renderType","TextScramble","Marquee","CONTENT","range","properites","baseVelocity","slowdownOnHover","slowDownFactor","slowDownSpringConfig","useScrollVelocity","scrollAwareDirection","scrollSpringConfig","scrollContainer","repeat","draggable","dragSensitivity","dragVelocityDecay","dragAwareDirection","dragAngle","grabCursor","innerContainer","baseX","baseY","scrollY","useScroll","scrollVelocity","useVelocity","smoothVelocity","hoverFactorValue","defaultVelocity","isDragging","dragVelocity","smoothHoverFactor","velocityFactor","isHorizontal","actualBaseVelocity","directionFactor","wrappedValue","useAnimationFrame","moveBy","lastPointerPosition","handlePointerDown","currentPosition","deltaX","deltaY","angleInRadians","directionX","directionY","projectedDelta","handlePointerUp","Noise","patternSize","patternScaleX","patternScaleY","patternRefreshInterval","patternAlpha","grainRef","animationId","canvasSize","drawGrain","imageData","data","Orb","hue","rotationSpeed","innerRadius","vert","frag","Vec3","TextMorph","stiffness","mass","uniqueId","characters","charCounts","char","lowerChar","defaultVariants","character","TextPressure","italic","minFontSize","titleRef","spansRef","cursorRef","fontSize","setFontSize","scaleY","setScaleY","lineHeight","setLineHeight","chars","handleTouchMove","left","containerW","containerH","newFontSize","textRect","yRatio","maxDist","span","charCenter","getAttr","minVal","maxVal","val","wdth","wght","italVal","alphaVal","TextRoll","getEnterDelay","getExitDelay","letters","_c","_d","DEFAULT_CHARACTERS","BINARY_CHARACTERS","characterSet","trigger","onScrambleComplete","triggerOnMouse","MotionComponent","displayText","setDisplayText","isAnimating","setIsAnimating","isTrigger","setIsTrigger","scramble","interval","scrambled","TextShimmer","TextShimmerRoot","highlightColor","dynamicSpread","TextShimmerWave","zDistance","xDistance","yDistance","scaleDistance","rotateYDistance","TextSwapLetter","word","TextType","typingSpeed","initialDelay","pauseDuration","deletingSpeed","showCursor","hideCursorWhileTyping","hideCursorOnComplete","cursorCharacter","cursorClassName","cursorBlinkDuration","textColors","variableSpeed","onSentenceComplete","startOnVisible","reverseMode","displayedText","setDisplayedText","currentCharIndex","setCurrentCharIndex","isDeleting","setIsDeleting","currentTextIndex","setCurrentTextIndex","setIsVisible","previousText","setPreviousText","textArray","getRandomSpeed","getCurrentTextColor","entries","currentText","processedText","executeTypingAnimation","isComplete","hideOnComplete","shouldHideCursor","createElement","useAnimatedValue","setValue","startTimeRef","previousProgressRef","reset","useElementSize","useFocusSize","isFocused","animationFrameId","timestamp","newSize","usePreloadedImage","loadedSrc","setLoadedSrc","useStopwatch","intervalRef","seconds","setSeconds","stop","useTimer","initialSeconds","onComplete","isRunning","setIsRunning","timerRef","onCompleteRef","startInterval","prevSeconds","resume","currentSeconds","CommandContext","CommandProvider","useCommand","accordion","alert","autocomplete","button","slider","chatThread","chart","checkbox","codeBlock","colorArea","colorField","colorInput","colorPicker","colorSlider","colorSwatch","colorSwatchPicker","combobox","commandButton","command","counter","drawer","dropzone","imageDropzone","empty","field","fieldSet","form","group","inputGroup","input","masonry","kbd","motionAnimatePresence","navbar","navigationMenu","numberField","pagination","fontPicker","googleSignInButton","palettePicker","parameter","parameterColor","parameterColorSwatchPicker","parameterCombobox","parameterFontPicker","parameterGroup","parameterPalettePicker","parameterPresetPicker","parameterSlider","parameterSwitch","parameterText","parameterTextArea","parameterToggle","parameterToggleGroup","parameterTypographyGroup","parameterFiles","parameterImage","parameterNumber","parameterSelect","parameterShadowGroup","popover","presetPicker","promptInput","scrollArea","select","separator","sidebar","spacer","spinner","_switch","tableOfContents","tabs","textArea","textShimmer","tintImage","toggleGroup","tooltip","highlighterInstance","THEMES","LANGUAJES","getHighlighter","createHighlighter","lang","highlighter","line","parseCodeMeta","meta","result","titleMatch","highlightMatch","parseLineNumbers","lines","parts","cssColor","varName","cached","_target","prop","real","Lottie","containerClasses","LottieUI","Tint","QRCode","foreground","background","robustness","setSVG","generateQR","newSvg","QR","err","Circle","Shape","fill","strokeWidthPercent","SvgComponent","getShape"],"mappings":"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"}