bootstack 0.1.0a10__tar.gz → 0.1.0a11__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 (478) hide show
  1. {bootstack-0.1.0a10/src/bootstack.egg-info → bootstack-0.1.0a11}/PKG-INFO +4 -4
  2. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/README.md +3 -3
  3. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/pyproject.toml +2 -2
  4. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/__init__.py +3 -2
  5. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/__init__.py +3 -13
  6. bootstack-0.1.0a11/src/bootstack/_core/exceptions.py +25 -0
  7. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_runtime/tk_patch.py +3 -3
  8. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_runtime/utility.py +3 -3
  9. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/appicon.py +2 -1
  10. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/demo.py +102 -88
  11. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/templates/__init__.py +13 -13
  12. bootstack-0.1.0a11/src/bootstack/clipboard.py +48 -0
  13. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/constants.py +1 -2
  14. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/dialogs/_impl/dialog.py +3 -3
  15. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/dialogs/_impl/message.py +5 -5
  16. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/errors.py +27 -0
  17. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/signals/signal.py +7 -20
  18. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/__init__.py +1 -1
  19. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/badge.py +6 -6
  20. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/button.py +10 -10
  21. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/buttongroup.py +8 -8
  22. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/calendar.py +9 -9
  23. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/checkbutton.py +3 -3
  24. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/combobox.py +3 -3
  25. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/contextmenu.py +11 -11
  26. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/entry.py +3 -3
  27. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/expander.py +9 -9
  28. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/field.py +13 -13
  29. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/frame.py +5 -5
  30. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/label.py +3 -3
  31. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/labelframe.py +4 -4
  32. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/listview.py +27 -27
  33. bootstack-0.1.0a11/src/bootstack/style/builders/menubar.py +91 -0
  34. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/menubutton.py +11 -11
  35. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/panedwindow.py +3 -3
  36. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/progressbar.py +6 -6
  37. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/radiobutton.py +3 -3
  38. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/scale.py +3 -3
  39. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/scrollbar.py +9 -9
  40. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/separator.py +3 -3
  41. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/sidenav.py +21 -21
  42. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/sizegrip.py +3 -3
  43. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/spinbox.py +3 -3
  44. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/switch.py +3 -3
  45. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/tabitem.py +11 -11
  46. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/togglegroup.py +8 -8
  47. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/toolbutton.py +8 -8
  48. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/tooltip.py +3 -3
  49. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/treeview.py +4 -4
  50. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders/utils.py +21 -21
  51. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders_tk/__init__.py +1 -1
  52. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/builders_tk/defaults.py +33 -33
  53. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/style.py +16 -16
  54. bootstack-0.1.0a10/src/bootstack/style/bootstyle_builder_base.py → bootstack-0.1.0a11/src/bootstack/style/style_builder_base.py +3 -3
  55. bootstack-0.1.0a10/src/bootstack/style/bootstyle_builder_mixed.py → bootstack-0.1.0a11/src/bootstack/style/style_builder_mixed.py +5 -5
  56. bootstack-0.1.0a10/src/bootstack/style/bootstyle_builder_tk.py → bootstack-0.1.0a11/src/bootstack/style/style_builder_tk.py +7 -7
  57. bootstack-0.1.0a10/src/bootstack/style/bootstyle_builder_ttk.py → bootstack-0.1.0a11/src/bootstack/style/style_builder_ttk.py +26 -26
  58. bootstack-0.1.0a10/src/bootstack/style/bootstyle.py → bootstack-0.1.0a11/src/bootstack/style/style_resolver.py +15 -97
  59. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/theme.py +62 -1
  60. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/theme_provider.py +1 -1
  61. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/types.py +2 -2
  62. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/__init__.py +1 -1
  63. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/base.py +0 -22
  64. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/field_mixin.py +1 -1
  65. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/navmodel.py +13 -9
  66. bootstack-0.1.0a11/src/bootstack/widgets/_core/window_menu.py +188 -0
  67. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/_internal/wrapper_base.py +14 -16
  68. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/_parts/numberentry_part.py +1 -1
  69. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/_parts/spinnerentry_part.py +2 -2
  70. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/_parts/textentry_part.py +2 -2
  71. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/buttongroup.py +3 -3
  72. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/carousel.py +9 -0
  73. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/contextmenu.py +3 -3
  74. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/dropdownbutton.py +3 -3
  75. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/field.py +2 -2
  76. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/gallery.py +9 -0
  77. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/list/listview.py +1 -1
  78. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/menu/render_themed.py +55 -47
  79. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/pagestack.py +16 -9
  80. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/radiogroup.py +4 -3
  81. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/shell/layout.py +21 -34
  82. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tableview/tableview.py +2 -2
  83. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tabs/tabs.py +10 -8
  84. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tabs/tabview.py +30 -14
  85. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/core.py +1 -1
  86. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/togglegroup.py +6 -5
  87. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/toolbar.py +196 -25
  88. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/mixins/font_mixin.py +1 -1
  89. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/mixins/icon_mixin.py +1 -1
  90. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/_menubutton.py +2 -2
  91. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/combobox.py +2 -2
  92. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/frame.py +0 -10
  93. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/optionmenu.py +6 -6
  94. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/app.py +0 -19
  95. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/appshell.py +8 -25
  96. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/carousel.py +10 -0
  97. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/gallery.py +6 -0
  98. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/label.py +5 -3
  99. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/pagestack.py +14 -1
  100. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/statusbar.py +18 -6
  101. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/tabs.py +26 -4
  102. bootstack-0.1.0a11/src/bootstack/widgets/theme_toggle.py +92 -0
  103. bootstack-0.1.0a11/src/bootstack/widgets/toolbar.py +280 -0
  104. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/types.py +2 -5
  105. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/window.py +0 -15
  106. {bootstack-0.1.0a10 → bootstack-0.1.0a11/src/bootstack.egg-info}/PKG-INFO +4 -4
  107. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack.egg-info/SOURCES.txt +9 -6
  108. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/tests/test_navmodel.py +6 -5
  109. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/tests/test_public_surface.py +6 -4
  110. bootstack-0.1.0a11/tests/test_theme_from_existing.py +64 -0
  111. bootstack-0.1.0a10/src/bootstack/_core/exceptions.py +0 -95
  112. bootstack-0.1.0a10/src/bootstack/style/builders/menubar.py +0 -74
  113. bootstack-0.1.0a10/src/bootstack/widgets/_core/window_menu.py +0 -299
  114. bootstack-0.1.0a10/src/bootstack/widgets/commandbar.py +0 -177
  115. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/LICENSE +0 -0
  116. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/MANIFEST.in +0 -0
  117. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/NOTICE +0 -0
  118. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/setup.cfg +0 -0
  119. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/__main__.py +0 -0
  120. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/__init__.py +0 -0
  121. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/after.py +0 -0
  122. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/bind.py +0 -0
  123. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/bindtags.py +0 -0
  124. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/busy.py +0 -0
  125. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/clipboard.py +0 -0
  126. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/focus.py +0 -0
  127. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/grab.py +0 -0
  128. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/grid.py +0 -0
  129. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/localization.py +0 -0
  130. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/pack.py +0 -0
  131. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/place.py +0 -0
  132. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/selection.py +0 -0
  133. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/signals.py +0 -0
  134. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/capabilities/winfo.py +0 -0
  135. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/colorutils.py +0 -0
  136. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/images.py +0 -0
  137. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/mixins/__init__.py +0 -0
  138. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/mixins/ttk_state.py +0 -0
  139. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/mixins/widget.py +0 -0
  140. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/paths.py +0 -0
  141. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/publisher.py +0 -0
  142. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_core/variables.py +0 -0
  143. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_runtime/__init__.py +0 -0
  144. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_runtime/app.py +0 -0
  145. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_runtime/base_window.py +0 -0
  146. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_runtime/events.py +0 -0
  147. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_runtime/shortcuts.py +0 -0
  148. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_runtime/toplevel.py +0 -0
  149. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_runtime/visual_focus.py +0 -0
  150. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/_runtime/window_utilities.py +0 -0
  151. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/__init__.py +0 -0
  152. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/bootstack.ico +0 -0
  153. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/bootstack.png +0 -0
  154. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/__init__.py +0 -0
  155. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/badge-pill.png +0 -0
  156. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/badge-square.png +0 -0
  157. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/button-compact.png +0 -0
  158. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/button-default.png +0 -0
  159. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-after-h-compact.png +0 -0
  160. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-after-h-default.png +0 -0
  161. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-after-v-compact.png +0 -0
  162. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-after-v-default.png +0 -0
  163. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-before-h-compact.png +0 -0
  164. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-before-h-default.png +0 -0
  165. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-before-v-compact.png +0 -0
  166. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-before-v-default.png +0 -0
  167. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-center-h-compact.png +0 -0
  168. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-center-h-default.png +0 -0
  169. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-center-v-compact.png +0 -0
  170. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/buttongroup-center-v-default.png +0 -0
  171. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/card.png +0 -0
  172. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/checkbox-checked.png +0 -0
  173. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/checkbox-indeterminate.png +0 -0
  174. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/checkbox-unchecked.png +0 -0
  175. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/field.png +0 -0
  176. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/input-addon-compact.png +0 -0
  177. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/input-addon-default.png +0 -0
  178. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/input-compact.png +0 -0
  179. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/input-default.png +0 -0
  180. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/list-item-separated.png +0 -0
  181. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/list-item.png +0 -0
  182. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/listrow-compact.png +0 -0
  183. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/listrow-default.png +0 -0
  184. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/manifest.toml +0 -0
  185. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/menu-item.png +0 -0
  186. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/navitem-compact.png +0 -0
  187. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/navitem-default.png +0 -0
  188. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/progressbar-h-compact.png +0 -0
  189. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/progressbar-h-default.png +0 -0
  190. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/progressbar-v-compact.png +0 -0
  191. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/progressbar-v-default.png +0 -0
  192. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/radiobutton.png +0 -0
  193. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/scrollbar-horizontal.png +0 -0
  194. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/scrollbar-vertical.png +0 -0
  195. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/slider-handle.png +0 -0
  196. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/slider-track-h.png +0 -0
  197. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/slider-track-v.png +0 -0
  198. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/switch-off.png +0 -0
  199. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/switch-on.png +0 -0
  200. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/tab-h.png +0 -0
  201. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/elements/tab-v.png +0 -0
  202. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/icons/bootstrap.ttf +0 -0
  203. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/icons/glyphmap.json +0 -0
  204. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/icons/icon_metrics.json +0 -0
  205. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.mo +0 -0
  206. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.po +0 -0
  207. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.mo +0 -0
  208. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.po +0 -0
  209. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.mo +0 -0
  210. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.po +0 -0
  211. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.mo +0 -0
  212. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.po +0 -0
  213. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.mo +0 -0
  214. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.po +0 -0
  215. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.mo +0 -0
  216. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.po +0 -0
  217. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.mo +0 -0
  218. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.po +0 -0
  219. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.mo +0 -0
  220. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.po +0 -0
  221. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.mo +0 -0
  222. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.po +0 -0
  223. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.mo +0 -0
  224. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.po +0 -0
  225. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.mo +0 -0
  226. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.po +0 -0
  227. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.mo +0 -0
  228. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.po +0 -0
  229. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.mo +0 -0
  230. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.po +0 -0
  231. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.mo +0 -0
  232. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.po +0 -0
  233. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.mo +0 -0
  234. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.po +0 -0
  235. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.mo +0 -0
  236. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.po +0 -0
  237. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.mo +0 -0
  238. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.po +0 -0
  239. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.mo +0 -0
  240. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.po +0 -0
  241. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.mo +0 -0
  242. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.po +0 -0
  243. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.mo +0 -0
  244. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.po +0 -0
  245. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.mo +0 -0
  246. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.po +0 -0
  247. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.mo +0 -0
  248. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.po +0 -0
  249. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.mo +0 -0
  250. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.po +0 -0
  251. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/__init__.py +0 -0
  252. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/__main__.py +0 -0
  253. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/add.py +0 -0
  254. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/build.py +0 -0
  255. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/config.py +0 -0
  256. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/doctor.py +0 -0
  257. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/icons.py +0 -0
  258. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/promote.py +0 -0
  259. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/pyinstaller.py +0 -0
  260. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/run.py +0 -0
  261. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/cli/start.py +0 -0
  262. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/data/README.md +0 -0
  263. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/data/__init__.py +0 -0
  264. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/data/_observable.py +0 -0
  265. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/data/base.py +0 -0
  266. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/data/file_source.py +0 -0
  267. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/data/memory_source.py +0 -0
  268. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/data/query.py +0 -0
  269. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/data/readers.py +0 -0
  270. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/data/sqlite_source.py +0 -0
  271. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/data/types.py +0 -0
  272. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/data/writers.py +0 -0
  273. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/dialogs/__init__.py +0 -0
  274. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/dialogs/_impl/__init__.py +0 -0
  275. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/dialogs/_impl/colorchooser.py +0 -0
  276. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/dialogs/_impl/colordropper.py +0 -0
  277. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/dialogs/_impl/datedialog.py +0 -0
  278. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/dialogs/_impl/filterdialog.py +0 -0
  279. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/dialogs/_impl/fontdialog.py +0 -0
  280. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/dialogs/_impl/formdialog.py +0 -0
  281. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/dialogs/_impl/query.py +0 -0
  282. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/events/__init__.py +0 -0
  283. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/events/_event.py +0 -0
  284. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/events/_payloads.py +0 -0
  285. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/events/_subscription.py +0 -0
  286. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/i18n/README.md +0 -0
  287. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/i18n/__init__.py +0 -0
  288. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/i18n/catalog.py +0 -0
  289. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/i18n/intl_format.py +0 -0
  290. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/i18n/msgcat.py +0 -0
  291. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/i18n/specs.py +0 -0
  292. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/images.py +0 -0
  293. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/py.typed +0 -0
  294. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/scheduling/__init__.py +0 -0
  295. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/scheduling/_schedule.py +0 -0
  296. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/shortcuts.py +0 -0
  297. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/signals/README.md +0 -0
  298. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/signals/__init__.py +0 -0
  299. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/signals/integration.py +0 -0
  300. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/signals/types.py +0 -0
  301. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/store.py +0 -0
  302. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/streams/__init__.py +0 -0
  303. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/streams/_stream.py +0 -0
  304. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/__init__.py +0 -0
  305. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/element.py +0 -0
  306. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/fonts.py +0 -0
  307. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/themes/__init__.py +0 -0
  308. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/tk_patch.py +0 -0
  309. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/token_maps.py +0 -0
  310. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/types.py +0 -0
  311. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/typography.py +0 -0
  312. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/style/utility.py +0 -0
  313. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/validation/__init__.py +0 -0
  314. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/validation/types.py +0 -0
  315. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/validation/validation_result.py +0 -0
  316. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/validation/validation_rules.py +0 -0
  317. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/__init__.py +0 -0
  318. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/app_config.py +0 -0
  319. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/container.py +0 -0
  320. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/context.py +0 -0
  321. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/events.py +0 -0
  322. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/icon_image_props.py +0 -0
  323. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/image_binding.py +0 -0
  324. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/options.py +0 -0
  325. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/selection_group.py +0 -0
  326. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_core/window_controls.py +0 -0
  327. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/__init__.py +0 -0
  328. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/_internal/__init__.py +0 -0
  329. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/_parts/__init__.py +0 -0
  330. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/__init__.py +0 -0
  331. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/_dateutils.py +0 -0
  332. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/_image_fit.py +0 -0
  333. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/accordion.py +0 -0
  334. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/avatar.py +0 -0
  335. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/calendar.py +0 -0
  336. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/compositeframe.py +0 -0
  337. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/dateentry.py +0 -0
  338. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/expander.py +0 -0
  339. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/floodgauge.py +0 -0
  340. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/form.py +0 -0
  341. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/list/__init__.py +0 -0
  342. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/list/listitem.py +0 -0
  343. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/menu/__init__.py +0 -0
  344. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/menu/model.py +0 -0
  345. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/menu/render_native.py +0 -0
  346. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/meter.py +0 -0
  347. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/numericentry.py +0 -0
  348. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/passwordentry.py +0 -0
  349. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/pathentry.py +0 -0
  350. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/picture.py +0 -0
  351. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/scrolledtext.py +0 -0
  352. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/scrolledtext.pyi +0 -0
  353. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/scrollview.py +0 -0
  354. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/selectbox.py +0 -0
  355. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/shell/__init__.py +0 -0
  356. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/shell/content_host.py +0 -0
  357. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/shell/nav_panel.py +0 -0
  358. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/shell/providers.py +0 -0
  359. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/shell/rail.py +0 -0
  360. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/shell/shell.py +0 -0
  361. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/shell/workspace.py +0 -0
  362. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/sidenav/__init__.py +0 -0
  363. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/sidenav/header.py +0 -0
  364. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/sidenav/separator.py +0 -0
  365. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/slider/__init__.py +0 -0
  366. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/slider/_shared.py +0 -0
  367. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/slider/rangeslider.py +0 -0
  368. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/slider/slider.py +0 -0
  369. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/spinnerentry.py +0 -0
  370. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tableview/__init__.py +0 -0
  371. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tableview/types.py +0 -0
  372. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tabs/__init__.py +0 -0
  373. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tabs/tabitem.py +0 -0
  374. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/__init__.py +0 -0
  375. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/change.py +0 -0
  376. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/codeeditor.py +0 -0
  377. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/decoration.py +0 -0
  378. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/diff.py +0 -0
  379. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/extensions/__init__.py +0 -0
  380. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/extensions/bracket_matcher.py +0 -0
  381. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/extensions/indent_guides.py +0 -0
  382. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/extensions/line_numbers.py +0 -0
  383. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/extensions/pygments_highlighter.py +0 -0
  384. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/extensions/smart_indent.py +0 -0
  385. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/filter.py +0 -0
  386. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/search_overlay.py +0 -0
  387. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/sidebar.py +0 -0
  388. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/style_registry.py +0 -0
  389. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/textarea.py +0 -0
  390. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textarea/undo.py +0 -0
  391. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/textentry.py +0 -0
  392. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/timeentry.py +0 -0
  393. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/toast.py +0 -0
  394. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/toast_stack.py +0 -0
  395. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tooltip.py +0 -0
  396. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tree/__init__.py +0 -0
  397. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tree/source_binding.py +0 -0
  398. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tree/treeitem.py +0 -0
  399. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tree/treenode.py +0 -0
  400. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/composites/tree/treeview.py +0 -0
  401. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/mixins/__init__.py +0 -0
  402. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/mixins/configure_mixin.py +0 -0
  403. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/mixins/entry_mixin.py +0 -0
  404. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/mixins/localization_mixin.py +0 -0
  405. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/mixins/signal_mixin.py +0 -0
  406. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/mixins/validation_mixin.py +0 -0
  407. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/__init__.py +0 -0
  408. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/badge.py +0 -0
  409. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/button.py +0 -0
  410. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/card.py +0 -0
  411. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/checkbutton.py +0 -0
  412. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/checktoggle.py +0 -0
  413. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/entry.py +0 -0
  414. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/gridframe.py +0 -0
  415. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/label.py +0 -0
  416. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/labelframe.py +0 -0
  417. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/packframe.py +0 -0
  418. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/panedwindow.py +0 -0
  419. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/progressbar.py +0 -0
  420. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/radiobutton.py +0 -0
  421. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/radiotoggle.py +0 -0
  422. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/scrollbar.py +0 -0
  423. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/separator.py +0 -0
  424. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/sizegrip.py +0 -0
  425. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/spinbox.py +0 -0
  426. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/switch.py +0 -0
  427. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/_impl/primitives/treeview.py +0 -0
  428. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/avatar.py +0 -0
  429. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/boolean_controls.py +0 -0
  430. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/button.py +0 -0
  431. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/buttongroup.py +0 -0
  432. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/calendar.py +0 -0
  433. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/card.py +0 -0
  434. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/codeeditor.py +0 -0
  435. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/contextmenu.py +0 -0
  436. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/datatable.py +0 -0
  437. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/datefield.py +0 -0
  438. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/expander.py +0 -0
  439. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/form.py +0 -0
  440. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/gauge.py +0 -0
  441. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/grid.py +0 -0
  442. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/groupbox.py +0 -0
  443. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/listview.py +0 -0
  444. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/menubutton.py +0 -0
  445. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/numberfield.py +0 -0
  446. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/passwordfield.py +0 -0
  447. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/pathfield.py +0 -0
  448. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/picture.py +0 -0
  449. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/progressbar.py +0 -0
  450. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/radio_variants.py +0 -0
  451. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/radiogroup.py +0 -0
  452. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/scrollbar.py +0 -0
  453. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/scrollview.py +0 -0
  454. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/select.py +0 -0
  455. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/selectbutton.py +0 -0
  456. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/separator.py +0 -0
  457. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/sizegrip.py +0 -0
  458. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/slider.py +0 -0
  459. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/spinbox.py +0 -0
  460. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/spinnerfield.py +0 -0
  461. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/splitview.py +0 -0
  462. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/stacks.py +0 -0
  463. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/textarea.py +0 -0
  464. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/textfield.py +0 -0
  465. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/timefield.py +0 -0
  466. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/toast.py +0 -0
  467. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/togglegroup.py +0 -0
  468. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/tooltip.py +0 -0
  469. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack/widgets/tree.py +0 -0
  470. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack.egg-info/dependency_links.txt +0 -0
  471. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack.egg-info/entry_points.txt +0 -0
  472. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack.egg-info/requires.txt +0 -0
  473. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/src/bootstack.egg-info/top_level.txt +0 -0
  474. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/tests/test_images.py +0 -0
  475. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/tests/test_images_gui.py +0 -0
  476. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/tests/test_intl_format.py +0 -0
  477. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/tests/test_store.py +0 -0
  478. {bootstack-0.1.0a10 → bootstack-0.1.0a11}/tests/test_validation_rules.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bootstack
