labbdocs 0.4.0__tar.gz → 0.4.2__tar.gz

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 (165) hide show
  1. {labbdocs-0.4.0 → labbdocs-0.4.2}/PKG-INFO +1 -1
  2. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/blog/index.md +3 -2
  3. labbdocs-0.4.2/labbdocs/content/blog/posts/2_labb-featured-on-youtube.md +19 -0
  4. labbdocs-0.4.2/labbdocs/static/lbdocs/img/labb/bugbytes-overview-thumb.png +0 -0
  5. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/doc_card/index.html +6 -1
  6. labbdocs-0.4.2/labbdocs/templates/cotton/lbdocs/nav/topnav.html +148 -0
  7. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templatetags/docs_tags.py +19 -0
  8. {labbdocs-0.4.0 → labbdocs-0.4.2}/pyproject.toml +1 -1
  9. labbdocs-0.4.0/labbdocs/templates/cotton/lbdocs/nav/topnav.html +0 -143
  10. {labbdocs-0.4.0 → labbdocs-0.4.2}/LICENSE +0 -0
  11. {labbdocs-0.4.0 → labbdocs-0.4.2}/README.md +0 -0
  12. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/__init__.py +0 -0
  13. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/apps.py +0 -0
  14. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/blog/posts/1_introducing-labb-and-the-roadmap.md +0 -0
  15. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/1_getting_started/1_introduction.md +0 -0
  16. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/1_getting_started/2_installation.md +0 -0
  17. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/1_getting_started/3_changelog.md +0 -0
  18. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/1_getting_started/4_roadmap.md +0 -0
  19. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/1_getting_started/5_credits.md +0 -0
  20. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/2_concepts/1_reactivity.md +0 -0
  21. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/2_concepts/2_theming.md +0 -0
  22. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/2_concepts/3_building_css.md +0 -0
  23. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/3_references/0_labb_cli.md +0 -0
  24. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/3_references/1_config_yaml.md +0 -0
  25. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/3_references/2_django_settings.md +0 -0
  26. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/3_references/3_lb_tags.md +0 -0
  27. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/3_references/4_c-lb.m.md +0 -0
  28. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/3_references/5_window_lb.md +0 -0
  29. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/3_references/6_llms.txt.md +0 -0
  30. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/guide/index.md +0 -0
  31. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/icons/1_getting_started/1_introduction.md +0 -0
  32. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/icons/2_packs/1_remix.md +0 -0
  33. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/icons/2_packs/more.md +0 -0
  34. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/icons/index.md +0 -0
  35. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/1_actions/button.md +0 -0
  36. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/1_actions/dropdown.md +0 -0
  37. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/1_actions/fab.md +0 -0
  38. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/1_actions/modal.md +0 -0
  39. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/1_actions/swap.md +0 -0
  40. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/1_actions/theme-controller.md +0 -0
  41. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/accordion.md +0 -0
  42. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/avatar.md +0 -0
  43. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/badge.md +0 -0
  44. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/card.md +0 -0
  45. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/carousel.md +0 -0
  46. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/chat.md +0 -0
  47. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/collapse.md +0 -0
  48. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/diff.md +0 -0
  49. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/hover-gallery.md +0 -0
  50. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/hover3d.md +0 -0
  51. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/kbd.md +0 -0
  52. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/list.md +0 -0
  53. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/stat.md +0 -0
  54. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/table.md +0 -0
  55. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/text-rotate.md +0 -0
  56. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/text.md +0 -0
  57. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/2_data_display/timeline.md +0 -0
  58. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/3_navigation/breadcrumbs.md +0 -0
  59. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/3_navigation/dock.md +0 -0
  60. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/3_navigation/link.md +0 -0
  61. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/3_navigation/menu.md +0 -0
  62. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/3_navigation/navbar.md +0 -0
  63. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/3_navigation/pagination.md +0 -0
  64. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/3_navigation/steps.md +0 -0
  65. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/3_navigation/tabs.md +0 -0
  66. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/4_feedback/alert.md +0 -0
  67. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/4_feedback/loading.md +0 -0
  68. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/4_feedback/progress.md +0 -0
  69. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/4_feedback/radial-progress.md +0 -0
  70. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/4_feedback/skeleton.md +0 -0
  71. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/4_feedback/status.md +0 -0
  72. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/4_feedback/toast.md +0 -0
  73. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/4_feedback/tooltip.md +0 -0
  74. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/checkbox.md +0 -0
  75. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/fieldset.md +0 -0
  76. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/file-input.md +0 -0
  77. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/filter.md +0 -0
  78. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/input.md +0 -0
  79. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/label.md +0 -0
  80. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/radio.md +0 -0
  81. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/range.md +0 -0
  82. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/rating.md +0 -0
  83. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/select.md +0 -0
  84. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/textarea.md +0 -0
  85. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/toggle.md +0 -0
  86. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/5_data_input/validator.md +0 -0
  87. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/6_layout/divider.md +0 -0
  88. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/6_layout/drawer.md +0 -0
  89. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/6_layout/footer.md +0 -0
  90. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/6_layout/hero.md +0 -0
  91. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/6_layout/indicator.md +0 -0
  92. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/6_layout/join.md +0 -0
  93. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/6_layout/mask.md +0 -0
  94. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/6_layout/stack.md +0 -0
  95. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/7_mockup/mockup-browser.md +0 -0
  96. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/7_mockup/mockup-code.md +0 -0
  97. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/7_mockup/mockup-phone.md +0 -0
  98. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/7_mockup/mockup-window.md +0 -0
  99. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/8_charts/0_charts.md +0 -0
  100. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/8_charts/bar.md +0 -0
  101. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/8_charts/bubble.md +0 -0
  102. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/8_charts/doughnut.md +0 -0
  103. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/8_charts/line.md +0 -0
  104. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/8_charts/pie.md +0 -0
  105. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/8_charts/polar_area.md +0 -0
  106. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/8_charts/radar.md +0 -0
  107. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/8_charts/scatter.md +0 -0
  108. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/content/ui/index.md +0 -0
  109. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/doc_parser.py +0 -0
  110. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/management/__init__.py +0 -0
  111. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/management/commands/__init__.py +0 -0
  112. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/management/commands/build_docs.py +0 -0
  113. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/seo_utils.py +0 -0
  114. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/css/highlight-custom.css +0 -0
  115. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/css/highlight.min.css +0 -0
  116. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/labb/favicon/android-chrome-192x192.png +0 -0
  117. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/labb/favicon/android-chrome-512x512.png +0 -0
  118. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/labb/favicon/apple-touch-icon.png +0 -0
  119. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/labb/favicon/favicon-16x16.png +0 -0
  120. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/labb/favicon/favicon-32x32.png +0 -0
  121. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/labb/favicon/favicon.ico +0 -0
  122. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/labb/favicon/favicon.svg +0 -0
  123. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/labb/favicon/site.webmanifest +0 -0
  124. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/labb/labb_welcome_kit.jpg +0 -0
  125. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/stock/avatar.png +0 -0
  126. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/stock/mecca.jpg +0 -0
  127. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/img/stock/shoe.jpg +0 -0
  128. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/js/common.js +0 -0
  129. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/static/lbdocs/js/highlight.min.js +0 -0
  130. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/icon_category_section.html +0 -0
  131. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/api_table.html +0 -0
  132. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/codeblock/index.html +0 -0
  133. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/codeblock/title.html +0 -0
  134. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/component_example/index.html +0 -0
  135. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/component_example/section/code.html +0 -0
  136. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/component_example/section/preview.html +0 -0
  137. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/component_example/style/code_only.html +0 -0
  138. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/component_example/style/inline.html +0 -0
  139. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/component_example/style/stacked.html +0 -0
  140. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/component_example/style/tab.html +0 -0
  141. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/doc_card/grid.html +0 -0
  142. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/icon/alpine.html +0 -0
  143. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/icon/browser.html +0 -0
  144. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/icon/category_section.html +0 -0
  145. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/icon/cotton.html +0 -0
  146. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/icon/daisy_ui.html +0 -0
  147. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/icon/django.html +0 -0
  148. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/icon/tailwind.html +0 -0
  149. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/indented_block.html +0 -0
  150. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/labbstart_info/index.html +0 -0
  151. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/layout/base.html +0 -0
  152. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/layout/docs/base.html +0 -0
  153. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/layout/docs/blog.html +0 -0
  154. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/layout/docs/blog_header.html +0 -0
  155. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/layout/docs/component.html +0 -0
  156. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/layout/docs/header.html +0 -0
  157. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/misc/copy_button.html +0 -0
  158. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/nav/footer.html +0 -0
  159. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/nav/page_navigator.html +0 -0
  160. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/seo/head.html +0 -0
  161. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/cotton/lbdocs/ui/logo.html +0 -0
  162. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templates/lbdocs/pages/docs.html +0 -0
  163. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/templatetags/__init__.py +0 -0
  164. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/urls.py +0 -0
  165. {labbdocs-0.4.0 → labbdocs-0.4.2}/labbdocs/views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: labbdocs
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Summary: Documentation for the labb project
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -19,8 +19,9 @@ doc_hide_drawer: true
19
19
  <c-lbdocs.doc_card
