openadmin-dev 0.7.20__tar.gz → 0.7.22__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 (152) hide show
  1. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/PKG-INFO +1 -1
  2. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/components/action.md +4 -4
  3. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/components/form.md +3 -3
  4. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/components/index.md +3 -3
  5. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/components/table.md +3 -3
  6. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/cookbook/implementing-form-with-reference.md +5 -5
  7. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/cookbook/implementing-table.md +3 -3
  8. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/authors.py +9 -6
  9. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/books.py +2 -2
  10. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/control_panel.py +3 -3
  11. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/lib/lifespan.py +7 -0
  12. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/main.py +1 -0
  13. openadmin_dev-0.7.22/openadmin/__client__/assets/Dashboard-DC0heEA9.js +1 -0
  14. openadmin_dev-0.7.20/openadmin/__client__/assets/FormView-DPqNEejF.js → openadmin_dev-0.7.22/openadmin/__client__/assets/FormView-B50K-7hw.js +2 -2
  15. openadmin_dev-0.7.22/openadmin/__client__/assets/Kbd-B-iXrtaS.js +1 -0
  16. openadmin_dev-0.7.20/openadmin/__client__/assets/LoginView-3isjvo_Q.js → openadmin_dev-0.7.22/openadmin/__client__/assets/LoginView-6w0mm9cn.js +1 -1
  17. openadmin_dev-0.7.22/openadmin/__client__/assets/PageView-lwaKn_q5.js +67 -0
  18. openadmin_dev-0.7.22/openadmin/__client__/assets/SelectValue-DOZVBj2o.js +1 -0
  19. openadmin_dev-0.7.20/openadmin/__client__/assets/field-BSJU6_no.js → openadmin_dev-0.7.22/openadmin/__client__/assets/field-DJNQppOg.js +1 -1
  20. openadmin_dev-0.7.22/openadmin/__client__/assets/index-C-H-Lt3A.js +2 -0
  21. openadmin_dev-0.7.22/openadmin/__client__/assets/index-DiaT67nK.css +1 -0
  22. openadmin_dev-0.7.22/openadmin/__client__/assets/openadmin-form-ycccrOMh.js +3 -0
  23. openadmin_dev-0.7.20/openadmin/__client__/assets/openadmin-spec-DMXwLYN0.js → openadmin_dev-0.7.22/openadmin/__client__/assets/openadmin-spec-BbpNYr6e.js +1 -1
  24. openadmin_dev-0.7.22/openadmin/__client__/assets/theme-CcRXhvWV.js +1 -0
  25. openadmin_dev-0.7.22/openadmin/__client__/assets/useForm-CV62cptb.js +1 -0
  26. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/index.html +3 -3
  27. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/fastapi/__init__.py +2 -3
  28. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/fastapi/admin_page.py +2 -2
  29. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/fastapi/admin_panel.py +4 -0
  30. openadmin_dev-0.7.22/openadmin/fastapi/refs.py +9 -0
  31. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/action.py +1 -0
  32. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/pyproject.toml +1 -1
  33. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/uv.lock +1 -1
  34. openadmin_dev-0.7.20/openadmin/__client__/assets/Dashboard-CH62YEWP.js +0 -1
  35. openadmin_dev-0.7.20/openadmin/__client__/assets/DialogPortal-sTp649jA.js +0 -1
  36. openadmin_dev-0.7.20/openadmin/__client__/assets/PageView-Dq8SJOqN.js +0 -67
  37. openadmin_dev-0.7.20/openadmin/__client__/assets/SelectValue-WzbxPrgA.js +0 -1
  38. openadmin_dev-0.7.20/openadmin/__client__/assets/index-B5AJQb5X.css +0 -2
  39. openadmin_dev-0.7.20/openadmin/__client__/assets/index-BOBko9Fy.js +0 -2
  40. openadmin_dev-0.7.20/openadmin/__client__/assets/openadmin-form-Dp1fg3ME.js +0 -3
  41. openadmin_dev-0.7.20/openadmin/__client__/assets/theme-CEh0Zsbj.js +0 -1
  42. openadmin_dev-0.7.20/openadmin/__client__/assets/useForm-DH6J4tEc.js +0 -1
  43. openadmin_dev-0.7.20/openadmin/fastapi/refs.py +0 -13
  44. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.claude/launch.json +0 -0
  45. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/ISSUE_TEMPLATE/bug.md +0 -0
  46. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/ISSUE_TEMPLATE/chore.md +0 -0
  47. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  48. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/actions/branch-name/action.yml +0 -0
  49. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/actions/dependency-cves/action.yml +0 -0
  50. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/actions/format/action.yml +0 -0
  51. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/actions/license/action.yml +0 -0
  52. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/actions/lint/action.yml +0 -0
  53. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/actions/security/action.yml +0 -0
  54. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/actions/spell-check/action.yml +0 -0
  55. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/actions/test/action.yml +0 -0
  56. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/actions/typecheck/action.yml +0 -0
  57. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/actions/unused-code/action.yml +0 -0
  58. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/workflows/ci.yml +0 -0
  59. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/workflows/docs.yml +0 -0
  60. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.github/workflows/publish.yml +0 -0
  61. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.gitignore +0 -0
  62. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/.python-version +0 -0
  63. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/LICENSE +0 -0
  64. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/LICENSES/AGPL-3.0-or-later.txt +0 -0
  65. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/Makefile +0 -0
  66. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/README.md +0 -0
  67. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/REUSE.toml +0 -0
  68. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/.gitignore +0 -0
  69. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/assets/dashboard-screenshot.png +0 -0
  70. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/assets/logo.png +0 -0
  71. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/bun.lock +0 -0
  72. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/config/.vitepress/config.mts +0 -0
  73. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/config/.vitepress/theme/index.ts +0 -0
  74. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/config/.vitepress/theme/style.css +0 -0
  75. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/auth/index.md +0 -0
  76. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/components/area-chart.md +0 -0
  77. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/components/bar-chart.md +0 -0
  78. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/components/line-chart.md +0 -0
  79. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/components/markdown.md +0 -0
  80. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/components/pie-chart.md +0 -0
  81. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/components/stat.md +0 -0
  82. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/cookbook/implementing-auth.md +0 -0
  83. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/index.md +0 -0
  84. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/introduction/getting-started.md +0 -0
  85. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/content/introduction/what-is-openadmin.md +0 -0
  86. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/docs/package.json +0 -0
  87. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/__init__.py +0 -0
  88. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/__init__.py +0 -0
  89. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/analytics.py +0 -0
  90. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/auth.py +0 -0
  91. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/docs.py +0 -0
  92. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/form_test.py +0 -0
  93. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/genres.py +0 -0
  94. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/health.py +0 -0
  95. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/overview.py +0 -0
  96. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/publishers.py +0 -0
  97. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/reports.py +0 -0
  98. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/tags.py +0 -0
  99. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/admin/weekdays.py +0 -0
  100. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/lib/__init__.py +0 -0
  101. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/lib/database.py +0 -0
  102. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/lib/models.py +0 -0
  103. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/examples/lib/seed.py +0 -0
  104. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/CardTitle-g-eR1YB7.js +0 -0
  105. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/HomeView-BY92UWl4.js +0 -0
  106. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/error-C_Ap5sRv.js +0 -0
  107. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-cyrillic-400-normal-DXusLSnH.woff2 +0 -0
  108. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-cyrillic-400-normal-DkrqoNl2.woff +0 -0
  109. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-cyrillic-ext-400-normal-ChfpGzr5.woff +0 -0
  110. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-latin-400-normal-B40WzpMT.woff2 +0 -0
  111. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-latin-400-normal-akEymXtG.woff +0 -0
  112. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-latin-ext-400-normal-Bz1pQMyt.woff +0 -0
  113. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-latin-ext-400-normal-CND6cjiG.woff2 +0 -0
  114. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-mono-cyrillic-400-normal-C51Di1Mf.woff2 +0 -0
  115. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-mono-cyrillic-400-normal-CPJFfJgk.woff +0 -0
  116. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-mono-latin-400-normal-B2yvC1Cq.woff +0 -0
  117. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-mono-latin-400-normal-DTRLJnHl.woff2 +0 -0
  118. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-mono-latin-ext-400-normal-CfzLURNc.woff +0 -0
  119. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-mono-latin-ext-400-normal-DI-rJ0UV.woff2 +0 -0
  120. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-mono-symbols2-400-normal-DjbiTEEA.woff +0 -0
  121. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-mono-vietnamese-400-normal-CZEPLOgu.woff +0 -0
  122. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/geist-vietnamese-400-normal-C8xY9-dI.woff +0 -0
  123. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/logo-D9vyMJZl.png +0 -0
  124. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/rolldown-runtime-DK3Fl9T5.js +0 -0
  125. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/assets/runtime-core.esm-bundler-B4b-2GOK.js +0 -0
  126. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/favicon.svg +0 -0
  127. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/__client__/icons.svg +0 -0
  128. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/fastapi/admin_auth.py +0 -0
  129. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/fastapi/counter.py +0 -0
  130. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/fastapi/deps.py +0 -0
  131. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/fastapi/exc_handler.py +0 -0
  132. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/fastapi/req.py +0 -0
  133. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/fastapi/utils.py +0 -0
  134. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/__init__.py +0 -0
  135. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/area_chart.py +0 -0
  136. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/bar_chart.py +0 -0
  137. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/colors.py +0 -0
  138. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/component.py +0 -0
  139. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/error.py +0 -0
  140. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/form.py +0 -0
  141. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/http_methods.py +0 -0
  142. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/icons.py +0 -0
  143. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/json_schema.py +0 -0
  144. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/line_chart.py +0 -0
  145. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/markdown.py +0 -0
  146. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/page.py +0 -0
  147. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/pie_chart.py +0 -0
  148. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/section.py +0 -0
  149. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/spec.py +0 -0
  150. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/stat.py +0 -0
  151. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/openadmin/spec/table.py +0 -0
  152. {openadmin_dev-0.7.20 → openadmin_dev-0.7.22}/tests/test_hello.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: openadmin-dev