3
- Version: 0.1.0a10
3
+ Version: 0.1.0a11
4
4
  Summary: From idea to a shipped desktop app, fast — a declarative, reactive, batteries-included Python UI framework with 60+ widgets, semantic theming, and built-in packaging.
5
5
  Author-email: Israel Dryer <israel.dryer@gmail.com>
6
6
  License-Expression: MIT
@@ -134,7 +134,7 @@ app.run()
134
134
  <img alt="bootstack quick start example" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-quickstart-light.png">
135
135
  </picture>
136
136
 
137
- For navigation-based apps, use `AppShell` — it gives you a command bar, sidebar, and page stack in one call:
137
+ For navigation-based apps, use `AppShell` — it gives you stacked toolbars, a sidebar, and a page stack in one call:
138
138
 
139
139
  ```python
140
140
  import bootstack as bs
@@ -225,13 +225,13 @@ app.run()
225
225
 
226
226
  | Category | Widgets |
227
227
  |----------|---------|
228
- | **Actions** | Button, ButtonGroup, MenuButton, ContextMenu, CommandBar |
228
+ | **Actions** | Button, ButtonGroup, MenuButton, ContextMenu, Toolbar |
229
229
  | **Inputs** | TextField, PasswordField, PathField, NumberField, SpinnerField, Slider, RangeSlider, TextArea, CodeEditor, DateField, TimeField |
230
230
  | **Selection** | Checkbox, Switch, ToggleButton, Radio, RadioGroup, ToggleGroup, Select, SelectButton, Calendar |
231
231
  | **Data Display** | Label, Badge, ListView, Tree, DataTable, ProgressBar, Gauge |
232
232
  | **Media** | Avatar, Picture, Gallery, Carousel |
233
233
  | **Layout** | VStack, HStack, Grid, Card, GroupBox, SplitView, ScrollView, Accordion, Separator |
234
- | **Navigation** | AppShell, CommandBar, SideNav, StatusBar, Tabs, PageStack |
234
+ | **Navigation** | AppShell, SideNav, StatusBar, Tabs, PageStack |
235
235
  | **Dialogs** | `alert()`, `confirm()`, `ask_*()` prompts, FormDialog, FontDialog, FilterDialog |
236
236
  | **Overlays** | `toast()`, Notification, Snackbar, Tooltip |
237
237
  | **Forms** | Form, with field-level validation |
@@ -89,7 +89,7 @@ app.run()
89
89
  <img alt="bootstack quick start example" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-quickstart-light.png">
90
90
  </picture>
91
91
 
92
- For navigation-based apps, use `AppShell` — it gives you a command bar, sidebar, and page stack in one call:
92
+ For navigation-based apps, use `AppShell` — it gives you stacked toolbars, a sidebar, and a page stack in one call:
93
93
 
94
94
  ```python