20
20
  title="{{ post.title }}"
21
21
  summary="{{ post.description }}"
22
- href="{{ post.url_path }}"
23
- icon="rmx.article"
22
+ href="{% if post.is_external %}{{ post.external_url }}{% else %}{{ post.url_path }}{% endif %}"
23
+ {% if post.is_external %}external="1"{% endif %}
24
+ icon="{{ post.card_icon }}"
24
25
  />
25
26
  {% endfor %}
26
27
  </c-lbdocs.doc_card.grid>
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: labb featured on BugBytes
3
+ description: "labb featured on BugBytes — django-cotton, Tailwind CSS, and daisyUI for Django."
4
+ published_time: 2026-05-10
5
+ modified_time: 2026-05-10
6
+ author: zadiq
7
+ doc_layout: blog
8
+ doc_show_toc: false
9
+ external_url: "https://www.youtube.com/watch?v=ZZd7cvbJ-1w"
10
+ card_icon: "rmx.youtube"
11
+ tags:
12
+ - external
13
+ - django
14
+ - community
15
+ - bugbytes
16
+ keywords: "labb django, BugBytes labb, django ui components, django-cotton, labb.io, Django component library"
17
+ ---
18
+
19
+ Check out the [BugBytes overview of labb](https://www.youtube.com/watch?v=ZZd7cvbJ-1w).
@@ -5,9 +5,14 @@
5
5
  variant=""
6
6
  icon=""
7
7
  class=""
8
+ external=""
8
9
  />
9
10
 
10
- <a href="{{ href }}" class="block no-underline hover:no-underline {{ class }} group">
11
+ <a
12
+ href="{{ href }}"
13
+ class="block no-underline hover:no-underline {{ class }} group"
14
+ {% if external %}target="_blank" rel="noopener noreferrer"{% endif %}
15
+ >
11
16
  <c-lb.card
12
17
  class="h-full transition-all duration-300 ease-out hover:shadow-2xl hover:shadow-primary/10 cursor-pointer border-2 border-base-300/50 hover:border-primary/70 bg-gradient-to-br from-base-100 to-base-200/30 hover:from-primary/5 hover:to-primary/10 backdrop-blur-sm overflow-hidden relative"
13
18
  variant="{{ variant }}"
@@ -0,0 +1,148 @@
1
+ {% load lb_tags %}
2
+ {% load static %}
3
+
4
+ <c-vars
5
+ topnavTitle
6
+ showDrawerToggle
7
+ :themeOptions="{
8
+ '__system__': 'System',
9
+ 'labb-light': 'Light',
10
+ 'labb-dark': 'Dark',
11
+ 'light': 'Daisy Light',
12
+ 'dark': 'Daisy Dark'
13
+ }"
14
+ />
15
+
16
+ {% labb_theme_val as theme %}
17
+
18
+ <div class="fixed top-0 inset-x-0 z-50 bg-base-100 py-1">
19
+ <div class="flex justify-center">
20
+ <c-labbio.section.press_callout/>
21
+ </div>
22
+
23
+ <c-lb.navbar>
24
+ <c-lb.navbar.start class="flex items-center gap-2 lg:w-full">
25
+ {% if showDrawerToggle %}
26
+ <c-lb.drawer.toggle for="docs-drawer" class="btn btn-ghost btn-sm btn-square lg:hidden">
27
+ <c-lbi.rmx.menu-4 w="1.75em" h="1.75em" />
28
+ </c-lb.drawer.toggle>
29
+ {% endif %}
30
+ <a class="text-2xl font-bold tracking-widest flex items-center" href="{% url 'index' %}">
31
+ <c-lbdocs.ui.logo height="26" />
32
+ </a>
33
+
34
+ {% comment %} Desktop menu {% endcomment %}
35
+ <c-lb.menu direction="horizontal" class="items-center gap-2 lg:flex hidden">
36
+ <c-lb.menu.item title="guide" href="{% url 'guide_docs' %}" />
37
+ <c-lb.menu.item title="ui" href="{% url 'ui_docs' %}" />
38
+ <c-lb.menu.item title="charts" href="{% doc_url '8_charts/0_charts.md' 'ui' %}" />
39
+ <c-lb.menu.item title="icons" href="{% url 'icons_docs' %}" />
40
+ <c-lb.menu.item title="blog" href="{% url 'blog_docs' %}" />
41
+ {% comment %}
42
+ <li>
43
+ <c-lb.dropdown alignment="start" size="sm">
44
+ <c-lb.dropdown.trigger class="flex items-center gap-1" style="cursor: pointer; text-decoration: none; color: inherit;">
45
+ community
46
+ </c-lb.dropdown.trigger>
47
+ <c-lb.dropdown.content class="bg-base-100 rounded-box w-52 shadow-md border border-base-200">
48
+ <c-lb.menu direction="vertical" class="w-full -pl-2">
49
+ <c-lb.menu.item class="pr-2" href="{% url 'blog_docs' %}" title="blog" />
50
+ <c-lb.menu.item class="pr-2" href="https://github.com/labbhq/labb" target="_blank" title="github" />
51
+ </c-lb.menu>
52
+ </c-lb.dropdown.content>
53
+ </c-lb.dropdown>
54
+ </li>
55
+ {% endcomment %}
56
+ </c-lb.menu>
57
+
58
+ </c-lb.navbar.start>
59
+
60
+ <c-lb.navbar.center>
61
+ {% comment %} Mobile menu {% endcomment %}
62
+ <c-lb.dropdown alignment="center" size="sm" class="lg:hidden">
63
+ <c-lb.dropdown.trigger class="btn btn-ghost text-base-content/50">
64
+ <span class="tracking-widest lg:hidden lowercase">{{topnavTitle|default:"Explore"}}</span>
65
+ <c-lbi.rmx.arrow-down-s w="1em" h="1em" />
66
+ </c-lb.dropdown.trigger>
67
+ <c-lb.dropdown.content class="bg-base-100 rounded-box w-52 shadow-md border border-base-200">
68
+ <c-lb.menu class="w-full">
69
+ <c-lb.menu.item title="guide" href="{% url 'guide_docs' %}" />
70
+ <c-lb.menu.item title="ui" href="{% url 'ui_docs' %}" />
71
+ <c-lb.menu.item title="charts" href="{% doc_url '8_charts/0_charts.md' 'ui' %}" />
72
+ <c-lb.menu.item title="icons" href="{% url 'icons_docs' %}" />
73
+ <c-lb.menu.item title="blog" href="{% url 'blog_docs' %}" />
74
+ {% comment %} <c-lb.menu.item type="submenu-details" title="community" open>
75
+ <c-lb.menu.item href="{% url 'blog_docs' %}" title="blog" />
76
+ <c-lb.menu.item href="https://github.com/labbhq/labb" target="_blank" title="github" />
77
+ </c-lb.menu.item> {% endcomment %}
78
+ </c-lb.menu>
79
+ </c-lb.dropdown.content>
80
+ </c-lb.dropdown>
81
+ </c-lb.navbar.center>
82
+
83
+ <c-lb.navbar.end class="flex items-center gap-2">
84
+ <c-lb.button size="sm" btnStyle="ghost" icon="rmx.search" onclick="search_modal.showModal()">
85
+ Search
86
+ </c-lb.button>
87
+ <c-lb.dropdown alignment="end" size="sm">
88
+ <c-lb.dropdown.trigger class="btn btn-sm btn-ghost btn-circle">
89
+ <c-lbi.rmx.sun w="1.25em" h="1.25em" />
90
+ </c-lb.dropdown.trigger>
91
+ <c-lb.dropdown.content class="bg-base-100 rounded-box w-52 shadow-md border border-base-200">
92
+ <c-lb.menu class="w-full">
93
+ {% for key, value in themeOptions.items %}
94
+ <input
95
+ type="radio"
96
+ name="doc-theme"
97
+ value="{{key}}"
98
+ class="theme-controller btn btn-ghost btn-sm justify-start"
99
+ aria-label="{{value}}"
100
+ {% if key == theme %}checked{% endif %}
101
+ />
102
+ {% endfor %}
103
+ </c-lb.menu>
104
+ </c-lb.dropdown.content>
105
+ </c-lb.dropdown>
106
+ <c-lb.button as="a" href="https://github.com/labbhq/labb" target="_blank" size="sm" btnStyle="ghost" modifier="circle" class="hidden lg:flex">
107
+ <c-lbi n="rmx.github" w="1.25em" h="1.25em" />
108
+ </c-lb.button>
109
+ </c-lb.navbar.end>
110
+ </c-lb.navbar>
111
+ </div>
112
+ <c-lb.modal id="search_modal" withBackdrop boxClass="border border-base-200 shadow">
113
+ <h3 class="text-lg font-bold">Search</h3>
114
+ <p class="py-4">Search features are coming soon!</p>
115
+ <c-lb.modal.action>
116
+ <form method="dialog">
117
+ <c-lb.button>Close</c-lb.button>
118
+ </form>
119
+ </c-lb.modal.action>
120
+ </c-lb.modal>
121
+
122
+ <script>
123
+ document.addEventListener('DOMContentLoaded', function() {
124
+ const currentTheme = "{{ theme }}";
125
+ const themeInputs = document.querySelectorAll('input[name="doc-theme"].theme-controller');
126
+
127
+ function updateActiveState() {
128
+ themeInputs.forEach(function(input) {
129
+ if (input.value === currentTheme) {
130
+ input.classList.add('btn-active');
131
+ } else {
132
+ input.classList.remove('btn-active');
133
+ }
134
+ });
135
+ }
136
+
137
+ updateActiveState();
138
+
139
+ themeInputs.forEach(function(input) {
140
+ input.addEventListener('change', function() {
141
+ themeInputs.forEach(function(btn) {
142
+ btn.classList.remove('btn-active');
143
+ });
144
+ this.classList.add('btn-active');
145
+ });
146
+ });
147
+ });
148
+ </script>
@@ -286,6 +286,9 @@ def get_blog_posts(context, doc_name="blog"):
286
286
  Get all blog posts sorted by published_time (most recent first).