3
- Version: 0.7.20
3
+ Version: 0.7.22
4
4
  Summary: Add your description here
5
5
  Project-URL: Homepage, https://github.com/openadmin-team/openadmin-py
6
6
  Project-URL: Issues, https://github.com/openadmin-team/openadmin-py/issues
@@ -69,10 +69,10 @@ async def rotate_api_key(
69
69
 
70
70
  ## Attaching an action to a table row
71
71
 
72
- Give an action `is_hidden=True` when its only purpose is to be triggered from a row, then reference it from that row's `__actions__` with `reference_action`:
72
+ Give an action `is_hidden=True` when its only purpose is to be triggered from a row, then reference it from that row's `__actions__` with `reference`:
73
73
 
74
74
  ```python
75
- from openadmin.fastapi import reference_action
75
+ from openadmin.fastapi import reference
76
76
 
77
77
  @page.action("Delete Author", is_hidden=True)
78
78
  async def delete_author(id: str) -> spec.Action:
@@ -90,7 +90,7 @@ async def get_all_authors(...) -> spec.Table:
90
90
  "__actions__": [
91
91
  {
92
92
  "label": "Delete this user",
93
- "action": reference_action(delete_author),
93
+ "action": reference(delete_author),
94
94
  "query": {"id": author.id},
95
95
  "color": "red",
96
96
  "icon": "trash",
@@ -102,4 +102,4 @@ async def get_all_authors(...) -> spec.Table:
102
102
  }
103
103
  ```
104
104
 
105
- `reference_action` reads the ID that the `@page.action(...)` decorator stamped onto `delete_author`, so `delete_author` must already be decorated before it's referenced this way — a plain top-to-bottom ordering requirement, not special behavior. See [Implementing a Table](/cookbook/implementing-table) for the full recipe.
105
+ `reference` reads the ID that the `@page.action(...)` decorator stamped onto `delete_author`, so `delete_author` must already be decorated before it's referenced this way — a plain top-to-bottom ordering requirement, not special behavior. See [Implementing a Table](/cookbook/implementing-table) for the full recipe.
@@ -78,14 +78,14 @@ class FieldConfig(TypedDict):
78
78
  ```
79
79
 
80
80
  ```python
81
- from openadmin.fastapi import reference_table
81
+ from openadmin.fastapi import reference
82
82
 
83
83
 
84
84
  @page.form(
85
85
  "Add Author",
86
86
  fields={
87
87
  "friend": {
88
- "reference": reference_table(get_all_authors),
88
+ "reference": reference(get_all_authors),
89
89
  "reference_field": "id",
90
90
  "icon": "user",
91
91
  "color": "blue",
@@ -95,7 +95,7 @@ from openadmin.fastapi import reference_table
95
95
  async def add_author(body: AddAuthorBody, session: AsyncSessionDep) -> spec.Form: ...
96
96
  ```
97
97
 
98
- `reference` is the ID of a table (obtained with `reference_table`, so `get_all_authors` must already be decorated with `@page.table(...)`); `reference_field` is the column of that table's rows to submit as the field's value. See [Implementing a Form with a Reference](/cookbook/implementing-form-with-reference) for the full walkthrough.
98
+ `reference` is the ID of a table (obtained with `reference`, so `get_all_authors` must already be decorated with `@page.table(...)`); `reference_field` is the column of that table's rows to submit as the field's value. See [Implementing a Form with a Reference](/cookbook/implementing-form-with-reference) for the full walkthrough.
99
99
 
100
100
  ## Other HTTP methods
101
101
 
@@ -29,10 +29,10 @@ A few things apply to every component, not just one:
29
29
  Two helpers let one component point at another by its generated ID, instead of hardcoding route paths:
30
30
 
31
31
  ```python
32
- from openadmin.fastapi import reference_action, reference_table
32
+ from openadmin.fastapi import reference, reference
33
33
  ```
34
34
 
35
- - `reference_table(table_func)` — returns the ID of a `@page.table(...)`-decorated function. Used in a form field's `reference` to source a value picker from that table's rows.
36
- - `reference_action(action_func)` — returns the ID of a `@page.action(...)`-decorated function. Used in a table row's `__actions__` to attach that action as a row button.
35
+ - `reference(table_func)` — returns the ID of a `@page.table(...)`-decorated function. Used in a form field's `reference` to source a value picker from that table's rows.
36
+ - `reference(action_func)` — returns the ID of a `@page.action(...)`-decorated function. Used in a table row's `__actions__` to attach that action as a row button.
37
37
 
38
38
  Both simply read an attribute (`__openadmin_table_id__` / `__openadmin_action_id__`) that the decorator stamped onto the function, so the referenced function must already be decorated — but not necessarily called — before you reference it.
@@ -117,15 +117,15 @@ return {"data": [...], "total": total_count}
117
117
  A row dict can include three special keys alongside your own columns:
118
118
 
119
119
  - **`__view__`** — a compact label used to represent the whole row elsewhere (for example, when the row is offered as an option in a form's reference picker — see [Implementing a Form with a Reference](/cookbook/implementing-form-with-reference)).
120
- - **`__actions__`** — a list of buttons attached to that row. Each entry references an action registered elsewhere on the page via `reference_action`:
120
+ - **`__actions__`** — a list of buttons attached to that row. Each entry references an action registered elsewhere on the page via `reference`:
121
121
 
122
122
  ```python
123
- from openadmin.fastapi import reference_action
123
+ from openadmin.fastapi import reference
124
124
 
125
125
  "__actions__": [
126
126
  {
127
127
  "label": "Delete this user",
128
- "action": reference_action(delete_author),
128
+ "action": reference(delete_author),
129
129
  "query": {"id": author.id},
130
130
  "color": "red",
131
131
  "icon": "trash",
@@ -46,7 +46,7 @@ class AddBookBody(BaseModel):
46
46
  ## 3. Point the field at the table
47
47
 
48
48
  ```python
49
- from openadmin.fastapi import AdminPage, reference_table
49
+ from openadmin.fastapi import AdminPage, reference
50
50
 
51
51
  from .authors import get_all_authors
52
52
 
@@ -57,7 +57,7 @@ page = AdminPage("Books", icon="book")
57
57
  "Add Book",
58
58
  fields={
59
59
  "author_id": {
60
- "reference": reference_table(get_all_authors),
60
+ "reference": reference(get_all_authors),
61
61
  "reference_field": "id",
62
62
  "icon": "user-pen",
63
63
  "color": "violet",
@@ -72,10 +72,10 @@ async def add_book(body: AddBookBody, session: AsyncSessionDep) -> spec.Form:
72
72
  return {"message": f"Added book '{book.title}'"}
73
73
  ```
74
74
 
75
- - **`reference`** is the referenced table's generated ID, obtained with `reference_table(get_all_authors)` — pass the function itself, not a string, so a rename of the table doesn't silently break the link.
75
+ - **`reference`** is the referenced table's generated ID, obtained with `reference(get_all_authors)` — pass the function itself, not a string, so a rename of the table doesn't silently break the link.
76
76
  - **`reference_field`** is the column of the referenced table's rows to actually submit as `author_id`'s value. The picker shows each row's `__view__` label, but writes `row[reference_field]` when one is chosen — here, the author's `id`.
77
77
 
78
- Because `reference_table` reads an attribute the `@page.table(...)` decorator stamps directly onto `get_all_authors`, that function must already be decorated by the time `add_book` is defined — in practice, just make sure the module defining the table is imported before the module defining the form runs, as in the example above.
78
+ Because `reference` reads an attribute the `@page.table(...)` decorator stamps directly onto `get_all_authors`, that function must already be decorated by the time `add_book` is defined — in practice, just make sure the module defining the table is imported before the module defining the form runs, as in the example above.
79
79
 
80
80
  ## 4. Cross-page references
81
81
 
@@ -83,4 +83,4 @@ The referenced table doesn't have to live on the same `AdminPage` as the form
83
83
 
84
84
  ## Referencing an action instead of a table
85
85
 
86
- The equivalent helper for attaching an action to a table row is `reference_action`, covered in [Implementing a Table](/cookbook/implementing-table). Both helpers work the same way — they read an ID the decorator stamped onto an already-decorated function.
86
+ The equivalent helper for attaching an action to a table row is `reference`, covered in [Implementing a Table](/cookbook/implementing-table). Both helpers work the same way — they read an ID the decorator stamped onto an already-decorated function.
@@ -11,7 +11,7 @@ A step-by-step recipe for a searchable, paginated table with styled columns and
11
11
  ```python
12
12
  # admin/users.py
13
13
  from openadmin import spec
14
- from openadmin.fastapi import AdminPage, reference_action
14
+ from openadmin.fastapi import AdminPage, reference
15
15
  from openadmin.fastapi.deps import PageDep, SearchDep
16
16
 
17
17
  page = AdminPage("Users", icon="users")
@@ -99,7 +99,7 @@ async def get_all_users(...) -> spec.Table:
99
99
  "__actions__": [
100
100
  {
101
101
  "label": "Delete",
102
- "action": reference_action(delete_user),
102
+ "action": reference(delete_user),
103
103
  "query": {"user_id": u.id},
104
104
  "icon": "trash",
105
105
  "color": "red",
@@ -112,7 +112,7 @@ async def get_all_users(...) -> spec.Table:
112
112
  }
113
113
  ```
114
114
 
115
- `reference_action` reads the ID that `@page.action(...)` stamped onto `delete_user`, so `delete_user` needs to be defined (decorated) above `get_all_users` in the file, or at least imported before this function runs — plain Python name resolution, nothing OpenAdmin-specific.
115
+ `reference` reads the ID that `@page.action(...)` stamped onto `delete_user`, so `delete_user` needs to be defined (decorated) above `get_all_users` in the file, or at least imported before this function runs — plain Python name resolution, nothing OpenAdmin-specific.
116
116
 
117
117
  The action's own `query`/`body`/`form` schema (inferred from `Query(...)` on `user_id`) still applies — the `query` dict in `__actions__` is what actually gets sent as that action's parameters when the row's button is clicked.
118
118
 
@@ -6,7 +6,7 @@ from pydantic import BaseModel
6
6
  from sqlalchemy import func, select
7
7
 
8
8
  from openadmin import spec
9
- from openadmin.fastapi import AdminPage, reference_action, reference_table
9
+ from openadmin.fastapi import AdminPage, reference
10
10
  from openadmin.fastapi.deps import PageDep, SearchDep
11
11
 
12
12
  from ..lib import models
@@ -43,7 +43,10 @@ async def get_authors_with_bio(session: AsyncSessionDep):
43
43
  is_hidden=True,
44
44
  )
45
45
  async def delete_author(id: str) -> spec.Action:
46
- return {"toast": f"User with id {id} deleted"}
46
+ return {
47
+ "toast": f"User with id {id} deleted and id is saved into clipboard",
48
+ "clipboard": id,
49
+ }
47
50
 
48
51
 
49
52
  @page.stat(
@@ -104,7 +107,7 @@ async def get_all_authors(
104
107
  "__actions__": [
105
108
  {
106
109
  "label": "Delete this user",
107
- "action": reference_action(delete_author),
110
+ "action": reference(delete_author),
108
111
  "query": {
109
112
  "id": author.id,
110
113
  },
@@ -113,7 +116,7 @@ async def get_all_authors(
113
116
  },
114
117
  {
115
118
  "label": "Bun this user",
116
- "action": reference_action(delete_author),
119
+ "action": reference(delete_author),
117
120
  "query": {
118
121
  "id": author.id,
119
122
  },
@@ -122,7 +125,7 @@ async def get_all_authors(
122
125
  },
123
126
  {
124
127
  "label": "Unban this user",
125
- "action": reference_action(delete_author),
128
+ "action": reference(delete_author),
126
129
  "query": {
127
130
  "id": author.id,
128
131
  },
@@ -167,7 +170,7 @@ class AddAuthorBody(BaseModel):
167
170
  description="Register a new author in the catalog",
168
171
  fields={
169
172
  "friend": {
170
- "reference": reference_table(get_all_authors),
173
+ "reference": reference(get_all_authors),
171
174
  "icon": "user",
172
175
  "color": "blue",
173
176
  "reference_field": "id",
@@ -10,7 +10,7 @@ from pydantic import BaseModel
10
10
  from sqlalchemy import func, select
11
11
 
12
12
  from openadmin import spec
13
- from openadmin.fastapi import AdminPage, reference_action
13
+ from openadmin.fastapi import AdminPage, reference
14
14
  from openadmin.fastapi.deps import PageDep, SearchDep
15
15
 
16
16
  from ..lib import models
@@ -121,7 +121,7 @@ async def get_all_books(
121
121
  "attachment": {"label": "Book in pdf"},
122
122
  },
123
123
  "__actions__": [
124
- {"action": reference_action(upload_cover), "form": {"id": book.id}}
124
+ {"action": reference(upload_cover), "form": {"id": book.id}}
125
125
  ],
126
126
  }
127
127
  for book, author in result.all()
@@ -11,7 +11,7 @@ from fastapi import Body, Depends, Form, Query
11
11
  from pydantic import BaseModel
12
12
 
13
13
  from openadmin import spec
14
- from openadmin.fastapi import AdminPage, reference_action
14
+ from openadmin.fastapi import AdminPage, reference
15
15
  from openadmin.fastapi.deps import PageDep, SearchDep
16
16
 
17
17
  page = AdminPage(
@@ -393,7 +393,7 @@ async def get_feature_flags(search: SearchDep, pagination: PageDep) -> spec.Tabl
393
393
  "__actions__": [
394
394
  {
395
395
  "label": "Disable",
396
- "action": reference_action(disable_feature_flag),
396
+ "action": reference(disable_feature_flag),
397
397
  "query": {"name": flag["name"]},
398
398
  "icon": "toggle-left",
399
399
  "color": "red",
@@ -401,7 +401,7 @@ async def get_feature_flags(search: SearchDep, pagination: PageDep) -> spec.Tabl
401
401
  if flag["enabled"]
402
402
  else {
403
403
  "label": "Enable",
404
- "action": reference_action(enable_feature_flag),
404
+ "action": reference(enable_feature_flag),
405
405
  "query": {"name": flag["name"]},
406
406
  "icon": "toggle-right",
407
407
  "color": "green",
@@ -13,3 +13,10 @@ from . import database
13
13
  async def lifespan(_: FastAPI):
14
14
  async with database.lifespan():
15
15
  yield
16
+
17
+
18
+ @asynccontextmanager
19
+ async def admin_panel_lifespan(_: FastAPI):
20
+ print("Admin Sturtup")
21
+ yield
22
+ print("Admin Shutdown")
@@ -42,6 +42,7 @@ admin_panel = AdminPanel(
42
42
  "Book Library Admin",
43
43
  description="Manage and explore the book catalog",
44
44
  auth=auth.auth,
45
+ lifespan=lifespan.admin_panel_lifespan,
45
46
  )
46
47
 
47
48
  admin_panel.section(
@@ -0,0 +1 @@
1
+ import{$n as e,D as t,E as n,Ht as r,On as i,St as a,Tn as o,Ut as s,Zn as c,_ as l,b as u,bt as d,ct as f,er as p,et as m,ft as h,g,gn as _,jt as v,k as y,mt as b,o as x,qt as S,tr as C,un as ee,v as w,vn as T,wt as E,xt as D,y as O,z as k}from"./runtime-core.esm-bundler-B4b-2GOK.js";import{Hc as te,Vc as A,Wc as j,eu as ne}from"./error-C_Ap5sRv.js";import{F as M,I as re,M as ie,N as ae,O as N,S as oe,_ as se,h as P,i as F,k as ce,l as le,o as I,p as ue,r as L,v as de,x as fe}from"./useForm-CV62cptb.js";import{c as pe,l as R,t as me}from"./openadmin-spec-BbpNYr6e.js";import{B as z,C as he,F as ge,G as _e,H as B,L as ve,U as V,X as ye,a as H,c as be,d as xe,f as Se,i as U,it as Ce,l as we,m as Te,n as Ee,p as De,r as Oe,s as ke,t as Ae,tt as W,u as je,x as Me}from"./openadmin-form-ycccrOMh.js";import{t as Ne}from"./index-C-H-Lt3A.js";import{a as Pe,c as Fe,i as Ie,l as Le,o as Re,r as ze,s as Be,t as Ve,u as He}from"./Kbd-B-iXrtaS.js";import{i as Ue,n as We,t as Ge}from"./theme-CcRXhvWV.js";var Ke=R(`command`,[[`path`,{d:`M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3`,key:`11bfej`}]]),qe=R(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),Je=R(`panel-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]]),Ye=R(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),Xe=R(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]);function Ze(e,t){let n=ce(!1,300);ie(()=>{n.value=!1});let r=T(null),i=oe();function a(){r.value=null,n.value=!1}function o(e,t){if(!t)return;let i=e.currentTarget,a={x:e.clientX,y:e.clientY},o=$e(a,Qe(a,i.getBoundingClientRect()),1),s=et(t.getBoundingClientRect()),c=nt([...o,...s]);r.value=c,n.value=!0}return s(n=>{if(e.value&&t.value){let r=e=>o(e,t.value),i=t=>o(t,e.value);e.value.addEventListener(`pointerleave`,r),t.value.addEventListener(`pointerleave`,i),n(()=>{e.value?.removeEventListener(`pointerleave`,r),t.value?.removeEventListener(`pointerleave`,i)})}}),s(n=>{if(r.value){let o=n=>{if(!r.value||!(n.target instanceof Element))return;let o=n.target,s={x:n.clientX,y:n.clientY},c=e.value?.contains(o)||t.value?.contains(o),l=!tt(s,r.value),u=!!o.closest(`[data-grace-area-trigger]`);c?a():(l||u)&&(a(),i.trigger())};e.value?.ownerDocument.addEventListener(`pointermove`,o),n(()=>e.value?.ownerDocument.removeEventListener(`pointermove`,o))}}),{isPointerInTransit:n,onPointerExit:i.on}}function Qe(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function $e(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}function et(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function tt(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e].x,s=t[e].y,c=t[a].x,l=t[a].y;s>r!=l>r&&n<(c-o)*(r-s)/(l-s)+o&&(i=!i)}return i}function nt(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:+(e.y>t.y)),rt(t)}function rt(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t.at(-1),n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n.at(-1),t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var G=y({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;I();let n=He();return(e,r)=>(b(),w(i(F),m(t,{id:i(n).descriptionId}),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`id`]))}}),K=y({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e,n=He();return I(),(e,r)=>(b(),w(i(F),m(t,{id:i(n).titleId}),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`id`]))}}),[it,at]=W(`ListboxGroup`),ot=y({__name:`ListboxGroup`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=z(void 0,`reka-listbox-group`);return at({id:n}),(e,r)=>(b(),w(i(F),m({role:`group`},t,{"aria-labelledby":i(n)}),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`aria-labelledby`]))}}),st=y({__name:`ListboxGroupLabel`,props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`div`}},setup(e){let t=e,n=it({id:``});return(e,r)=>(b(),w(i(F),m(t,{id:i(n).id}),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`id`]))}}),ct={key:0,d:`M0 0L6 6L12 0`},lt={key:1,d:`M0 0L4.58579 4.58579C5.36683 5.36683 6.63316 5.36684 7.41421 4.58579L12 0`},ut=y({__name:`Arrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let t=e;return I(),(e,n)=>(b(),w(i(F),m(t,{width:e.width,height:e.height,viewBox:e.asChild?void 0:`0 0 12 6`,preserveAspectRatio:e.asChild?void 0:`none`}),{default:S(()=>[D(e.$slots,`default`,{},()=>[e.rounded?(b(),u(`path`,lt)):(b(),u(`path`,ct))])]),_:3},16,[`width`,`height`,`viewBox`,`preserveAspectRatio`]))}}),dt={top:`bottom`,right:`left`,bottom:`top`,left:`right`},ft=y({inheritAttrs:!1,__name:`PopperArrow`,props:{width:{type:Number,required:!1},height:{type:Number,required:!1},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let{forwardRef:n}=I(),r=be(),a=g(()=>dt[r.placedSide.value]);return(e,o)=>(b(),u(`span`,{ref:e=>{i(r).onArrowChange(e??void 0)},style:p({position:`absolute`,left:i(r).arrowX?.value?`${i(r).arrowX?.value}px`:void 0,top:i(r).arrowY?.value?`${i(r).arrowY?.value}px`:void 0,[a.value]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i(r).placedSide.value],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i(r).placedSide.value],visibility:i(r).shouldHideArrow.value?`hidden`:void 0})},[t(ut,m(e.$attrs,{ref:i(n),style:{display:`block`},as:e.as,"as-child":e.asChild,rounded:e.rounded,width:e.width,height:e.height}),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`as`,`as-child`,`rounded`,`width`,`height`])],4))}}),pt=y({__name:`BaseSeparator`,props:{orientation:{type:String,required:!1,default:`horizontal`},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=[`horizontal`,`vertical`];function r(e){return n.includes(e)}let a=g(()=>r(t.orientation)?t.orientation:`horizontal`),o=g(()=>a.value===`vertical`?t.orientation:void 0),s=g(()=>t.decorative?{role:`none`}:{"aria-orientation":o.value,role:`separator`});return(e,t)=>(b(),w(i(F),m({as:e.as,"as-child":e.asChild,"data-orientation":a.value},s.value),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`as`,`as-child`,`data-orientation`]))}}),q=y({__name:`Separator`,props:{orientation:{type:String,required:!1,default:`horizontal`},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t;return(t,r)=>(b(),w(pt,e(k(n)),{default:S(()=>[D(t.$slots,`default`)]),_:3},16))}}),mt=y({__name:`TooltipArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(t){let n=t;return I(),(t,r)=>(b(),w(i(ft),e(k(n)),{default:S(()=>[D(t.$slots,`default`)]),_:3},16))}}),[J,ht]=W(`TooltipProvider`),gt=y({inheritAttrs:!1,__name:`TooltipProvider`,props:{delayDuration:{type:Number,required:!1,default:700},skipDelayDuration:{type:Number,required:!1,default:300},disableHoverableContent:{type:Boolean,required:!1,default:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:!1},content:{type:Object,required:!1}},setup(e){let{delayDuration:t,skipDelayDuration:n,disableHoverableContent:r,disableClosingTrigger:i,ignoreNonKeyboardFocus:a,disabled:s,content:c}=o(e);I();let l=T(!0),u=T(!1),{start:d,stop:f}=ae(()=>{l.value=!0},n,{immediate:!1});return ht({isOpenDelayed:l,delayDuration:t,onOpen(){f(),l.value=!1},onClose(){d()},isPointerInTransitRef:u,disableHoverableContent:r,disableClosingTrigger:i,disabled:s,ignoreNonKeyboardFocus:a,content:c}),(e,t)=>D(e.$slots,`default`)}}),_t=`tooltip.open`,[Y,vt]=W(`TooltipRoot`),yt=y({__name:`TooltipRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,a=t;I();let o=J(),s=g(()=>n.disableHoverableContent??o.disableHoverableContent.value),c=g(()=>n.disableClosingTrigger??o.disableClosingTrigger.value),l=g(()=>n.disabled??o.disabled.value),u=g(()=>n.delayDuration??o.delayDuration.value),d=g(()=>n.ignoreNonKeyboardFocus??o.ignoreNonKeyboardFocus.value),f=fe(n,`open`,a,{defaultValue:n.defaultOpen,passive:n.open===void 0});r(f,e=>{o.onClose&&(e?(o.onOpen(),document.dispatchEvent(new CustomEvent(_t))):o.onClose())});let p=T(!1),m=T(),h=g(()=>f.value?p.value?`delayed-open`:`instant-open`:`closed`),{start:_,stop:v}=ae(()=>{p.value=!0,f.value=!0},u,{immediate:!1});function y(){v(),p.value=!1,f.value=!0}function x(){v(),f.value=!1}function C(){_()}return vt({contentId:``,open:f,stateAttribute:h,trigger:m,onTriggerChange(e){m.value=e},onTriggerEnter(){o.isOpenDelayed.value?C():y()},onTriggerLeave(){s.value?x():v()},onOpen:y,onClose:x,disableHoverableContent:s,disableClosingTrigger:c,disabled:l,ignoreNonKeyboardFocus:d}),(e,t)=>(b(),w(i(je),null,{default:S(()=>[D(e.$slots,`default`,{open:i(f)})]),_:3}))}}),bt=y({__name:`TooltipContentImpl`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:r}){let a=e,o=r,s=Y(),c=J(),{forwardRef:l,currentElement:u}=I(),d=g(()=>a.ariaLabel||u.value?.textContent),p=g(()=>{let{ariaLabel:e,...t}=a;return ye(t,c.content.value??{},{side:`top`,sideOffset:0,align:`center`,avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:`partial`,hideWhenDetached:!1})});return f(()=>{P(window,`scroll`,e=>{e.target?.contains(s.trigger.value)&&s.onClose()},{capture:!0}),P(document,_t,s.onClose)}),(e,r)=>(b(),w(i(ge),{"as-child":``,"disable-outside-pointer-events":!1,onEscapeKeyDown:r[0]||=e=>o(`escapeKeyDown`,e),onPointerDownOutside:r[1]||=e=>{i(s).disableClosingTrigger.value&&i(s).trigger.value?.contains(e.target)&&e.preventDefault(),o(`pointerDownOutside`,e)},onFocusOutside:r[2]||=ne(()=>{},[`prevent`]),onDismiss:r[3]||=e=>i(s).onClose()},{default:S(()=>[t(i(ke),m({ref:i(l),"data-state":i(s).stateAttribute.value},{...e.$attrs,...p.value},{style:{"--reka-tooltip-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-tooltip-content-available-width":`var(--reka-popper-available-width)`,"--reka-tooltip-content-available-height":`var(--reka-popper-available-height)`,"--reka-tooltip-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-tooltip-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:S(()=>[D(e.$slots,`default`),t(i(Me),{id:i(s).contentId,role:`tooltip`},{default:S(()=>[n(C(d.value),1)]),_:1},8,[`id`])]),_:3},16,[`data-state`])]),_:3}))}}),xt=y({__name:`TooltipContentHoverable`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(e){let t=V(e),{forwardRef:n,currentElement:r}=I(),{trigger:a,onClose:o}=Y(),s=J(),{isPointerInTransit:c,onPointerExit:l}=Ze(a,r);return s.isPointerInTransitRef=c,l(()=>{o()}),(e,r)=>(b(),w(bt,m({ref:i(n)},i(t)),{default:S(()=>[D(e.$slots,`default`)]),_:3},16))}}),St=y({__name:`TooltipContent`,props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,r=t,a=Y(),o=B(n,r),{forwardRef:s}=I();return(e,t)=>(b(),w(i(ve),{present:e.forceMount||i(a).open.value},{default:S(()=>[(b(),w(E(i(a).disableHoverableContent.value?bt:xt),m({ref:i(s)},i(o)),{default:S(()=>[D(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),Ct=y({__name:`TooltipPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(t){let n=t;return(t,r)=>(b(),w(i(he),e(k(n)),{default:S(()=>[D(t.$slots,`default`)]),_:3},16))}}),wt=y({__name:`TooltipTrigger`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let n=e,r=Y(),a=J();r.contentId||=z(void 0,`reka-tooltip-content`);let{forwardRef:o,currentElement:s}=I(),c=T(!1),l=T(!1),u=g(()=>r.disabled.value?{}:{click:C,focus:y,pointermove:h,pointerleave:_,pointerdown:p,blur:x});f(()=>{r.onTriggerChange(s.value)});function d(){setTimeout(()=>{c.value=!1},1)}function p(){r.open&&!r.disableClosingTrigger.value&&r.onClose(),c.value=!0,document.addEventListener(`pointerup`,d,{once:!0})}function h(e){e.pointerType!==`touch`&&!l.value&&!a.isPointerInTransitRef.value&&(r.onTriggerEnter(),l.value=!0)}function _(){r.onTriggerLeave(),l.value=!1}function y(e){c.value||r.ignoreNonKeyboardFocus.value&&!e.target.matches?.(`:focus-visible`)||r.onOpen()}function x(){r.onClose()}function C(){r.disableClosingTrigger.value||r.onClose()}return(e,a)=>(b(),w(i(we),{"as-child":``,reference:e.reference},{default:S(()=>[t(i(F),m({ref:i(o),"aria-describedby":i(r).open.value?i(r).contentId:void 0,"data-state":i(r).stateAttribute.value,as:e.as,"as-child":n.asChild,"data-grace-area-trigger":``},v(u.value)),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`aria-describedby`,`data-state`,`as`,`as-child`])]),_:3},8,[`reference`]))}}),Tt=y({__name:`Sheet`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean},unmountOnHide:{type:Boolean}},emits:[`update:open`],setup(t,{emit:n}){let r=B(t,n);return(t,n)=>(b(),w(i(Le),m({"data-slot":`sheet`},i(r)),{default:S(n=>[D(t.$slots,`default`,e(k(n)))]),_:3},16))}}),Et=y({__name:`SheetOverlay`,props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=N(t,`class`);return(e,r)=>(b(),w(i(Re),m({"data-slot":`sheet-overlay`,class:i(j)(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`,t.class)},i(n)),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`class`]))}}),Dt=y({inheritAttrs:!1,__name:`SheetContent`,props:{class:{type:[Boolean,null,String,Object,Array]},side:{default:`right`},forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:n}){let r=e,a=n,o=N(r,`class`,`side`),s=B(o,a);return(n,a)=>(b(),w(i(Pe),null,{default:S(()=>[t(Et),t(i(Be),m({"data-slot":`sheet-content`,class:i(j)(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500`,e.side===`right`&&`data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm`,e.side===`left`&&`data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm`,e.side===`top`&&`data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b`,e.side===`bottom`&&`data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t`,r.class)},{...n.$attrs,...i(s)}),{default:S(()=>[D(n.$slots,`default`),t(i(Fe),{class:`ring-offset-background focus:ring-ring data-[state=open]:bg-accent absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none`},{default:S(()=>[t(i(pe),{class:`size-4`}),a[0]||=l(`span`,{class:`sr-only`},`Close`,-1)]),_:1})]),_:3},16,[`class`])]),_:3}))}}),Ot=y({__name:`SheetDescription`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=N(t,`class`);return(e,r)=>(b(),w(i(G),m({"data-slot":`sheet-description`,class:i(j)(`text-muted-foreground text-sm`,t.class)},i(n)),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`class`]))}}),kt=y({__name:`SheetHeader`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`div`,{"data-slot":`sheet-header`,class:c(i(j)(`flex flex-col gap-1.5 p-4`,t.class))},[D(e.$slots,`default`)],2))}}),At=y({__name:`SheetTitle`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=N(t,`class`);return(e,r)=>(b(),w(i(K),m({"data-slot":`sheet-title`,class:i(j)(`text-foreground font-semibold`,t.class)},i(n)),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`class`]))}}),jt=`sidebar_state`,Mt=604800,Nt=`16rem`,Pt=`18rem`,Ft=`3rem`,[X,It]=W(`Sidebar`),Lt={class:`flex h-full w-full flex-col`},Rt=[`data-state`,`data-collapsible`,`data-variant`,`data-side`],zt={"data-sidebar":`sidebar`,class:`bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm`},Bt=y({inheritAttrs:!1,__name:`Sidebar`,props:{side:{default:`left`},variant:{default:`sidebar`},collapsible:{default:`offcanvas`},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let r=e,{isMobile:a,state:o,openMobile:s,setOpenMobile:d}=X();return(f,h)=>e.collapsible===`none`?(b(),u(`div`,m({key:0,"data-slot":`sidebar`,class:i(j)(`bg-sidebar text-sidebar-foreground flex w-(--sidebar-width) flex-col`,r.class)},f.$attrs),[D(f.$slots,`default`)],16)):i(a)?(b(),w(i(Tt),m({key:1,open:i(s)},f.$attrs,{"onUpdate:open":i(d)}),{default:S(()=>[t(i(Dt),{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,side:e.side,class:`bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden`,style:p({"--sidebar-width":i(Pt)})},{default:S(()=>[t(kt,{class:`sr-only`},{default:S(()=>[t(At,null,{default:S(()=>[...h[0]||=[n(`Sidebar`,-1)]]),_:1}),t(Ot,null,{default:S(()=>[...h[1]||=[n(`Displays the mobile sidebar.`,-1)]]),_:1})]),_:1}),l(`div`,Lt,[D(f.$slots,`default`)])]),_:3},8,[`side`,`style`])]),_:3},16,[`open`,`onUpdate:open`])):(b(),u(`div`,{key:2,class:`group peer text-sidebar-foreground hidden md:block`,"data-slot":`sidebar`,"data-state":i(o),"data-collapsible":i(o)===`collapsed`?e.collapsible:``,"data-variant":e.variant,"data-side":e.side},[l(`div`,{class:c(i(j)(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,e.variant===`floating`||e.variant===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`))},null,2),l(`div`,m({class:i(j)(`fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex`,e.side===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,e.variant===`floating`||e.variant===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,r.class)},f.$attrs),[l(`div`,zt,[D(f.$slots,`default`)])],16)],8,Rt))}}),Vt=y({__name:`SidebarContent`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,class:c(i(j)(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,t.class))},[D(e.$slots,`default`)],2))}}),Ht=y({__name:`SidebarFooter`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,class:c(i(j)(`flex flex-col gap-2 p-2`,t.class))},[D(e.$slots,`default`)],2))}}),Ut=y({__name:`SidebarGroup`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,class:c(i(j)(`relative flex w-full min-w-0 flex-col p-2`,t.class))},[D(e.$slots,`default`)],2))}}),Wt=y({__name:`SidebarGroupContent`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,class:c(i(j)(`w-full text-sm`,t.class))},[D(e.$slots,`default`)],2))}}),Gt=y({__name:`SidebarGroupLabel`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(n,r)=>(b(),w(i(F),{"data-slot":`sidebar-group-label`,"data-sidebar":`group-label`,as:e.as,"as-child":e.asChild,class:c(i(j)(`text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:pointer-events-none group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:select-none group-data-[collapsible=icon]:opacity-0`,t.class))},{default:S(()=>[D(n.$slots,`default`)]),_:3},8,[`as`,`as-child`,`class`]))}}),Kt=y({__name:`SidebarHeader`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,class:c(i(j)(`flex flex-col gap-2 p-2`,t.class))},[D(e.$slots,`default`)],2))}}),qt=y({__name:`SidebarInset`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`main`,{"data-slot":`sidebar-inset`,class:c(i(j)(`bg-background relative flex min-w-0 w-full flex-1 flex-col`,`md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2`,t.class))},[D(e.$slots,`default`)],2))}}),Jt=y({__name:`SidebarMenu`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,class:c(i(j)(`flex w-full min-w-0 flex-col gap-1`,t.class))},[D(e.$slots,`default`)],2))}}),Yt=y({__name:`Tooltip`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},delayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean}},emits:[`update:open`],setup(t,{emit:n}){let r=B(t,n);return(t,n)=>(b(),w(i(yt),m({"data-slot":`tooltip`},i(r)),{default:S(n=>[D(t.$slots,`default`,e(k(n)))]),_:3},16))}}),Xt=y({inheritAttrs:!1,__name:`TooltipContent`,props:{forceMount:{type:Boolean},ariaLabel:{},asChild:{type:Boolean},as:{},side:{},sideOffset:{default:4},align:{},alignOffset:{},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},class:{type:[Boolean,null,String,Object,Array]}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:n}){let r=e,a=n,o=N(r,`class`),s=B(o,a);return(e,n)=>(b(),w(i(Ct),null,{default:S(()=>[t(i(St),m({"data-slot":`tooltip-content`},{...i(s),...e.$attrs},{class:i(j)(`bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance`,r.class)}),{default:S(()=>[D(e.$slots,`default`),t(i(mt),{class:`bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-xs`})]),_:3},16,[`class`])]),_:3}))}}),Zt=y({__name:`TooltipTrigger`,props:{reference:{},asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(b(),w(i(wt),m({"data-slot":`tooltip-trigger`},t),{default:S(()=>[D(e.$slots,`default`)]),_:3},16))}}),Qt=y({__name:`SidebarMenuButtonChild`,props:{variant:{default:`default`},size:{default:`default`},isActive:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]},asChild:{type:Boolean},as:{default:`button`}},setup(e){let t=e;return(n,r)=>(b(),w(i(F),m({"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":e.size,"data-active":e.isActive,class:i(j)(i(on)({variant:e.variant,size:e.size}),t.class),as:e.as,"as-child":e.asChild},n.$attrs),{default:S(()=>[D(n.$slots,`default`)]),_:3},16,[`data-size`,`data-active`,`class`,`as`,`as-child`]))}}),$t=y({inheritAttrs:!1,__name:`SidebarMenuButton`,props:{variant:{default:`default`},size:{default:`default`},isActive:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]},asChild:{type:Boolean},as:{default:`button`},tooltip:{}},setup(r){let a=r,{isMobile:o,state:s}=X(),c=N(a,`tooltip`);return(a,l)=>r.tooltip?(b(),w(i(Yt),{key:1},{default:S(()=>[t(i(Zt),{"as-child":``},{default:S(()=>[t(Qt,e(k({...i(c),...a.$attrs})),{default:S(()=>[D(a.$slots,`default`)]),_:3},16)]),_:3}),t(i(Xt),{side:`right`,align:`center`,hidden:i(s)!==`collapsed`||i(o)},{default:S(()=>[typeof r.tooltip==`string`?(b(),u(x,{key:0},[n(C(r.tooltip),1)],64)):(b(),w(E(r.tooltip),{key:1}))]),_:1},8,[`hidden`])]),_:3})):(b(),w(Qt,e(m({key:0},{...i(c),...a.$attrs})),{default:S(()=>[D(a.$slots,`default`)]),_:3},16))}}),en=y({__name:`SidebarMenuItem`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,class:c(i(j)(`group/menu-item relative`,t.class))},[D(e.$slots,`default`)],2))}}),tn=y({__name:`SidebarProvider`,props:{defaultOpen:{type:Boolean,default:!le?.cookie.includes(`${jt}=false`)},open:{type:Boolean,default:void 0},class:{type:[Boolean,null,String,Object,Array]}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=t,a=de(`(max-width: 768px)`),o=T(!1),s=fe(n,`open`,r,{defaultValue:n.defaultOpen??!1,passive:n.open===void 0});function c(e){s.value=e,document.cookie=`${jt}=${s.value}; path=/; max-age=${Mt}`}function u(e){o.value=e}function d(){return a.value?u(!o.value):c(!s.value)}return P(`keydown`,e=>{e.key===`b`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),d())}),It({state:g(()=>s.value?`expanded`:`collapsed`),open:s,setOpen:c,isMobile:a,openMobile:o,setOpenMobile:u,toggleSidebar:d}),(e,t)=>(b(),w(i(gt),{"delay-duration":0},{default:S(()=>[l(`div`,m({"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":i(Nt),"--sidebar-width-icon":i(Ft)},class:i(j)(`group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full`,n.class)},e.$attrs),[D(e.$slots,`default`)],16)]),_:3}))}}),nn=y({__name:`SidebarRail`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,{toggleSidebar:n}=X();return(e,r)=>(b(),u(`button`,{"data-sidebar":`rail`,"data-slot":`sidebar-rail`,"aria-label":`Toggle Sidebar`,tabindex:-1,title:`Toggle Sidebar`,class:c(i(j)(`hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-0.5 sm:flex`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full`,`[[data-side=left][data-collapsible=offcanvas]_&]:-right-2`,`[[data-side=right][data-collapsible=offcanvas]_&]:-left-2`,t.class)),onClick:r[0]||=(...e)=>i(n)&&i(n)(...e)},[D(e.$slots,`default`)],2))}}),rn=y({__name:`Separator`,props:{orientation:{default:`horizontal`},decorative:{type:Boolean,default:!0},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=N(t,`class`);return(e,r)=>(b(),w(i(q),m({"data-slot":`separator`},i(n),{class:i(j)(`bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px`,t.class)}),null,16,[`class`]))}}),an=y({__name:`SidebarTrigger`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let n=e,{toggleSidebar:r}=X();return(e,a)=>(b(),w(i(L),{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,size:`icon`,class:c(i(j)(`h-7 w-7`,n.class)),onClick:i(r)},{default:S(()=>[t(i(Je)),a[0]||=l(`span`,{class:`sr-only`},`Toggle Sidebar`,-1)]),_:1},8,[`class`,`onClick`]))}}),on=re(`peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-sm p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-primary/10 data-[active=true]:font-medium data-[active=true]:text-primary dark:data-[active=true]:bg-primary/15 data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}}),sn=``+new URL(`logo-D9vyMJZl.png`,import.meta.url).href,cn={class:`flex items-center gap-2 px-2 py-1.5 group-data-[collapsible=icon]:p-0!`},ln=[`src`],un={class:`flex flex-col overflow-hidden group-data-[collapsible=icon]:hidden`},dn={class:`truncate text-sm font-semibold`},fn={key:0,class:`text-muted-foreground truncate text-xs`},pn=y({__name:`Sidebar`,setup(e){let{data:r}=me(),a=A(),o=te(),{mutate:s}=Ue();function f(){s(void 0,{onSuccess:()=>o.push({name:`login`})})}function p(e){return e?H(e).style.value:null}return(e,o)=>(b(),w(i(Bt),{collapsible:`icon`},{default:S(()=>[t(i(Kt),null,{default:S(()=>[l(`div`,cn,[l(`img`,{src:i(sn),alt:`Logo`,class:`shrink-0 rounded-md object-contain size-7`},null,8,ln),l(`div`,un,[l(`span`,dn,C(i(r)?.name??`Admin`),1),i(r)?.description?(b(),u(`span`,fn,C(i(r).description),1)):O(``,!0)])])]),_:1}),t(i(Vt),null,{default:S(()=>[(b(!0),u(x,null,d(i(r)?.sections??[],e=>(b(),w(i(Ut),{key:e.id},{default:S(()=>[t(i(Gt),null,{default:S(()=>[n(C(e.name),1)]),_:2},1024),t(i(Wt),null,{default:S(()=>[t(i(Jt),null,{default:S(()=>[(b(!0),u(x,null,d(e.pages,n=>(b(),w(i(en),{key:n.id},{default:S(()=>[t(i($t),{"as-child":``,"is-active":i(a).params.sectionId===e.id&&i(a).params.pageId===n.id,tooltip:n.name},{default:S(()=>[t(i(Ne),{to:{name:`page`,params:{sectionId:e.id,pageId:n.id}}},{default:S(()=>[n.icon?(b(),w(i(U),{key:0,icon:`lucide:${n.icon}`,class:c(p(n.color)?.text)},null,8,[`icon`,`class`])):n.color?(b(),u(`span`,{key:1,class:c([p(n.color)?.dot,`size-1.5 rounded-full shrink-0`])},null,2)):O(``,!0),l(`span`,null,C(n.name),1)]),_:2},1032,[`to`])]),_:2},1032,[`is-active`,`tooltip`])]),_:2},1024))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}),t(i(Ht),null,{default:S(()=>[t(i(Jt),null,{default:S(()=>[t(i(en),null,{default:S(()=>[t(i($t),{tooltip:`Logout`,onClick:f},{default:S(()=>[t(i(U),{icon:`lucide:log-out`}),o[0]||=l(`span`,null,`Logout`,-1)]),_:1})]),_:1})]),_:1})]),_:1}),t(i(nn))]),_:1}))}}),mn=y({__name:`Command`,props:{modelValue:{default:``},defaultValue:{},multiple:{type:Boolean},orientation:{},dir:{},disabled:{type:Boolean},selectionBehavior:{},highlightOnHover:{type:Boolean,default:!0},by:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},emits:[`update:modelValue`,`highlight`,`entryFocus`,`leave`],setup(e,{emit:t}){let n=e,a=t,o=N(n,`class`),s=B(o,a),c=T(new Map),l=T(new Map),{contains:u}=_e({sensitivity:`base`}),d=_({search:``,filtered:{count:0,items:new Map,groups:new Set}});function f(){if(!d.search){d.filtered.count=c.value.size;return}d.filtered.groups=new Set;let e=0;for(let[t,n]of c.value){let r=u(n,d.search);d.filtered.items.set(t,+!!r),r&&e++}for(let[e,t]of l.value)for(let n of t)if(d.filtered.items.get(n)>0){d.filtered.groups.add(e);break}d.filtered.count=e}return r(()=>d.search,()=>{f()}),Dn({allItems:c,allGroups:l,filterState:d}),(e,t)=>(b(),w(i(Te),m({"data-slot":`command`},i(s),{class:i(j)(`bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md`,n.class)}),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`class`]))}}),hn=y({__name:`DialogDescription`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=N(t,`class`),r=V(n);return(e,n)=>(b(),w(i(G),m({"data-slot":`dialog-description`},i(r),{class:i(j)(`text-muted-foreground text-sm`,t.class)}),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`class`]))}}),gn=y({__name:`DialogHeader`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`div`,{"data-slot":`dialog-header`,class:c(i(j)(`flex flex-col gap-2 text-center sm:text-left`,t.class))},[D(e.$slots,`default`)],2))}}),_n=y({__name:`DialogTitle`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=N(t,`class`),r=V(n);return(e,n)=>(b(),w(i(K),m({"data-slot":`dialog-title`},i(r),{class:i(j)(`text-lg leading-none font-semibold`,t.class)}),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`class`]))}}),vn=y({__name:`CommandDialog`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean},unmountOnHide:{type:Boolean},title:{default:`Command Palette`},description:{default:`Search for a command to run...`}},emits:[`update:open`],setup(r,{emit:a}){let o=B(r,a);return(a,s)=>(b(),w(i(Ie),e(k(i(o))),{default:S(o=>[t(i(ze),{class:`overflow-hidden p-0`,"overlay-class":`bg-transparent backdrop-blur-sm`,"show-close-button":!1},{default:S(()=>[t(i(gn),{class:`sr-only`},{default:S(()=>[t(i(_n),null,{default:S(()=>[n(C(r.title),1)]),_:1}),t(i(hn),null,{default:S(()=>[n(C(r.description),1)]),_:1})]),_:1}),t(mn,null,{default:S(()=>[D(a.$slots,`default`,e(k(o)))]),_:2},1024)]),_:2},1024)]),_:3},16))}}),yn=y({__name:`CommandEmpty`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=N(t,`class`),{filterState:r}=Z(),a=g(()=>!!r.search&&r.filtered.count===0);return(e,r)=>a.value?(b(),w(i(F),m({key:0,"data-slot":`command-empty`},i(n),{class:i(j)(`py-6 text-center text-sm`,t.class)}),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`class`])):O(``,!0)}}),bn=y({__name:`CommandGroup`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]},heading:{}},setup(e){let t=e,r=N(t,`class`),{allGroups:a,filterState:o}=Z(),s=z(),c=g(()=>!o.search||o.filtered.groups.has(s));return kn({id:s}),f(()=>{a.value.has(s)||a.value.set(s,new Set)}),h(()=>{a.value.delete(s)}),(a,o)=>(b(),w(i(ot),m(i(r),{id:i(s),"data-slot":`command-group`,class:i(j)(`text-foreground overflow-hidden p-1`,t.class),hidden:!c.value||void 0}),{default:S(()=>[e.heading?(b(),w(i(st),{key:0,"data-slot":`command-group-heading`,class:`px-2 py-1.5 text-xs font-medium text-muted-foreground`},{default:S(()=>[n(C(e.heading),1)]),_:1})):O(``,!0),D(a.$slots,`default`)]),_:3},16,[`id`,`class`,`hidden`]))}}),xn={"data-slot":`command-input-wrapper`,class:`flex h-9 items-center gap-2 border-b px-3`},Sn=y({inheritAttrs:!1,__name:`CommandInput`,props:{modelValue:{},autoFocus:{type:Boolean},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let n=e,r=N(n,`class`),a=V(r),{filterState:o}=Z();return(e,r)=>(b(),u(`div`,xn,[t(i(Ye),{class:`size-4 shrink-0 opacity-50`}),t(i(Se),m({...i(a),...e.$attrs},{modelValue:i(o).search,"onUpdate:modelValue":r[0]||=e=>i(o).search=e,"data-slot":`command-input`,"auto-focus":``,class:i(j)(`placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50`,n.class)}),null,16,[`modelValue`,`class`])]))}}),Cn=y({__name:`CommandItem`,props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,a=N(n,`class`),o=B(a,r),s=z(),{filterState:c,allItems:l,allGroups:u}=Z(),d=On(),p=g(()=>{if(c.search){let e=c.filtered.items.get(s);return e===void 0||e>0}return!0}),_=T(),v=ue(_);return f(()=>{if(!(v.value instanceof HTMLElement))return;l.value.set(s,v.value.textContent??n.value?.toString()??``);let e=d?.id;e&&(u.value.has(e)?u.value.get(e)?.add(s):u.value.set(e,new Set([s])))}),h(()=>{l.value.delete(s)}),(e,t)=>p.value?(b(),w(i(xe),m({key:0},i(o),{id:i(s),ref_key:`itemRef`,ref:_,"data-slot":`command-item`,class:i(j)(`data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,n.class),onSelect:t[0]||=()=>{i(c).search=``}}),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`id`,`class`])):O(``,!0)}}),wn={role:`presentation`},Tn=y({__name:`CommandList`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=N(t,`class`),r=V(n);return(e,n)=>(b(),w(i(De),m({"data-slot":`command-list`},i(r),{class:i(j)(`max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto`,t.class)}),{default:S(()=>[l(`div`,wn,[D(e.$slots,`default`)])]),_:3},16,[`class`]))}}),En=y({__name:`CommandSeparator`,props:{orientation:{},decorative:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=N(t,`class`);return(e,r)=>(b(),w(i(q),m({"data-slot":`command-separator`},i(n),{class:i(j)(`bg-border -mx-1 h-px`,t.class)}),{default:S(()=>[D(e.$slots,`default`)]),_:3},16,[`class`]))}}),[Z,Dn]=W(`Command`),[On,kn]=W(`CommandGroup`),Q=T(!1),An={class:`text-muted-foreground flex items-center gap-1.5 px-2 py-1.5 text-xs font-medium`},jn={class:`text-muted-foreground`},Mn=y({__name:`CommandPanel`,setup(e){let r=te(),{data:a}=me();function o(e,t){Q.value=!1,r.push({name:`page`,params:{sectionId:e,pageId:t}})}function s(e,t,n){Q.value=!1,n.type===`form`?r.push({name:`form`,params:{sectionId:e,pageId:t,formId:n.id}}):r.push({name:`page`,params:{sectionId:e,pageId:t}})}let{meta_p:f,ctrl_p:p}=se({passive:!1,onEventFired(e){e.key.toLowerCase()===`p`&&(e.metaKey||e.ctrlKey)&&e.preventDefault()}});M(f,()=>{Q.value=!0}),M(p,()=>{Q.value=!0});function m(e){return`icon`in e?e.icon??null:null}function h(e){return`color`in e?e.color??null:null}function g(e){return e?H(e).style.value.text:void 0}function _(e){return e?[H(e).style.value.dot,`size-1.5 rounded-full shrink-0`]:void 0}return(e,r)=>(b(),w(i(vn),{open:i(Q),"onUpdate:open":r[0]||=e=>ee(Q)?Q.value=e:null,title:`Command Panel`,description:`Search sections, pages, and components...`},{default:S(()=>[t(i(Sn),{placeholder:`Search sections, pages, and components...`}),t(i(Tn),null,{default:S(()=>[t(i(yn),null,{default:S(()=>[...r[1]||=[n(`No results found.`,-1)]]),_:1}),(b(!0),u(x,null,d(i(a)?.sections??[],(e,n)=>(b(),u(x,{key:e.id},[n>0?(b(),w(i(En),{key:0})):O(``,!0),t(i(bn),null,{default:S(()=>[l(`div`,An,[e.icon?(b(),w(i(U),{key:0,icon:`lucide:${e.icon}`,class:`size-3.5 shrink-0`},null,8,[`icon`])):O(``,!0),l(`span`,null,C(e.name),1)]),(b(!0),u(x,null,d(e.pages,n=>(b(),u(x,{key:n.id},[t(i(Cn),{value:n.id,onSelect:t=>o(e.id,n.id)},{default:S(()=>[n.icon?(b(),w(i(U),{key:0,icon:`lucide:${n.icon}`,class:c(g(n.color))},null,8,[`icon`,`class`])):n.color?(b(),u(`span`,{key:1,class:c(_(n.color))},null,2)):O(``,!0),l(`span`,null,C(n.name),1)]),_:2},1032,[`value`,`onSelect`]),(b(!0),u(x,null,d(n.components,t=>(b(),w(i(Cn),{key:t.id,value:t.id,class:`pl-8`,onSelect:r=>s(e.id,n.id,t)},{default:S(()=>[m(t)?(b(),w(i(U),{key:0,icon:`lucide:${m(t)}`,class:c(g(h(t)))},null,8,[`icon`,`class`])):h(t)?(b(),u(`span`,{key:1,class:c(_(h(t)))},null,2)):O(``,!0),l(`span`,jn,C(t.name),1)]),_:2},1032,[`value`,`onSelect`]))),128))],64))),128))]),_:2},1024)],64))),128))]),_:1})]),_:1},8,[`open`]))}}),Nn=y({__name:`KbdGroup`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`kbd`,{"data-slot":`kbd-group`,class:c(i(j)(`inline-flex items-center gap-1`,t.class))},[D(e.$slots,`default`)],2))}}),Pn=y({inheritAttrs:!1,__name:`CommandTrigger`,setup(e){let r=g(()=>/Mac|iPhone|iPad|iPod/.test(navigator.platform));return(e,a)=>(b(),w(i(Yt),null,{default:S(()=>[t(i(Zt),{"as-child":``},{default:S(()=>[t(i(L),m({type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Open command palette`},e.$attrs,{onClick:a[0]||=e=>Q.value=!0}),{default:S(()=>[t(i(Ke))]),_:1},16)]),_:1}),t(i(Xt),{class:`flex items-center gap-2`},{default:S(()=>[a[2]||=n(` Command Palette `,-1),t(i(Nn),null,{default:S(()=>[t(i(Ve),null,{default:S(()=>[n(C(r.value?`⌘`:`Ctrl`),1)]),_:1}),t(i(Ve),null,{default:S(()=>[...a[1]||=[n(`P`,-1)]]),_:1})]),_:1})]),_:1})]),_:1}))}}),Fn=y({__name:`ThemeToggle`,setup(e){return(e,t)=>(b(),w(i(L),{type:`button`,variant:`ghost`,size:`icon`,"aria-label":i(Ge)?`Switch to light theme`:`Switch to dark theme`,onClick:t[0]||=e=>i(We)()},{default:S(()=>[i(Ge)?(b(),w(i(Xe),{key:0})):(b(),w(i(qe),{key:1}))]),_:1},8,[`aria-label`]))}}),In=y({__name:`Breadcrumb`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`nav`,{"aria-label":`breadcrumb`,"data-slot":`breadcrumb`,class:c(t.class)},[D(e.$slots,`default`)],2))}}),$=y({__name:`BreadcrumbItem`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`li`,{"data-slot":`breadcrumb-item`,class:c(i(j)(`inline-flex items-center gap-1.5`,t.class))},[D(e.$slots,`default`)],2))}}),Ln=y({__name:`BreadcrumbList`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`ol`,{"data-slot":`breadcrumb-list`,class:c(i(j)(`text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5`,t.class))},[D(e.$slots,`default`)],2))}}),Rn=y({__name:`BreadcrumbPage`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(b(),u(`span`,{"data-slot":`breadcrumb-page`,role:`link`,"aria-disabled":`true`,"aria-current":`page`,class:c(i(j)(`text-foreground font-normal`,t.class))},[D(e.$slots,`default`)],2))}}),zn=y({__name:`BreadcrumbSeparator`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let n=e;return(e,r)=>(b(),u(`li`,{"data-slot":`breadcrumb-separator`,role:`presentation`,"aria-hidden":`true`,class:c(i(j)(`[&>svg]:size-3.5`,n.class))},[D(e.$slots,`default`,{},()=>[t(i(Ce))])],2))}}),Bn={class:`flex h-14 shrink-0 items-center gap-2 border-b px-4`},Vn={class:`text-muted-foreground`},Hn=y({__name:`TopPanel`,setup(e){let r=A(),a=g(()=>r.params.sectionId),o=g(()=>r.params.pageId),s=g(()=>r.params.formId||``),{data:d}=Oe({sectionId:a}),{page:f}=Ee({sectionId:a,pageId:o}),{form:p}=Ae({sectionId:a,pageId:o,formId:s}),{style:m}=H(()=>p.value?.color||`slate`);return(e,r)=>(b(),u(x,null,[l(`header`,Bn,[t(i(an)),t(i(rn),{orientation:`vertical`,class:`mr-2 h-4`}),i(d)&&i(f)?(b(),w(i(In),{key:0},{default:S(()=>[t(i(Ln),null,{default:S(()=>[t(i($),null,{default:S(()=>[l(`span`,Vn,C(i(d).name),1)]),_:1}),t(i(zn)),t(i($),null,{default:S(()=>[t(i(Rn),{class:`flex items-center gap-1.5`},{default:S(()=>[i(f).icon?(b(),w(i(U),{key:0,icon:`lucide:${i(f).icon}`},null,8,[`icon`])):O(``,!0),n(` `+C(i(f).name),1)]),_:1})]),_:1}),i(p)?(b(),w(i(zn),{key:0})):O(``,!0),i(p)?(b(),w(i($),{key:1},{default:S(()=>[t(i(Rn),{class:`flex items-center gap-1.5`},{default:S(()=>[i(p).icon?(b(),w(i(U),{key:0,icon:`lucide:${i(p).icon}`,class:c(i(m).text)},null,8,[`icon`,`class`])):O(``,!0),n(` `+C(i(p).name),1)]),_:1})]),_:1})):O(``,!0)]),_:1})]),_:1})):O(``,!0),t(Pn,{class:`ml-auto`}),t(Fn)]),t(Mn)],64))}}),Un={class:`flex-1 overflow-auto p-4 md:p-6`},Wn=y({__name:`Dashboard`,setup(e){let n=A();return(e,r)=>{let o=a(`router-view`);return b(),w(i(tn),null,{default:S(()=>[t(pn),t(i(qt),null,{default:S(()=>[t(Hn),l(`main`,Un,[(b(),w(o,{key:i(n).fullPath}))])]),_:1})]),_:1})}}});export{Wn as default};