95
95
  import bootstack as bs
@@ -180,13 +180,13 @@ app.run()
180
180
 
181
181
  | Category | Widgets |
182
182
  |----------|---------|
183
- | **Actions** | Button, ButtonGroup, MenuButton, ContextMenu, CommandBar |
183
+ | **Actions** | Button, ButtonGroup, MenuButton, ContextMenu, Toolbar |
184
184
  | **Inputs** | TextField, PasswordField, PathField, NumberField, SpinnerField, Slider, RangeSlider, TextArea, CodeEditor, DateField, TimeField |
185
185
  | **Selection** | Checkbox, Switch, ToggleButton, Radio, RadioGroup, ToggleGroup, Select, SelectButton, Calendar |
186
186
  | **Data Display** | Label, Badge, ListView, Tree, DataTable, ProgressBar, Gauge |
187
187
  | **Media** | Avatar, Picture, Gallery, Carousel |
188
188
  | **Layout** | VStack, HStack, Grid, Card, GroupBox, SplitView, ScrollView, Accordion, Separator |
189
- | **Navigation** | AppShell, CommandBar, SideNav, StatusBar, Tabs, PageStack |
189
+ | **Navigation** | AppShell, SideNav, StatusBar, Tabs, PageStack |
190
190
  | **Dialogs** | `alert()`, `confirm()`, `ask_*()` prompts, FormDialog, FontDialog, FilterDialog |
191
191
  | **Overlays** | `toast()`, Notification, Snackbar, Tooltip |
192
192
  | **Forms** | Form, with field-level validation |
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "bootstack"
7
- version = "0.1.0a10"
7
+ version = "0.1.0a11"
8
8
  description = "From idea to a shipped desktop app, fast — a declarative, reactive, batteries-included Python UI framework with 60+ widgets, semantic theming, and built-in packaging."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -100,7 +100,7 @@ where = ["src"]
100
100
  ]
101
101
 
102
102
  [tool.bumpversion]
103
- current_version = "0.1.0a10"
103
+ current_version = "0.1.0a11"
104
104
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)((?P<pre>a|b|rc)(?P<pre_n>\\d+))?"
105
105
  serialize = [
106
106
  "{major}.{minor}.{patch}{pre}{pre_n}",
@@ -63,6 +63,7 @@ from bootstack.widgets.window import Window
63
63
  from bootstack.widgets.stacks import HStack, VStack
64
64
  from bootstack.widgets.grid import Grid
65
65
  from bootstack.widgets.boolean_controls import Checkbox, Switch, ToggleButton
66
+ from bootstack.widgets.theme_toggle import ThemeToggle
66
67
  from bootstack.widgets.button import Button
67
68
  from bootstack.widgets.card import Card
68
69
  from bootstack.widgets.buttongroup import ButtonGroup
@@ -101,7 +102,7 @@ from bootstack.widgets.tree import Tree, TreeNode
101
102
  from bootstack.widgets.textfield import TextField
102
103
  from bootstack.widgets.toast import toast, Notification, Snackbar, snackbar
103
104
  from bootstack.widgets.togglegroup import ToggleGroup
104
- from bootstack.widgets.commandbar import CommandBar
105
+ from bootstack.widgets.toolbar import Toolbar
105
106
  from bootstack.widgets.statusbar import StatusBar
106
107
  from bootstack.widgets.tooltip import Tooltip
107
108
 
@@ -131,7 +132,7 @@ __all__ = [
131
132
  "HStack", "VStack", "Grid", "Card", "GroupBox", "Separator", "ScrollView",
132
133
  "SplitView", "SplitPane", "Accordion", "AccordionSection",
133
134
  # Actions
134
- "Button", "ButtonGroup", "MenuButton", "CommandBar", "StatusBar",
135
+ "Button", "ButtonGroup", "ThemeToggle", "MenuButton", "Toolbar", "StatusBar",
135
136
  "ContextMenu", "ContextMenuItem",
136
137
  # Inputs
137
138
  "TextField", "PasswordField", "NumberField", "PathField", "SpinnerField",
@@ -4,14 +4,9 @@ from __future__ import annotations
4
4
 
5
5
  from . import colorutils, publisher, capabilities
6
6
  from bootstack._core.exceptions import (
7
- TTKBootstrapError,
8
- LayoutError,
9
7
  ThemeError,
10
- ConfigError,
11
- StateError,
12
8
  NavigationError,
13
- BootstyleBuilderError,
14
- BootstyleParsingError,
9
+ StyleBuilderError,
15
10
  ConfigurationWarning,
16
11
  )
17
12
 
@@ -19,13 +14,8 @@ __all__ = [
19
14
  "colorutils",
20
15
  "publisher",
21
16
  "capabilities",
22
- "TTKBootstrapError",
23
- "LayoutError",
24
17
  "ThemeError",
25
- "ConfigError",
26
- "StateError",
27
18
  "NavigationError",
28
- "BootstyleBuilderError",
29
- "BootstyleParsingError",
19
+ "StyleBuilderError",
30
20
  "ConfigurationWarning",
31
- ]
21
+ ]
@@ -0,0 +1,25 @@
1
+ from __future__ import annotations
2
+
3
+ # These are defined in the public `bootstack.errors` home and re-exported here
4
+ # for the internal call sites that import from `bootstack._core`.
5
+ from bootstack.errors import (
6
+ NavigationError,
7
+ StyleBuilderError,
8
+ ThemeError,
9
+ )
10
+
11
+
12
+ class ConfigurationWarning(Warning):
13
+ """Issued when a widget receives a deprecated or questionable configuration option.
14
+
15
+ Examples: supplying an unsupported value for a configuration key, or
16
+ passing mutually exclusive options.
17
+ """
18
+
19
+
20
+ __all__ = [
21
+ "ConfigurationWarning",
22
+ "NavigationError",
23
+ "StyleBuilderError",
24
+ "ThemeError",
25
+ ]
@@ -9,7 +9,7 @@ from __future__ import annotations
9
9
 
10
10
  import tkinter as tk
11
11
 
12
- from bootstack.style.bootstyle import Bootstyle
12
+ from bootstack.style.style_resolver import StyleResolver
13
13
 
14
14
  # Native Tk widget classes whose constructors get the autostyle wrapper.
15
15
  # Limited to the raw Tk widgets the framework actually instantiates or
@@ -26,7 +26,7 @@ _TK_WIDGETS = (
26
26
 
27
27
 
28
28
  def install_tk_autostyle() -> None:
29
- """Patch Tk widgets to enable autostyle via Bootstyle.
29
+ """Patch Tk widgets to enable autostyle via StyleResolver.
30
30
 
31
31
  - Wraps Tk widget `__init__` with surface color inheritance and theme
32
32
  background application using registered Tk builders.
@@ -36,7 +36,7 @@ def install_tk_autostyle() -> None:
36
36
  import bootstack.style.builders_tk # noqa: F401
37
37
 
38
38
  for widget in _TK_WIDGETS:
39
- _init = Bootstyle.override_tk_widget_constructor(widget.__init__)
39
+ _init = StyleResolver.override_tk_widget_constructor(widget.__init__)
40
40
  widget.__init__ = _init
41
41
 
42
42
 
@@ -283,11 +283,11 @@ def scale_size(widget=None, size=None):
283
283
  def _debug_enabled() -> bool:
284
284
  """Return True if debug logging is enabled.
285
285
 
286
- Controlled via the environment variable `TTKBOOTSTRAP_DEBUG`.
286
+ Controlled via the environment variable `BOOTSTACK_DEBUG`.
287
287
  Accepts: "1", "true", "yes" (case-insensitive) as truthy values.
288
288
  """
289
289
  import os
290
- return str(os.environ.get("TTKBOOTSTRAP_DEBUG", "")).lower() in {"1", "true", "yes"}
290
+ return str(os.environ.get("BOOTSTACK_DEBUG", "")).lower() in {"1", "true", "yes"}
291
291
 
292
292
 
293
293
  def debug_log_exception(message: str = "") -> None:
@@ -301,7 +301,7 @@ def debug_log_exception(message: str = "") -> None:
301
301
  try:
302
302
  import traceback
303
303
  if message:
304
- print(f"TTKBootstrap DEBUG: {message}")
304
+ print(f"bootstack DEBUG: {message}")
305
305
  traceback.print_exc()
306
306
  except Exception:
307
307
  # Never raise from debug logging
@@ -9,6 +9,7 @@ from __future__ import annotations
9
9
  import argparse
10
10
 
11
11
  from bootstack.widgets.types import IconSpec
12
+ from bootstack.clipboard import set_clipboard
12
13
 
13
14
 
14
15
  def add_parser(subparsers: argparse._SubParsersAction) -> None:
@@ -266,7 +267,7 @@ def run_appicon() -> None:
266
267
  f'foreground = "{fg_sig()}"\n'
267
268
  f"radius = {round(radius_sig(), 3)}\n"
268
269
  )
269
- app.set_clipboard(snippet)
270
+ set_clipboard(snippet)
270
271
  status_sig.set("Copied [build.icon] snippet to the clipboard.")
271
272
 
272
273
  _build_preview()
@@ -751,7 +751,7 @@ def _build_theme_page():
751
751
 
752
752
  with bs.HStack(gap=8):
753
753
  bs.Label("Quick:", width=10)
754
- bs.Button("Toggle Light / Dark", on_click=bs.toggle_theme)
754
+ bs.ThemeToggle()
755
755
 
756
756
  with bs.GroupBox("Accent Colors", fill="horizontal"):
757
757
  with bs.HStack(gap=4, fill="horizontal", fill_items="horizontal", expand_items=True):
@@ -807,20 +807,116 @@ def _build_media_page():
807
807
  bs.Picture(photos[1]["image"], width=180, height=120, fit="contain")
808
808
  bs.Picture(photos[2]["image"], width=120, height=120, fit="cover", corner_radius=60)
809
809
 
810
- with bs.GroupBox("Gallery", fill="both", expand=True):
811
- bs.Gallery(items=photos, image_field="image", caption_field="title",
812
- tile_size=(120, 120), fill="both", expand=True)
813
-
814
810
  with bs.GroupBox("Carousel", fill="horizontal"):
815
811
  bs.Carousel(items=photos, image_field="image", caption_field="title",
816
812
  fit="cover", fill="horizontal")
817
813
 
814
+ # Gallery last: it scrolls internally and swallows the wheel event, so
815
+ # keeping it at the bottom leaves the carousel/picture rows above it as
816
+ # places to grab and scroll the page itself.
817
+ with bs.GroupBox("Gallery", fill="both", expand=True):
818
+ bs.Gallery(items=photos, image_field="image", caption_field="title",
819
+ tile_size=(120, 120), fill="both", expand=True)
820
+
818
821
 
819
822
  # =============================================================================
820
823
  # Gallery app
821
824
  # =============================================================================
822
825
 
823
826
 
827
+ def build_gallery_shell(shell) -> None:
828
+ """Populate a Widget Gallery `AppShell` (toolbar, status bar, and pages).
829
+
830
+ Shared by `run_demo()` and the docs gallery screenshot so the captured
831
+ gallery always matches the live demo. Pages are lazy-built on first visit.
832
+ """
833
+ with shell.add_toolbar() as bar:
834
+ with bar.add_menu("File") as file_menu:
835
+ file_menu.add_action("Quit", shortcut="Mod+Q", on_click=shell.close)
836
+ with bar.add_menu("View") as view_menu:
837
+ view_menu.add_action("Toggle theme", on_click=bs.toggle_theme)
838
+ bar.add_spacer()
839
+ bar.add_theme_toggle()
840
+
841
+ shell.statusbar.add_text("Ready")
842
+ shell.statusbar.add_spacer()
843
+ shell.statusbar.add_text(f"bootstack v{bs.__version__}")
844
+
845
+ # Page registry: key → (page_frame, builder)
846
+ _pages: dict[str, tuple[object, object]] = {}
847
+
848
+ def _register(key, builder, *, text, icon, scrollable=False):
849
+ page = shell.add_page(key, text=text, icon=icon, scrollable=scrollable)
850
+ _pages[key] = (page, builder)
851
+
852
+ _register("home", _build_home_page, text="Home", icon="house")
853
+
854
+ shell.add_separator()
855
+ shell.add_header("Actions")
856
+ _register("buttons", _build_buttons_page, text="Buttons", icon="hand-index-thumb", scrollable=True)
857
+
858
+ shell.add_separator()
859
+ shell.add_header("Inputs")
860
+ _register("text-inputs", _build_text_inputs_page, text="Text Inputs", icon="input-cursor-text", scrollable=True)
861
+ _register("numeric", _build_numeric_page, text="Numeric & Date", icon="123", scrollable=True)
862
+ _register("forms", _build_forms_page, text="Forms", icon="journal-text", scrollable=True)
863
+ _register("code-editor", _build_code_editor_page, text="Code Editor", icon="code-slash", scrollable=True)
864
+
865
+ shell.add_separator()
866
+ shell.add_header("Selection")
867
+ _register("selection", _build_selection_page, text="Selection", icon="ui-checks", scrollable=True)
868
+ _register("calendar", _build_calendar_page, text="Calendar", icon="calendar3", scrollable=True)
869
+
870
+ shell.add_separator()
871
+ shell.add_header("Data Display")
872
+ _register("data", _build_data_page, text="Data Tables", icon="table", scrollable=True)
873
+ _register("progress", _build_progress_page, text="Progress", icon="speedometer2", scrollable=True)
874
+
875
+ shell.add_separator()
876
+ shell.add_header("Media")
877
+ _register("media", _build_media_page, text="Media", icon="images", scrollable=True)
878
+
879
+ shell.add_separator()
880
+ shell.add_header("Layout")
881
+ _register("layout", _build_layout_page, text="Containers", icon="layout-wtf", scrollable=True)
882
+ _register("navigation", _build_navigation_page, text="Navigation", icon="window-stack", scrollable=True)
883
+
884
+ shell.add_separator()
885
+ shell.add_header("Overlays & Dialogs")
886
+ _register("overlays", _build_overlays_page, text="Overlays", icon="layers", scrollable=True)
887
+ _register("dialogs", _build_dialogs_page, text="Dialogs", icon="chat-square-text", scrollable=True)
888
+
889
+ shell.add_separator()
890
+ shell.add_header("Design System")
891
+ _register("themes", _build_theme_page, text="Themes", icon="palette", scrollable=True)
892
+ _register("typography", _build_typography_page, text="Typography", icon="fonts", scrollable=True)
893
+ _register("icons", _build_icons_page, text="Icons", icon="grid-3x3-gap", scrollable=True)
894
+
895
+ # Lazy-build: construct page content only on first visit
896
+ _built: set[str] = set()
897
+
898
+ def _build_page(key: str) -> None:
899
+ if key in _built or key not in _pages:
900
+ return
901
+ page, builder = _pages[key]
902
+ with page:
903
+ builder()
904
+ _built.add(key)
905
+
906
+ # Build home page immediately; all others on first navigation
907
+ _build_page("home")
908
+
909
+ def _on_page_change(event) -> None:
910
+ # on_page_change delivers a PageChangeEvent (unpacked); .page is the
911
+ # key of the now-active page.
912
+ key = getattr(event, "page", None)
913
+ if key:
914
+ _build_page(key)
915
+
916
+ shell.on_page_change(_on_page_change)
917
+ shell.navigate("home")
918
+
919
+
824
920
  def run_demo():
825
921
  """Run the bootstack widget gallery as an AppShell application."""
826
922
  with bs.AppShell(
@@ -828,89 +924,7 @@ def run_demo():
828
924
  theme="bootstrap-light",
829
925
  size=(1100, 750),
830
926
  ) as shell:
831
-
832
- shell.commandbar.add_label("Widget Gallery")
833
- shell.commandbar.add_spacer()
834
- shell.commandbar.add_button(icon="circle-half", on_click=bs.toggle_theme)
835
-
836
- shell.statusbar.add_text("Ready")
837
- shell.statusbar.add_spacer()
838
- shell.statusbar.add_text(f"bootstack v{bs.__version__}")
839
-
840
- # Page registry: key → (page_frame, builder)
841
- _pages: dict[str, tuple[object, object]] = {}
842
-
843
- def _register(key, builder, *, text, icon, scrollable=False):
844
- page = shell.add_page(key, text=text, icon=icon, scrollable=scrollable)
845
- _pages[key] = (page, builder)
846
-
847
- _register("home", _build_home_page, text="Home", icon="house")
848
-
849
- shell.add_separator()
850
- shell.add_header("Actions")
851
- _register("buttons", _build_buttons_page, text="Buttons", icon="hand-index-thumb", scrollable=True)
852
-
853
- shell.add_separator()
854
- shell.add_header("Inputs")
855
- _register("text-inputs", _build_text_inputs_page, text="Text Inputs", icon="input-cursor-text", scrollable=True)
856
- _register("numeric", _build_numeric_page, text="Numeric & Date", icon="123", scrollable=True)
857
- _register("forms", _build_forms_page, text="Forms", icon="journal-text", scrollable=True)
858
- _register("code-editor", _build_code_editor_page, text="Code Editor", icon="code-slash", scrollable=True)
859
-
860
- shell.add_separator()
861
- shell.add_header("Selection")
862
- _register("selection", _build_selection_page, text="Selection", icon="ui-checks", scrollable=True)
863
- _register("calendar", _build_calendar_page, text="Calendar", icon="calendar3", scrollable=True)
864
-
865
- shell.add_separator()
866
- shell.add_header("Data Display")
867
- _register("data", _build_data_page, text="Data Tables", icon="table", scrollable=True)
868
- _register("progress", _build_progress_page, text="Progress", icon="speedometer2", scrollable=True)
869
-
870
- shell.add_separator()
871
- shell.add_header("Media")
872
- _register("media", _build_media_page, text="Media", icon="images", scrollable=True)
873
-
874
- shell.add_separator()
875
- shell.add_header("Layout")
876
- _register("layout", _build_layout_page, text="Containers", icon="layout-wtf", scrollable=True)
877
- _register("navigation", _build_navigation_page, text="Navigation", icon="window-stack", scrollable=True)
878
-
879
- shell.add_separator()
880
- shell.add_header("Overlays & Dialogs")
881
- _register("overlays", _build_overlays_page, text="Overlays", icon="layers", scrollable=True)
882
- _register("dialogs", _build_dialogs_page, text="Dialogs", icon="chat-square-text", scrollable=True)
883
-
884
- shell.add_separator()
885
- shell.add_header("Design System")
886
- _register("themes", _build_theme_page, text="Themes", icon="palette", scrollable=True)
887
- _register("typography", _build_typography_page, text="Typography", icon="fonts", scrollable=True)
888
- _register("icons", _build_icons_page, text="Icons", icon="grid-3x3-gap", scrollable=True)
889
-
890
- # Lazy-build: construct page content only on first visit
891
- _built: set[str] = set()
892
-
893
- def _build_page(key: str) -> None:
894
- if key in _built or key not in _pages:
895
- return
896
- page, builder = _pages[key]
897
- with page:
898
- builder()
899
- _built.add(key)
900
-
901
- # Build home page immediately; all others on first navigation
902
- _build_page("home")
903
-
904
- def _on_page_change(event) -> None:
905
- # on_page_change delivers a PageChangeEvent (unpacked); .page is the
906
- # key of the now-active page.
907
- key = getattr(event, "page", None)
908
- if key:
909
- _build_page(key)
910
-
911
- shell.on_page_change(_on_page_change)
912
- shell.navigate("home")
913
-
927
+ build_gallery_shell(shell)
914
928
  shell.run()
915
929
 
916
930
 
@@ -290,20 +290,20 @@ Application settings are defined in `bootstack.toml`:
290
290
  # =============================================================================
291
291
 
292
292
  def _appshell_chrome(app_name: str) -> str:
293
- """The shared menu bar, command bar, and status bar baseline for AppShell
293
+ """The shared toolbar (menus + commands) and status bar baseline for AppShell
294
294
  scaffolds. Delete what you do not need."""
295
295
  return f'''\
296
- # --- Menu bar -------------------------------------------------------
297
- with shell.menubar.add_menu("File") as file_menu:
298
- file_menu.add_action("Quit", shortcut="Mod+Q", on_click=shell.close)
299
- with shell.menubar.add_menu("Help") as help_menu:
300
- help_menu.add_action(
301
- "About",
302
- on_click=lambda: bs.alert("{app_name}", title="About"),
303
- )
304
-
305
- # --- Command bar ----------------------------------------------------
306
- shell.commandbar.add_button(icon="circle-half", on_click=bs.toggle_theme)
296
+ # --- Toolbar (menus + commands) -------------------------------------
297
+ with shell.add_toolbar() as bar:
298
+ with bar.add_menu("File") as file_menu:
299
+ file_menu.add_action("Quit", shortcut="Mod+Q", on_click=shell.close)
300
+ with bar.add_menu("Help") as help_menu:
301
+ help_menu.add_action(
302
+ "About",
303
+ on_click=lambda: bs.alert("{app_name}", title="About"),
304
+ )
305
+ bar.add_spacer()
306
+ bar.add_theme_toggle()
307
307
 
308
308
  # --- Status bar -----------------------------------------------------
309
309
  shell.statusbar.add_text("Ready")
@@ -536,7 +536,7 @@ class SettingsPage:
536
536
  with bs.GroupBox("Preferences", fill="both", expand=True):
537
537
  with bs.HStack(gap=8):
538
538
  bs.Label("Theme:")
539
- bs.Button("Toggle Light / Dark", on_click=bs.toggle_theme)
539
+ bs.ThemeToggle()
540
540
  '''
541
541
 
542
542
 
@@ -0,0 +1,48 @@
1
+ """System clipboard helpers.
2
+
3
+ The clipboard is global to the running application, so these are module-level
4
+ functions rather than per-widget methods. They operate on the current `App`'s
5
+ clipboard, so **an `App` must exist when they are called** (i.e. call them from
6
+ within your app's runtime, not at import time).
7
+
8
+ from bootstack.clipboard import get_clipboard, set_clipboard
9
+
10
+ set_clipboard("hello")
11
+ text = get_clipboard()
12
+
13
+ Platform note: on Linux/X11 the clipboard is owned by the running process, so its
14
+ contents are cleared when the `App` exits unless a system clipboard manager is
15
+ running. On Windows and macOS the operating system owns the clipboard, so contents
16
+ persist after the app closes.
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ from bootstack._runtime.app import get_current_app
22
+
23
+ __all__ = ["get_clipboard", "set_clipboard"]
24
+
25
+
26
+ def set_clipboard(text: str) -> None:
27
+ """Replace the system clipboard contents with `text`.
28
+
29
+ Args:
30
+ text: The text to place on the clipboard.
31
+
32
+ Raises:
33
+ RuntimeError: If called when no `App` is running.
34
+ """
35
+ get_current_app().clipboard_set(text)
36
+
37
+
38
+ def get_clipboard() -> str:
39
+ """Return the current text contents of the system clipboard.
40
+
41
+ Returns:
42
+ The clipboard text, or an empty string when the clipboard is empty,
43
+ holds non-text data, or no `App` is running.
44
+ """
45
+ try:
46
+ return get_current_app().clipboard_get()
47
+ except Exception:
48
+ return ""
@@ -32,7 +32,6 @@ from bootstack.widgets.types import (
32
32
  Sticky,
33
33
  AccentToken,
34
34
  SurfaceToken,
35
- VariantToken,
36
35
  WidgetDensity,
37
36
  WidgetState,
38
37
  )
@@ -276,7 +275,7 @@ INDETERMINATE: Final[ProgressMode] = 'indeterminate'
276
275
  __all__ = [
277
276
  # Re-exported type aliases (canonical source: bootstack.widgets.types)
278
277
  'Anchor', 'AccentToken', 'BorderMode', 'CompoundMode', 'Fill', 'Justify',
279
- 'Orient', 'Relief', 'Side', 'Sticky', 'SurfaceToken', 'VariantToken',
278
+ 'Orient', 'Relief', 'Side', 'Sticky', 'SurfaceToken',
280
279
  'WidgetDensity', 'WidgetState',
281
280
  # Literal types canonical to this module
282
281
  'ActiveStyle', 'Align', 'IndexPos', 'LineJoin', 'LineCap', 'MenuItemType',
@@ -15,7 +15,7 @@ from typing import Any, Callable, Iterable, Literal, Mapping, Optional, Tuple, T
15
15
  from bootstack.widgets._impl.primitives.button import Button as _Button
16
16
  from bootstack.widgets._impl.primitives.frame import Frame as _Frame
17
17
  from bootstack.widgets._impl.primitives.separator import Separator as _Separator
18
- from bootstack.widgets.types import Master, AccentToken, VariantToken, SurfaceToken, WindowStyle
18
+ from bootstack.widgets.types import Master, AccentToken, ButtonVariant, SurfaceToken, WindowStyle
19
19
  from bootstack._runtime.toplevel import Toplevel
20
20
  from bootstack._runtime.window_utilities import AnchorPoint, WindowPositioning
21
21
 
@@ -56,8 +56,8 @@ class DialogButton:
56
56
  accent: AccentToken | str | None = None
57
57
  """Accent token for styling (e.g. `'primary'`, `'danger'`)."""
58
58
 
59
- variant: VariantToken | str | None = None
60
- """Style variant (e.g. `'outline'`, `'link'`)."""
59
+ variant: ButtonVariant | str | None = None
60
+ """Button style variant `'default'`, `'solid'`, `'outline'`, or `'ghost'`."""
61
61
 
62
62
  icon: str | dict[str, Any] | None = None # passed straight to _Button(icon=...)
63
63
  """Optional icon specification for the button."""
@@ -49,14 +49,14 @@ class MessageDialog:
49
49
  Args:
50
50
  message: The message text to display. Supports multiline strings.
51
51
  title: The dialog window title.
52
- buttons: List of button labels. Can specify color as "label:color".
53
- If None, defaults to ["Cancel", "OK"]. Legacy "bootstyle" syntax
54
- is still supported (e.g., "OK:primary").
52
+ buttons: List of button labels. Can specify an accent as
53
+ "label:accent" (e.g., "OK:primary"). If None, defaults to
54
+ ["Cancel", "OK"].
55
55
  command: Optional callback function to execute when any button is pressed.
56
56
  width: Maximum width in characters for text wrapping.
57
57
  master: Parent widget for the dialog.
58
58
  alert: If True, rings the system bell when shown.
59
- default: The button label to use as default. Receives primary bootstyle and focus.
59
+ default: The button label to use as default. Receives the primary accent and focus.
60
60
  padding: Padding around the message content.
61
61
  icon: Optional icon specification. Can be a string (icon name) or dict with
62
62
  keys: 'name' (required), 'size' (default 32), 'color' (optional).
@@ -139,7 +139,7 @@ class MessageDialog:
139
139
  button_specs: List[DialogButton] = []
140
140
 
141
141
  for i, button in enumerate(button_labels):
142
- # Parse "text:bootstyle" format
142
+ # Parse "text:accent" format
143
143
  cnf = button.split(":")
144
144
  text = cnf[0]
145
145
 
@@ -31,10 +31,37 @@ class SerializationError(BootstackError):
31
31
  """
32
32
 
33
33
 
34
+ class NavigationError(BootstackError):
35
+ """Raised when a navigation operation references a wrong key.
36
+
37
+ Examples: adding a page, tab, or workspace whose key already exists, or
38
+ selecting, looking up, or removing one whose key does not exist.
39
+ """
40
+
41
+
42
+ class ThemeError(BootstackError):
43
+ """Raised when a theme-related operation fails.
44
+
45
+ Examples: requesting an unknown theme name, or loading a malformed theme
46
+ definition.
47
+ """
48
+
49
+
50
+ class StyleBuilderError(BootstackError):
51
+ """Raised when a widget style cannot be built.
52
+
53
+ Examples: an unsupported `variant` for a widget, or a missing required
54
+ theme color token.
55
+ """
56
+
57
+
34
58
  __all__ = [
35
59
  "BootstackError",
36
60
  "DuplicateIdError",
61
+ "NavigationError",
37
62
  "ParentResolutionError",
38
63
  "SerializationError",
64
+ "StyleBuilderError",
65
+ "ThemeError",
39
66
  "UnknownEventError",
40
67
  ]