287
287
  Excludes the index page and returns posts with their metadata.
288
288
 
289
+ Each post may include ``card_icon`` (from frontmatter, or inferred:
290
+ YouTube URL → rmx.youtube, other external → rmx.external-link, else rmx.article).
291
+
289
292
  Usage: {% get_blog_posts as posts %}
290
293
  """
291
294
  config = context.get("config", {})
@@ -307,6 +310,19 @@ def get_blog_posts(context, doc_name="blog"):
307
310
  "published_time"
308
311
  )
309
312
 
313
+ external_url = (frontmatter.get("external_url") or "").strip()
314
+
315
+ card_icon = (frontmatter.get("card_icon") or "").strip()
316
+ if not card_icon:
317
+ if external_url:
318
+ u = external_url.lower()
319
+ if "youtube.com" in u or "youtu.be" in u:
320
+ card_icon = "rmx.youtube"
321
+ else:
322
+ card_icon = "rmx.external-link"
323
+ else:
324
+ card_icon = "rmx.article"
325
+
310
326
  posts.append(
311
327
  {
312
328
  "url_path": url_path,
@@ -317,6 +333,9 @@ def get_blog_posts(context, doc_name="blog"):
317
333
  "modified_time": frontmatter.get("modified_time", ""),
318
334
  "tags": frontmatter.get("tags", []),
319
335
  "og_image": seo.get("og_image", ""),
336
+ "external_url": external_url,
337
+ "is_external": bool(external_url),
338
+ "card_icon": card_icon,
320
339
  }
321
340
  )
322
341
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "labbdocs"
3
- version = "0.4.0"
3
+ version = "0.4.2"
4
4
  description = "Documentation for the labb project"
5
5
  authors = [
6
6
  {name = "zadiq", email = "dev@zadiq.com"}
@@ -1,143 +0,0 @@
1
- {% load lb_tags %}
2
- {% load static %}
3
-
4
- <c-vars
5
- topnavTitle
6
- showDrawerToggle
7
- :themeOptions="{
8
- '__system__': 'System',
9
- 'labb-light': 'Light',
10
- 'labb-dark': 'Dark',
11
- 'light': 'Daisy Light',
12
- 'dark': 'Daisy Dark'
13
- }"
14
- />
15
-
16
- {% labb_theme_val as theme %}
17
-
18
- <c-lb.navbar class="fixed top-0 inset-x-0 z-50 bg-base-100 py-3">
19
- <c-lb.navbar.start class="flex items-center gap-2 lg:w-full">
20
- {% if showDrawerToggle %}
21
- <c-lb.drawer.toggle for="docs-drawer" class="btn btn-ghost btn-sm btn-square lg:hidden">
22
- <c-lbi.rmx.menu-4 w="1.75em" h="1.75em" />
23
- </c-lb.drawer.toggle>
24
- {% endif %}
25
- <a class="text-2xl font-bold tracking-widest flex items-center" href="{% url 'index' %}">
26
- <c-lbdocs.ui.logo height="26" />
27
- </a>
28
-
29
- {% comment %} Desktop menu {% endcomment %}
30
- <c-lb.menu direction="horizontal" class="items-center gap-2 lg:flex hidden">
31
- <c-lb.menu.item title="guide" href="{% url 'guide_docs' %}" />
32
- <c-lb.menu.item title="ui" href="{% url 'ui_docs' %}" />
33
- <c-lb.menu.item title="charts" href="{% doc_url '8_charts/0_charts.md' 'ui' %}" />
34
- <c-lb.menu.item title="icons" href="{% url 'icons_docs' %}" />
35
- <c-lb.menu.item title="blog" href="{% url 'blog_docs' %}" />
36
- {% comment %}
37
- <li>
38
- <c-lb.dropdown alignment="start" size="sm">
39
- <c-lb.dropdown.trigger class="flex items-center gap-1" style="cursor: pointer; text-decoration: none; color: inherit;">
40
- community
41
- </c-lb.dropdown.trigger>
42
- <c-lb.dropdown.content class="bg-base-100 rounded-box w-52 shadow-md border border-base-200">
43
- <c-lb.menu direction="vertical" class="w-full -pl-2">
44
- <c-lb.menu.item class="pr-2" href="{% url 'blog_docs' %}" title="blog" />
45
- <c-lb.menu.item class="pr-2" href="https://github.com/labbhq/labb" target="_blank" title="github" />
46
- </c-lb.menu>
47
- </c-lb.dropdown.content>
48
- </c-lb.dropdown>
49
- </li>
50
- {% endcomment %}
51
- </c-lb.menu>
52
-
53
- </c-lb.navbar.start>
54
-
55
- <c-lb.navbar.center>
56
- {% comment %} Mobile menu {% endcomment %}
57
- <c-lb.dropdown alignment="center" size="sm" class="lg:hidden">
58
- <c-lb.dropdown.trigger class="btn btn-ghost text-base-content/50">
59
- <span class="tracking-widest lg:hidden lowercase">{{topnavTitle|default:"Explore"}}</span>
60
- <c-lbi.rmx.arrow-down-s w="1em" h="1em" />
61
- </c-lb.dropdown.trigger>
62
- <c-lb.dropdown.content class="bg-base-100 rounded-box w-52 shadow-md border border-base-200">
63
- <c-lb.menu class="w-full">
64
- <c-lb.menu.item title="guide" href="{% url 'guide_docs' %}" />
65
- <c-lb.menu.item title="ui" href="{% url 'ui_docs' %}" />
66
- <c-lb.menu.item title="charts" href="{% doc_url '8_charts/0_charts.md' 'ui' %}" />
67
- <c-lb.menu.item title="icons" href="{% url 'icons_docs' %}" />
68
- <c-lb.menu.item title="blog" href="{% url 'blog_docs' %}" />
69
- {% comment %} <c-lb.menu.item type="submenu-details" title="community" open>
70
- <c-lb.menu.item href="{% url 'blog_docs' %}" title="blog" />
71
- <c-lb.menu.item href="https://github.com/labbhq/labb" target="_blank" title="github" />
72
- </c-lb.menu.item> {% endcomment %}
73
- </c-lb.menu>
74
- </c-lb.dropdown.content>
75
- </c-lb.dropdown>
76
- </c-lb.navbar.center>
77
-
78
- <c-lb.navbar.end class="flex items-center gap-2">
79
- <c-lb.button size="sm" btnStyle="ghost" icon="rmx.search" onclick="search_modal.showModal()">
80
- Search
81
- </c-lb.button>
82
- <c-lb.dropdown alignment="end" size="sm">
83
- <c-lb.dropdown.trigger class="btn btn-sm btn-ghost btn-circle">
84
- <c-lbi.rmx.sun w="1.25em" h="1.25em" />
85
- </c-lb.dropdown.trigger>
86
- <c-lb.dropdown.content class="bg-base-100 rounded-box w-52 shadow-md border border-base-200">
87
- <c-lb.menu class="w-full">
88
- {% for key, value in themeOptions.items %}
89
- <input
90
- type="radio"
91
- name="doc-theme"
92
- value="{{key}}"
93
- class="theme-controller btn btn-ghost btn-sm justify-start"
94
- aria-label="{{value}}"
95
- {% if key == theme %}checked{% endif %}
96
- />
97
- {% endfor %}
98
- </c-lb.menu>
99
- </c-lb.dropdown.content>
100
- </c-lb.dropdown>
101
- <c-lb.button as="a" href="https://github.com/labbhq/labb" target="_blank" size="sm" btnStyle="ghost" modifier="circle" class="hidden lg:flex">
102
- <c-lbi n="rmx.github" w="1.25em" h="1.25em" />
103
- </c-lb.button>
104
- </c-lb.navbar.end>
105
- </c-lb.navbar>
106
-
107
- <c-lb.modal id="search_modal" withBackdrop boxClass="border border-base-200 shadow">
108
- <h3 class="text-lg font-bold">Search</h3>
109
- <p class="py-4">Search features are coming soon!</p>
110
- <c-lb.modal.action>
111
- <form method="dialog">
112
- <c-lb.button>Close</c-lb.button>
113
- </form>
114
- </c-lb.modal.action>
115
- </c-lb.modal>
116
-
117
- <script>
118
- document.addEventListener('DOMContentLoaded', function() {
119
- const currentTheme = "{{ theme }}";
120
- const themeInputs = document.querySelectorAll('input[name="doc-theme"].theme-controller');
121
-
122
- function updateActiveState() {
123
- themeInputs.forEach(function(input) {
124
- if (input.value === currentTheme) {
125
- input.classList.add('btn-active');
126
- } else {
127
- input.classList.remove('btn-active');
128
- }
129
- });
130
- }
131
-
132
- updateActiveState();
133
-
134
- themeInputs.forEach(function(input) {
135
- input.addEventListener('change', function() {
136
- themeInputs.forEach(function(btn) {
137
- btn.classList.remove('btn-active');
138
- });
139
- this.classList.add('btn-active');
140
- });
141
- });
142
- });
143
- </script>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes