themelia-react-ui 1.0.0 → 1.0.1

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 (257) hide show
  1. package/CHANGELOG.md +53 -1
  2. package/README.md +39 -6
  3. package/dist/{accordion-BRWh3BM1.js → accordion-B-5Focs8.js} +2 -2
  4. package/dist/{accordion-BRWh3BM1.js.map → accordion-B-5Focs8.js.map} +1 -1
  5. package/dist/{affordance-geometry.generated-DXl-Zb3Z.js → affordance-geometry.generated-D8Jcfb0G.js} +10 -1
  6. package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +1 -0
  7. package/dist/{ai-artifact-DkOArd3-.js → ai-artifact-B5tPpXnS.js} +5 -5
  8. package/dist/{ai-artifact-DkOArd3-.js.map → ai-artifact-B5tPpXnS.js.map} +1 -1
  9. package/dist/{app-shell-BH_bGcE2.js → app-shell-at8Kt4l_.js} +3 -3
  10. package/dist/{app-shell-BH_bGcE2.js.map → app-shell-at8Kt4l_.js.map} +1 -1
  11. package/dist/{attachment-DsLgNHXt.js → attachment-BO2R47wn.js} +2 -2
  12. package/dist/{attachment-DsLgNHXt.js.map → attachment-BO2R47wn.js.map} +1 -1
  13. package/dist/{auth-BDB1V_2q.js → auth-OFwWSAap.js} +4 -4
  14. package/dist/{auth-BDB1V_2q.js.map → auth-OFwWSAap.js.map} +1 -1
  15. package/dist/{avatar-CsnWaYmt.js → avatar-Bpzty83c.js} +73 -68
  16. package/dist/avatar-Bpzty83c.js.map +1 -0
  17. package/dist/base/accordion.js +1 -1
  18. package/dist/base/attachment.js +1 -1
  19. package/dist/base/avatar.js +1 -1
  20. package/dist/base/cards.js +2 -2
  21. package/dist/base/cascader.js +6 -6
  22. package/dist/base/choice-inputs.js +3 -2
  23. package/dist/base/code-block.js +1 -1
  24. package/dist/base/combobox.js +1 -1
  25. package/dist/base/command.js +1 -1
  26. package/dist/base/date-pickers.js +2 -2
  27. package/dist/base/display.js +1 -1
  28. package/dist/base/feedback.js +4 -3
  29. package/dist/base/forms-numeric.js +1 -1
  30. package/dist/base/forms.js +2 -2
  31. package/dist/base/inline-edit.js +236 -0
  32. package/dist/base/inline-edit.js.map +1 -0
  33. package/dist/base/media-gallery.js +1 -1
  34. package/dist/base/navigation.js +3 -3
  35. package/dist/base/popover-menu.js +1 -1
  36. package/dist/base/popover.js +1 -1
  37. package/dist/base/repeaters.js +4 -4
  38. package/dist/base/sheet.js +1 -1
  39. package/dist/base/sidebar.js +1 -1
  40. package/dist/base/signature-pad.js +3 -3
  41. package/dist/base/skeleton.js +1 -1
  42. package/dist/base/spinner.js +1 -1
  43. package/dist/base/structure.js +1 -1
  44. package/dist/base/text-inputs.js +2 -2
  45. package/dist/base/tree.js +1 -1
  46. package/dist/base/upload-queue.js +1 -1
  47. package/dist/base/upload.js +3 -3
  48. package/dist/base/value-inputs.js +1 -1
  49. package/dist/blocks/admin.js +6 -6
  50. package/dist/blocks/ai.js +6 -6
  51. package/dist/blocks/analytics/usage-card.js +3 -0
  52. package/dist/blocks/analytics.js +361 -360
  53. package/dist/blocks/analytics.js.map +1 -1
  54. package/dist/blocks/collaboration.js +1 -1
  55. package/dist/blocks/commerce/receipt.js +1 -1
  56. package/dist/blocks/commerce.js +15 -15
  57. package/dist/blocks/data-display.js +1 -1
  58. package/dist/blocks/onboarding.js +3 -3
  59. package/dist/blocks/planning.js +311 -0
  60. package/dist/blocks/planning.js.map +1 -0
  61. package/dist/blocks/timelines.js +1 -1
  62. package/dist/{cards-BMB0laLG.js → cards-Cum56XOF.js} +3 -3
  63. package/dist/{cards-BMB0laLG.js.map → cards-Cum56XOF.js.map} +1 -1
  64. package/dist/checkbox-BavDRjF7.js +34 -0
  65. package/dist/checkbox-BavDRjF7.js.map +1 -0
  66. package/dist/{choice-inputs-CavA-SGV.js → choice-inputs-CC7XqPQO.js} +166 -191
  67. package/dist/choice-inputs-CC7XqPQO.js.map +1 -0
  68. package/dist/{code-block-DIlqzoiD.js → code-block-xHKbAJDj.js} +2 -2
  69. package/dist/{code-block-DIlqzoiD.js.map → code-block-xHKbAJDj.js.map} +1 -1
  70. package/dist/{combobox-HDftpzxt.js → combobox-DEbdr-3u.js} +2 -2
  71. package/dist/{combobox-HDftpzxt.js.map → combobox-DEbdr-3u.js.map} +1 -1
  72. package/dist/{combobox-CHD750do.js → combobox-xv3yJbzl.js} +7 -7
  73. package/dist/{combobox-CHD750do.js.map → combobox-xv3yJbzl.js.map} +1 -1
  74. package/dist/{command-D0kWBZfd.js → command-C0xe7u9B.js} +2 -2
  75. package/dist/{command-D0kWBZfd.js.map → command-C0xe7u9B.js.map} +1 -1
  76. package/dist/{comments-CvYeglMS.js → comments-DviPLnwy.js} +8 -8
  77. package/dist/{comments-CvYeglMS.js.map → comments-DviPLnwy.js.map} +1 -1
  78. package/dist/components/base/cards/smart-card.types.d.ts +2 -0
  79. package/dist/components/base/inline-edit/index.d.ts +2 -0
  80. package/dist/components/base/inline-edit/inline-edit.d.ts +81 -0
  81. package/dist/components/base/inline-edit/inline-edit.recipes.d.ts +6 -0
  82. package/dist/components/base/structure/structure.recipes.d.ts +6 -0
  83. package/dist/components/blocks/analytics/index.d.ts +1 -0
  84. package/dist/components/blocks/analytics/usage-card/index.d.ts +3 -0
  85. package/dist/components/blocks/analytics/usage-card/types.d.ts +52 -0
  86. package/dist/components/blocks/analytics/usage-card/usage-card.d.ts +6 -0
  87. package/dist/components/blocks/analytics/usage-card/usage-card.data.d.ts +19 -0
  88. package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +22 -0
  89. package/dist/components/blocks/planning/index.d.ts +3 -0
  90. package/dist/components/blocks/planning/task-card.d.ts +3 -0
  91. package/dist/components/blocks/planning/task-card.strings.d.ts +15 -0
  92. package/dist/components/blocks/planning/task-card.types.d.ts +66 -0
  93. package/dist/{containers-CPNyNo1_.js → containers-6s-ucRQQ.js} +3 -2
  94. package/dist/containers-6s-ucRQQ.js.map +1 -0
  95. package/dist/{data-display-b3d1TfL4.js → data-display-cWIRdeaf.js} +8 -8
  96. package/dist/{data-display-b3d1TfL4.js.map → data-display-cWIRdeaf.js.map} +1 -1
  97. package/dist/{date-picker-DI6kPNof.js → date-picker-CA6ogMQB.js} +5 -5
  98. package/dist/{date-picker-DI6kPNof.js.map → date-picker-CA6ogMQB.js.map} +1 -1
  99. package/dist/{date-pickers-ByP6Cv2z.js → date-pickers-BPIKLdsD.js} +4 -4
  100. package/dist/{date-pickers-ByP6Cv2z.js.map → date-pickers-BPIKLdsD.js.map} +1 -1
  101. package/dist/{display-ByI5tkqy.js → display-CFM5myut.js} +3 -3
  102. package/dist/{display-ByI5tkqy.js.map → display-CFM5myut.js.map} +1 -1
  103. package/dist/features/activities.js +4 -4
  104. package/dist/features/ai-chat.js +4 -4
  105. package/dist/features/async-preview.js +4 -4
  106. package/dist/features/combobox.js +1 -1
  107. package/dist/features/comments.js +1 -1
  108. package/dist/features/data-view.js +5 -5
  109. package/dist/features/email-composer.js +11 -11
  110. package/dist/features/event-calendar.js +2 -2
  111. package/dist/features/event-calendar.js.map +1 -1
  112. package/dist/features/filters.js +1 -1
  113. package/dist/features/global-search.js +6 -6
  114. package/dist/features/map.js +3 -3
  115. package/dist/features/media-library.js +8 -8
  116. package/dist/features/mentions.js +1 -1
  117. package/dist/features/overlays.js +1 -1
  118. package/dist/features/products.js +43 -42
  119. package/dist/features/products.js.map +1 -1
  120. package/dist/features/questionnaire.js +107 -106
  121. package/dist/features/questionnaire.js.map +1 -1
  122. package/dist/features/resource-assignment.js +5 -5
  123. package/dist/features/resource.js +7 -7
  124. package/dist/features/rich-text-editor.js +1 -1
  125. package/dist/features/schema-form.js +11 -11
  126. package/dist/features/schema-form.js.map +1 -1
  127. package/dist/features/suggestions.js +2 -2
  128. package/dist/features/sync.js +2 -2
  129. package/dist/features/table.js +1 -1
  130. package/dist/features/theme-tweaker.js +11 -11
  131. package/dist/feedback-DWUkgEjR.js +233 -0
  132. package/dist/feedback-DWUkgEjR.js.map +1 -0
  133. package/dist/{field-affordance-recipes-CHdUtn2Z.js → field-affordance-recipes-IjzPrCTw.js} +2 -2
  134. package/dist/{field-affordance-recipes-CHdUtn2Z.js.map → field-affordance-recipes-IjzPrCTw.js.map} +1 -1
  135. package/dist/{filters-qtrcv1hf.js → filters-BhsUtsxW.js} +9 -9
  136. package/dist/{filters-qtrcv1hf.js.map → filters-BhsUtsxW.js.map} +1 -1
  137. package/dist/{form-field-C6W-y2hR.js → form-field-Bn7ZH1rA.js} +2 -2
  138. package/dist/{form-field-C6W-y2hR.js.map → form-field-Bn7ZH1rA.js.map} +1 -1
  139. package/dist/{form-sizing-39NohSqn.js → form-sizing-BWs70_a2.js} +4 -3
  140. package/dist/{form-sizing-39NohSqn.js.map → form-sizing-BWs70_a2.js.map} +1 -1
  141. package/dist/{forms-BF-HSbff.js → forms-B7pzS25o.js} +5 -5
  142. package/dist/{forms-BF-HSbff.js.map → forms-B7pzS25o.js.map} +1 -1
  143. package/dist/{forms-numeric-Y15Bg5Nr.js → forms-numeric-BUBxELBv.js} +18 -18
  144. package/dist/{forms-numeric-Y15Bg5Nr.js.map → forms-numeric-BUBxELBv.js.map} +1 -1
  145. package/dist/{header-B8ex54cY.js → header-C59QZyxV.js} +6 -6
  146. package/dist/{header-B8ex54cY.js.map → header-C59QZyxV.js.map} +1 -1
  147. package/dist/{hooks-D6UBVzf2.js → hooks-CM1Vp9Pe.js} +2 -2
  148. package/dist/{hooks-D6UBVzf2.js.map → hooks-CM1Vp9Pe.js.map} +1 -1
  149. package/dist/{input-DMorJiTI.js → input-WwYQZJzG.js} +3 -3
  150. package/dist/{input-DMorJiTI.js.map → input-WwYQZJzG.js.map} +1 -1
  151. package/dist/layout/app-shell.js +1 -1
  152. package/dist/layout/auth.js +1 -1
  153. package/dist/layout/containers.js +1 -1
  154. package/dist/layout/header.js +1 -1
  155. package/dist/layout/hooks.js +1 -1
  156. package/dist/layout/navigation.js +1 -1
  157. package/dist/layout/page.js +1 -1
  158. package/dist/layout/settings.js +1 -1
  159. package/dist/layout/sidebar.js +2 -2
  160. package/dist/layout/workspace.js +1 -1
  161. package/dist/layout.js +10 -10
  162. package/dist/lib/affordance-geometry.generated.d.ts +9 -0
  163. package/dist/{media-gallery-Ca4YmvBi.js → media-gallery-DhDRgnVZ.js} +2 -2
  164. package/dist/{media-gallery-Ca4YmvBi.js.map → media-gallery-DhDRgnVZ.js.map} +1 -1
  165. package/dist/{mentions-CRio8mTm.js → mentions-B8Ko-fhS.js} +4 -4
  166. package/dist/{mentions-CRio8mTm.js.map → mentions-B8Ko-fhS.js.map} +1 -1
  167. package/dist/{message-B5-6LeYl.js → message-COsdEvXT.js} +2 -2
  168. package/dist/{message-B5-6LeYl.js.map → message-COsdEvXT.js.map} +1 -1
  169. package/dist/{navigation-DqEITuD2.js → navigation-BUIn2Qxx.js} +2 -2
  170. package/dist/{navigation-DqEITuD2.js.map → navigation-BUIn2Qxx.js.map} +1 -1
  171. package/dist/{navigation-BTrEb5u4.js → navigation-DBEu4POU.js} +3 -3
  172. package/dist/{navigation-BTrEb5u4.js.map → navigation-DBEu4POU.js.map} +1 -1
  173. package/dist/{navigation-row-recipes-BFpvGPGE.js → navigation-row-recipes-GVh11KiT.js} +2 -2
  174. package/dist/{navigation-row-recipes-BFpvGPGE.js.map → navigation-row-recipes-GVh11KiT.js.map} +1 -1
  175. package/dist/{overlays-DBqV0J_V.js → overlays-B11wZka6.js} +4 -4
  176. package/dist/{overlays-DBqV0J_V.js.map → overlays-B11wZka6.js.map} +1 -1
  177. package/dist/{page-BMBGjJY8.js → page-BV6ioQg3.js} +5 -5
  178. package/dist/{page-BMBGjJY8.js.map → page-BV6ioQg3.js.map} +1 -1
  179. package/dist/{page-header-BH41wCyY.js → page-header-DQRa0jug.js} +2 -2
  180. package/dist/{page-header-BH41wCyY.js.map → page-header-DQRa0jug.js.map} +1 -1
  181. package/dist/{popover-TInGXsjg.js → popover-CoLDEg19.js} +2 -2
  182. package/dist/{popover-TInGXsjg.js.map → popover-CoLDEg19.js.map} +1 -1
  183. package/dist/{popover-menu-BzqXqE72.js → popover-menu-GLIQTJTx.js} +4 -4
  184. package/dist/{popover-menu-BzqXqE72.js.map → popover-menu-GLIQTJTx.js.map} +1 -1
  185. package/dist/progress-BOe8l_FZ.js +168 -0
  186. package/dist/progress-BOe8l_FZ.js.map +1 -0
  187. package/dist/{receipt-DYWTQGEc.js → receipt-BM8xsGFy.js} +3 -3
  188. package/dist/{receipt-DYWTQGEc.js.map → receipt-BM8xsGFy.js.map} +1 -1
  189. package/dist/{rich-text-editor-BZSJchAF.js → rich-text-editor-CoVrTiSv.js} +2 -2
  190. package/dist/{rich-text-editor-BZSJchAF.js.map → rich-text-editor-CoVrTiSv.js.map} +1 -1
  191. package/dist/services/actions.js +1 -1
  192. package/dist/{settings-D9f_wdIC.js → settings-BnCyyPOJ.js} +3 -3
  193. package/dist/{settings-D9f_wdIC.js.map → settings-BnCyyPOJ.js.map} +1 -1
  194. package/dist/{sheet-vOUloJ4O.js → sheet-B-q914Ad.js} +2 -2
  195. package/dist/{sheet-vOUloJ4O.js.map → sheet-B-q914Ad.js.map} +1 -1
  196. package/dist/{sidebar-C3UKkbC5.js → sidebar-C_2p3Tfj.js} +6 -6
  197. package/dist/{sidebar-C3UKkbC5.js.map → sidebar-C_2p3Tfj.js.map} +1 -1
  198. package/dist/{sidebar-CNBKFDRW.js → sidebar-DPR7fmqN.js} +4 -4
  199. package/dist/{sidebar-CNBKFDRW.js.map → sidebar-DPR7fmqN.js.map} +1 -1
  200. package/dist/{skeleton-BvRhK8y-.js → skeleton-CmT1ppqb.js} +2 -2
  201. package/dist/{skeleton-BvRhK8y-.js.map → skeleton-CmT1ppqb.js.map} +1 -1
  202. package/dist/{smart-card-B5FcKODh.js → smart-card-CYLn46e6.js} +119 -118
  203. package/dist/smart-card-CYLn46e6.js.map +1 -0
  204. package/dist/{spinner-JtlFJ7Nc.js → spinner-BY9HbUEh.js} +2 -2
  205. package/dist/{spinner-JtlFJ7Nc.js.map → spinner-BY9HbUEh.js.map} +1 -1
  206. package/dist/{structure-BvW4vG4H.js → structure-MvKVq-oL.js} +13 -13
  207. package/dist/{structure-BvW4vG4H.js.map → structure-MvKVq-oL.js.map} +1 -1
  208. package/dist/{structure.recipes-DjqnBpwz.js → structure.recipes-Bqhf9oIh.js} +2 -2
  209. package/dist/structure.recipes-Bqhf9oIh.js.map +1 -0
  210. package/dist/style.css +1 -1
  211. package/dist/{table-ghtAQ-JJ.js → table-BS39xnlq.js} +6 -6
  212. package/dist/{table-ghtAQ-JJ.js.map → table-BS39xnlq.js.map} +1 -1
  213. package/dist/{tabs-DY09eoZg.js → tabs-B5cNMWiP.js} +2 -2
  214. package/dist/{tabs-DY09eoZg.js.map → tabs-B5cNMWiP.js.map} +1 -1
  215. package/dist/{text-inputs-BhOcedTo.js → text-inputs-Dh9XGyiS.js} +4 -4
  216. package/dist/{text-inputs-BhOcedTo.js.map → text-inputs-Dh9XGyiS.js.map} +1 -1
  217. package/dist/{timelines-CnZ2S_Gr.js → timelines-B9ICkQcV.js} +2 -2
  218. package/dist/{timelines-CnZ2S_Gr.js.map → timelines-B9ICkQcV.js.map} +1 -1
  219. package/dist/{tree-COD9BGdU.js → tree-BdWSaoFT.js} +2 -2
  220. package/dist/{tree-COD9BGdU.js.map → tree-BdWSaoFT.js.map} +1 -1
  221. package/dist/{upload-DIzw1dx1.js → upload-D8Za5x_c.js} +4 -4
  222. package/dist/{upload-DIzw1dx1.js.map → upload-D8Za5x_c.js.map} +1 -1
  223. package/dist/{upload-queue-xRJ3qDmd.js → upload-queue-hIIYBLS7.js} +3 -3
  224. package/dist/{upload-queue-xRJ3qDmd.js.map → upload-queue-hIIYBLS7.js.map} +1 -1
  225. package/dist/usage-card-DnmnJ58D.js +458 -0
  226. package/dist/usage-card-DnmnJ58D.js.map +1 -0
  227. package/dist/{value-inputs-Co1fu-xv.js → value-inputs-DX2dbxjj.js} +7 -7
  228. package/dist/{value-inputs-Co1fu-xv.js.map → value-inputs-DX2dbxjj.js.map} +1 -1
  229. package/dist/{workspace-Cbqz4FzN.js → workspace-C1PZmk8L.js} +4 -4
  230. package/dist/{workspace-Cbqz4FzN.js.map → workspace-C1PZmk8L.js.map} +1 -1
  231. package/docs/consumer-skill/SKILL.md +120 -17
  232. package/docs/consumer-skill/examples/detail.tsx +7 -8
  233. package/docs/consumer-skill/examples/manifest.json +14 -0
  234. package/docs/consumer-skill/examples/planning-usage-edit.tsx +29 -0
  235. package/docs/consumer-skill/examples/scoped-directory.tsx +77 -0
  236. package/docs/consumer-skill/references/composition.md +103 -0
  237. package/docs/consumer-skill/references/design-contract.md +4 -3
  238. package/docs/consumer-skill/references/discovery.md +17 -0
  239. package/docs/consumer-skill/references/installation.md +20 -3
  240. package/docs/consumer-skill/references/integration.md +12 -0
  241. package/docs/consumer-skill/references/public-api.json +452 -229
  242. package/docs/consumer-skill/references/review.md +74 -0
  243. package/docs/consumer-skill/references/tokens.json +1 -1
  244. package/docs/consumer-skill/references/workflows.md +97 -1
  245. package/docs/consumer-skill/scripts/check-composition.mjs +31 -0
  246. package/docs/consumer-skill/scripts/composition-policy.mjs +155 -0
  247. package/docs/consumer-skill/scripts/discovery.mjs +6 -1
  248. package/docs/consumer-skill/scripts/surface-policy.mjs +22 -0
  249. package/package.json +24 -3
  250. package/dist/affordance-geometry.generated-DXl-Zb3Z.js.map +0 -1
  251. package/dist/avatar-CsnWaYmt.js.map +0 -1
  252. package/dist/choice-inputs-CavA-SGV.js.map +0 -1
  253. package/dist/containers-CPNyNo1_.js.map +0 -1
  254. package/dist/feedback-a9j9J-9A.js +0 -391
  255. package/dist/feedback-a9j9J-9A.js.map +0 -1
  256. package/dist/smart-card-B5FcKODh.js.map +0 -1
  257. package/dist/structure.recipes-DjqnBpwz.js.map +0 -1
@@ -0,0 +1,233 @@
1
+ "use client";
2
+ import { t as e } from "./utils-C2EKeIw3.js";
3
+ import { n as t } from "./buttons-Co6GavvM.js";
4
+ import { a as n } from "./typography-Cv8MT-82.js";
5
+ import { t as r } from "./structure-MvKVq-oL.js";
6
+ import { t as i } from "./progress-BOe8l_FZ.js";
7
+ import { t as a } from "./skeleton-CmT1ppqb.js";
8
+ import { forwardRef as o } from "react";
9
+ import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
10
+ import { AlertCircle as u, Loader2 as d } from "lucide-react";
11
+ import { cva as f } from "class-variance-authority";
12
+ //#region src/components/ui/empty.tsx
13
+ function p({ className: t, ...n }) {
14
+ return /* @__PURE__ */ c("div", {
15
+ "data-slot": "empty",
16
+ className: e("gap-4 rounded-lg border-dashed p-12 flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance", t),
17
+ ...n
18
+ });
19
+ }
20
+ function m({ className: t, ...n }) {
21
+ return /* @__PURE__ */ c("div", {
22
+ "data-slot": "empty-header",
23
+ className: e("gap-2 flex max-w-sm flex-col items-center", t),
24
+ ...n
25
+ });
26
+ }
27
+ var h = f("mb-space-md flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0", {
28
+ variants: { variant: {
29
+ default: "bg-transparent",
30
+ icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6"
31
+ } },
32
+ defaultVariants: { variant: "default" }
33
+ });
34
+ function g({ className: t, variant: n = "default", ...r }) {
35
+ return /* @__PURE__ */ c("div", {
36
+ "data-slot": "empty-icon",
37
+ "data-variant": n,
38
+ className: e(h({
39
+ variant: n,
40
+ className: t
41
+ })),
42
+ ...r
43
+ });
44
+ }
45
+ function _({ className: t, ...n }) {
46
+ return /* @__PURE__ */ c("div", {
47
+ "data-slot": "empty-title",
48
+ className: e("text-lg font-medium tracking-tight", t),
49
+ ...n
50
+ });
51
+ }
52
+ function v({ className: t, ...n }) {
53
+ return /* @__PURE__ */ c("div", {
54
+ "data-slot": "empty-description",
55
+ className: e("text-sm/relaxed text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", t),
56
+ ...n
57
+ });
58
+ }
59
+ function y({ className: t, ...n }) {
60
+ return /* @__PURE__ */ c("div", {
61
+ "data-slot": "empty-content",
62
+ className: e("gap-4 text-sm flex w-full max-w-sm min-w-0 flex-col items-center text-balance", t),
63
+ ...n
64
+ });
65
+ }
66
+ //#endregion
67
+ //#region src/components/base/feedback/empty.tsx
68
+ function b(e) {
69
+ return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
70
+ }
71
+ function x({ className: t, ...n }) {
72
+ return /* @__PURE__ */ c(p, {
73
+ className: e("empty--component gap-space-lg rounded-radius-lg p-surface", t),
74
+ ...n
75
+ });
76
+ }
77
+ function S({ className: t, ...n }) {
78
+ return /* @__PURE__ */ c(m, {
79
+ className: e("empty-header--component gap-normal", t),
80
+ ...n
81
+ });
82
+ }
83
+ function C({ className: t, ...n }) {
84
+ return /* @__PURE__ */ c(g, {
85
+ className: e("empty-media--component mb-space-sm", t),
86
+ ...n
87
+ });
88
+ }
89
+ function w({ className: t, headingLevel: r = 3, role: i, "aria-level": a, children: o, ...s }) {
90
+ let l = i ?? "heading";
91
+ return /* @__PURE__ */ c(_, {
92
+ role: l,
93
+ "aria-level": a ?? (l === "heading" ? r : void 0),
94
+ className: e("empty-title--component tracking-normal", t),
95
+ ...s,
96
+ children: b(o) ? /* @__PURE__ */ c(n, {
97
+ tag: "span",
98
+ size: "base",
99
+ weight: "semibold",
100
+ lineHeight: "tight",
101
+ children: o
102
+ }) : o
103
+ });
104
+ }
105
+ function T({ className: t, children: r, ...i }) {
106
+ return /* @__PURE__ */ c(v, {
107
+ className: e("empty-description--component", t),
108
+ ...i,
109
+ children: b(r) ? /* @__PURE__ */ c(n, {
110
+ tag: "span",
111
+ type: "secondary",
112
+ lineHeight: "relaxed",
113
+ children: r
114
+ }) : r
115
+ });
116
+ }
117
+ function E({ className: t, children: r, ...i }) {
118
+ return /* @__PURE__ */ c(y, {
119
+ className: e("empty-content--component gap-space-md", t),
120
+ ...i,
121
+ children: b(r) ? /* @__PURE__ */ c(n, { children: r }) : r
122
+ });
123
+ }
124
+ x.displayName = "Empty", S.displayName = "EmptyHeader", C.displayName = "EmptyMedia", w.displayName = "EmptyTitle", T.displayName = "EmptyDescription", E.displayName = "EmptyContent";
125
+ //#endregion
126
+ //#region src/components/base/feedback/state-display.tsx
127
+ var D = {
128
+ inline: "w-full max-w-full py-row-y",
129
+ panel: "w-full rounded-radius-lg border p-surface"
130
+ }, O = {
131
+ neutral: "border-border bg-card",
132
+ destructive: "border-destructive/30 bg-destructive/5"
133
+ };
134
+ function k(e) {
135
+ return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
136
+ }
137
+ var A = o(function({ componentClassName: t, variant: i, tone: a, icon: o, title: s, description: u, action: d, details: f, className: p, ...m }, h) {
138
+ let g = t.replace("--component", "");
139
+ return /* @__PURE__ */ l("div", {
140
+ ref: h,
141
+ "data-variant": i,
142
+ "data-tone": a,
143
+ className: e(t, "grid min-w-0 grid-cols-[auto_minmax(0,1fr)] items-start gap-x-space-sm", "sm:grid-cols-[auto_minmax(0,1fr)_auto]", D[i], i === "panel" && O[a], p),
144
+ ...m,
145
+ children: [
146
+ /* @__PURE__ */ c("span", {
147
+ "aria-hidden": "true",
148
+ className: e(`${g}--icon`, "mt-space-2xs inline-flex size-icon shrink-0 items-center justify-center"),
149
+ children: o
150
+ }),
151
+ (s !== void 0 || u !== void 0) && /* @__PURE__ */ l("div", {
152
+ className: e(`${g}--message`, "grid min-w-0", i === "inline" ? "gap-dense" : "gap-normal"),
153
+ children: [s !== void 0 && (k(s) ? /* @__PURE__ */ c(n, {
154
+ tag: "span",
155
+ weight: "semibold",
156
+ className: e(`${g}--title`, "block min-w-0"),
157
+ children: s
158
+ }) : /* @__PURE__ */ c("div", {
159
+ className: e(`${g}--title`, "min-w-0"),
160
+ children: s
161
+ })), u !== void 0 && (k(u) ? /* @__PURE__ */ c(n, {
162
+ tag: "span",
163
+ size: i === "inline" ? "xs" : void 0,
164
+ type: "secondary",
165
+ className: e(`${g}--description`, "block min-w-0"),
166
+ children: u
167
+ }) : /* @__PURE__ */ c("div", {
168
+ className: e(`${g}--description`, "min-w-0"),
169
+ children: u
170
+ }))]
171
+ }),
172
+ d !== void 0 && /* @__PURE__ */ c("div", {
173
+ className: e(`${g}--action`, "col-start-2 row-start-2 mt-space-sm justify-self-start", "sm:col-start-3 sm:row-start-1 sm:mt-0 sm:justify-self-end sm:self-start"),
174
+ children: d
175
+ }),
176
+ f !== void 0 && /* @__PURE__ */ c(r, {
177
+ gap: "md",
178
+ className: e(`${g}--details`, "col-start-2 col-end-[-1] mt-space-md"),
179
+ children: f
180
+ })
181
+ ]
182
+ });
183
+ });
184
+ A.displayName = "StateDisplayFrame";
185
+ var j = o(function({ label: e, description: t, progress: n, variant: r = "inline", skeleton: o = !1, lines: u = 3, icon: f, className: p, ...m }, h) {
186
+ let g = typeof n == "number" ? Math.min(100, Math.max(0, n)) : void 0;
187
+ return /* @__PURE__ */ c(A, {
188
+ ref: h,
189
+ role: "status",
190
+ "aria-live": "polite",
191
+ componentClassName: "loading-state--component",
192
+ variant: r,
193
+ tone: "neutral",
194
+ icon: f ?? /* @__PURE__ */ c(d, { className: "size-icon animate-spin text-muted-foreground" }),
195
+ title: e,
196
+ description: t,
197
+ details: g !== void 0 || o ? /* @__PURE__ */ l(s, { children: [g !== void 0 && /* @__PURE__ */ c(i, {
198
+ value: g,
199
+ size: "sm",
200
+ showValue: !1,
201
+ "aria-label": typeof e == "string" ? e : void 0
202
+ }), o === !0 ? /* @__PURE__ */ c(a, { lines: u }) : o] }) : void 0,
203
+ className: p,
204
+ ...m
205
+ });
206
+ });
207
+ j.displayName = "LoadingState";
208
+ var M = o(function({ title: e, description: n, action: r, onRetry: i, retryLabel: a, variant: o = "panel", icon: s, className: l, ...d }, f) {
209
+ return /* @__PURE__ */ c(A, {
210
+ ref: f,
211
+ role: "alert",
212
+ componentClassName: "error-state--component",
213
+ variant: o,
214
+ tone: "destructive",
215
+ icon: s ?? /* @__PURE__ */ c(u, { className: "size-icon text-destructive" }),
216
+ title: e,
217
+ description: n,
218
+ action: r ?? (i && a ? /* @__PURE__ */ c(t, {
219
+ type: "button",
220
+ tone: "destructive",
221
+ buttonStyle: "ghost",
222
+ onClick: i,
223
+ children: a
224
+ }) : void 0),
225
+ className: l,
226
+ ...d
227
+ });
228
+ });
229
+ M.displayName = "ErrorState";
230
+ //#endregion
231
+ export { T as a, w as c, E as i, j as n, S as o, x as r, C as s, M as t };
232
+
233
+ //# sourceMappingURL=feedback-DWUkgEjR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-DWUkgEjR.js","names":["Empty","EmptyHeader","EmptyMedia","EmptyTitle","EmptyDescription","EmptyContent","isSimpleText","EmptyPrimitive","EmptyHeaderPrimitive","EmptyMediaPrimitive","EmptyTitlePrimitive","EmptyDescriptionPrimitive","EmptyContentPrimitive","_Fragment","cn","Button","Text","Stack","Progress","ContentSkeleton","Fragment$1","Empty$1","props","className","EmptyHeader$1","emptyMediaVariants","cva","EmptyMedia$1","variant","EmptyTitle$1","EmptyDescription$1","EmptyContent$1","isSimpleText$1","value","Empty","EmptyHeader","EmptyMedia","EmptyTitle","ariaLevel","resolvedRole","role","headingLevel","children","EmptyDescription","EmptyContent","frameVariantClass","frameToneClass","isSimpleText","StateDisplayFrame","forwardRef","regionPrefix","componentClassName","tone","icon","title","description","action","details","LoadingState","resolvedProgress","progress","Loader2","label","skeleton","ErrorState","AlertCircle","onRetry","retryLabel"],"sources":["../src/components/ui/empty.tsx","../src/components/base/feedback/empty.tsx","../src/components/base/feedback/state-display.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"gap-4 rounded-lg border-dashed p-12 flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\n \"gap-2 flex max-w-sm flex-col items-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"mb-space-md flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-lg font-medium tracking-tight\", className)}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-sm/relaxed text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"gap-4 text-sm flex w-full max-w-sm min-w-0 flex-col items-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n}\n","/**\n * Tokenized low-level empty-state parts.\n *\n * Use the blocks `EmptyState` for an opinionated ready-made state. These\n * parts are for consumers that need to assemble their own media/content/action\n * anatomy without importing the internal shadcn primitive.\n */\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport {\n\tEmpty as EmptyPrimitive,\n\tEmptyContent as EmptyContentPrimitive,\n\tEmptyDescription as EmptyDescriptionPrimitive,\n\tEmptyHeader as EmptyHeaderPrimitive,\n\tEmptyMedia as EmptyMediaPrimitive,\n\tEmptyTitle as EmptyTitlePrimitive,\n} from '../../ui/empty';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nexport type EmptyProps = ComponentProps<typeof EmptyPrimitive>;\nexport type EmptyContentProps = ComponentProps<typeof EmptyContentPrimitive>;\nexport type EmptyDescriptionProps = ComponentProps<typeof EmptyDescriptionPrimitive>;\nexport type EmptyHeaderProps = ComponentProps<typeof EmptyHeaderPrimitive>;\nexport type EmptyMediaProps = ComponentProps<typeof EmptyMediaPrimitive>;\nexport interface EmptyTitleProps extends ComponentProps<typeof EmptyTitlePrimitive> {\n\t/** Accessible heading level used by the default `role=\"heading\"` output. */\n\theadingLevel?: 2 | 3 | 4 | 5 | 6;\n}\n\nfunction isSimpleText(value: ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\n/** Root layout for a consumer-blocks empty state. */\nexport function Empty({ className, ...props }: EmptyProps) {\n\treturn (\n\t\t<EmptyPrimitive\n\t\t\tclassName={cn('empty--component gap-space-lg rounded-radius-lg p-surface', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/** Centered title and description stack. */\nexport function EmptyHeader({ className, ...props }: EmptyHeaderProps) {\n\treturn <EmptyHeaderPrimitive className={cn('empty-header--component gap-normal', className)} {...props} />;\n}\n\n/** Optional icon or illustration region. */\nexport function EmptyMedia({ className, ...props }: EmptyMediaProps) {\n\treturn <EmptyMediaPrimitive className={cn('empty-media--component mb-space-sm', className)} {...props} />;\n}\n\n/** Empty-state heading calibrated to the admin typography scale. */\nexport function EmptyTitle({ className, headingLevel = 3, role, 'aria-level': ariaLevel, children, ...props }: EmptyTitleProps) {\n\tconst resolvedRole = role ?? 'heading';\n\treturn (\n\t\t<EmptyTitlePrimitive\n\t\t\trole={resolvedRole}\n\t\t\taria-level={ariaLevel ?? (resolvedRole === 'heading' ? headingLevel : undefined)}\n\t\t\tclassName={cn('empty-title--component tracking-normal', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" size=\"base\" weight=\"semibold\" lineHeight=\"tight\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</EmptyTitlePrimitive>\n\t);\n}\n\n/** Supporting explanation for the absence of content. */\nexport function EmptyDescription({ className, children, ...props }: EmptyDescriptionProps) {\n\treturn (\n\t\t<EmptyDescriptionPrimitive className={cn('empty-description--component', className)} {...props}>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" type=\"secondary\" lineHeight=\"relaxed\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</EmptyDescriptionPrimitive>\n\t);\n}\n\n/** Actions or next-step content rendered below the explanation. */\nexport function EmptyContent({ className, children, ...props }: EmptyContentProps) {\n\treturn (\n\t\t<EmptyContentPrimitive className={cn('empty-content--component gap-space-md', className)} {...props}>\n\t\t\t{isSimpleText(children) ? <Text>{children}</Text> : children}\n\t\t</EmptyContentPrimitive>\n\t);\n}\n\nEmpty.displayName = 'Empty';\nEmptyHeader.displayName = 'EmptyHeader';\nEmptyMedia.displayName = 'EmptyMedia';\nEmptyTitle.displayName = 'EmptyTitle';\nEmptyDescription.displayName = 'EmptyDescription';\nEmptyContent.displayName = 'EmptyContent';\n","/**\n * Shared async-state presentations for bounded admin surfaces.\n *\n * `inline` is a compact, chrome-free status for menus, table regions, and\n * existing panels. `panel` owns one deliberate frame so consumers do not\n * have to recreate card padding around loading and error states. Loading and\n * error use the same icon/message/action grid, which keeps transitions between\n * states visually stable.\n */\nimport { AlertCircle, Loader2 } from 'lucide-react';\nimport {\n\tforwardRef,\n\ttype ComponentPropsWithoutRef,\n\ttype ReactNode,\n} from 'react';\n\nimport { Button } from '../buttons';\nimport { Stack } from '../structure';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nimport { Progress } from './progress';\nimport { ContentSkeleton } from '../skeleton/skeleton';\n\ntype DivProps = ComponentPropsWithoutRef<'div'>;\ntype StateDisplayVariant = 'inline' | 'panel';\ntype StateDisplayTone = 'neutral' | 'destructive';\n\ninterface StateDisplayFrameProps extends Omit<DivProps, 'title'> {\n\tcomponentClassName: string;\n\t/** Which state is shown — loading, empty, or error. */\n\tvariant: StateDisplayVariant;\n\ttone: StateDisplayTone;\n\t/** Glyph shown above the message. */\n\ticon: ReactNode;\n\t/** Heading above the description. */\n\ttitle?: ReactNode;\n\t/** Supporting copy under the label. */\n\tdescription?: ReactNode;\n\t/** Control offered alongside the message. */\n\taction?: ReactNode;\n\tdetails?: ReactNode;\n}\n\nconst frameVariantClass: Record<StateDisplayVariant, string> = {\n\tinline: 'w-full max-w-full py-row-y',\n\tpanel: 'w-full rounded-radius-lg border p-surface',\n};\n\nconst frameToneClass: Record<StateDisplayTone, string> = {\n\tneutral: 'border-border bg-card',\n\tdestructive: 'border-destructive/30 bg-destructive/5',\n};\n\nfunction isSimpleText(value: ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\nconst StateDisplayFrame = forwardRef<HTMLDivElement, StateDisplayFrameProps>(\n\tfunction StateDisplayFrame({\n\t\tcomponentClassName,\n\t\tvariant,\n\t\ttone,\n\t\ticon,\n\t\ttitle,\n\t\tdescription,\n\t\taction,\n\t\tdetails,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst regionPrefix = componentClassName.replace('--component', '');\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-variant={variant}\n\t\t\t\tdata-tone={tone}\n\t\t\t\tclassName={cn(\n\t\t\t\t\tcomponentClassName,\n\t\t\t\t\t'grid min-w-0 grid-cols-[auto_minmax(0,1fr)] items-start gap-x-space-sm',\n\t\t\t\t\t'sm:grid-cols-[auto_minmax(0,1fr)_auto]',\n\t\t\t\t\tframeVariantClass[variant],\n\t\t\t\t\tvariant === 'panel' && frameToneClass[tone],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t`${regionPrefix}--icon`,\n\t\t\t\t\t\t'mt-space-2xs inline-flex size-icon shrink-0 items-center justify-center',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{icon}\n\t\t\t\t</span>\n\t\t\t\t{(title !== undefined || description !== undefined) && (\n\t\t\t\t\t<div className={cn(`${regionPrefix}--message`, 'grid min-w-0', variant === 'inline' ? 'gap-dense' : 'gap-normal')}>\n\t\t\t\t\t\t{title !== undefined && (\n\t\t\t\t\t\t\tisSimpleText(title) ? (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" weight=\"semibold\" className={cn(`${regionPrefix}--title`, 'block min-w-0')}>\n\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t) : <div className={cn(`${regionPrefix}--title`, 'min-w-0')}>{title}</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{description !== undefined && (\n\t\t\t\t\t\t\tisSimpleText(description) ? (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\tsize={variant === 'inline' ? 'xs' : undefined}\n\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\tclassName={cn(`${regionPrefix}--description`, 'block min-w-0')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<div className={cn(`${regionPrefix}--description`, 'min-w-0')}>\n\t\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{action !== undefined && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t`${regionPrefix}--action`,\n\t\t\t\t\t\t\t'col-start-2 row-start-2 mt-space-sm justify-self-start',\n\t\t\t\t\t\t\t'sm:col-start-3 sm:row-start-1 sm:mt-0 sm:justify-self-end sm:self-start',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{action}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{details !== undefined && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tgap=\"md\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t`${regionPrefix}--details`,\n\t\t\t\t\t\t\t'col-start-2 col-end-[-1] mt-space-md',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{details}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\nStateDisplayFrame.displayName = 'StateDisplayFrame';\n\nexport type LoadingStateVariant = StateDisplayVariant;\n\nexport interface LoadingStateProps extends DivProps {\n\t/** Primary line of the state message. */\n\tlabel?: ReactNode;\n\t/** Supporting copy under the label. */\n\tdescription?: ReactNode;\n\t/** Completion percentage, 0-100, for determinate loading. */\n\tprogress?: number;\n\t/** Which state is shown — loading, empty, or error. */\n\tvariant?: LoadingStateVariant;\n\t/** Renders placeholder bars instead of a message. */\n\tskeleton?: boolean | ReactNode;\n\t/** How many skeleton bars to draw. */\n\tlines?: number;\n\t/** Glyph shown above the message. */\n\ticon?: ReactNode;\n}\n\nexport const LoadingState = forwardRef<HTMLDivElement, LoadingStateProps>(\n\tfunction LoadingState({\n\t\tlabel,\n\t\tdescription,\n\t\tprogress,\n\t\tvariant = 'inline',\n\t\tskeleton = false,\n\t\tlines = 3,\n\t\ticon,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst resolvedProgress = typeof progress === 'number'\n\t\t\t? Math.min(100, Math.max(0, progress))\n\t\t\t: undefined;\n\t\tconst details = resolvedProgress !== undefined || skeleton\n\t\t\t? (\n\t\t\t\t<>\n\t\t\t\t\t{resolvedProgress !== undefined && (\n\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\tvalue={resolvedProgress}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tshowValue={false}\n\t\t\t\t\t\t\taria-label={typeof label === 'string' ? label : undefined}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{skeleton === true ? <ContentSkeleton lines={lines} /> : skeleton}\n\t\t\t\t</>\n\t\t\t)\n\t\t\t: undefined;\n\n\t\treturn (\n\t\t\t<StateDisplayFrame\n\t\t\t\tref={ref}\n\t\t\t\trole=\"status\"\n\t\t\t\taria-live=\"polite\"\n\t\t\t\tcomponentClassName=\"loading-state--component\"\n\t\t\t\tvariant={variant}\n\t\t\t\ttone=\"neutral\"\n\t\t\t\ticon={icon ?? (\n\t\t\t\t\t<Loader2 className=\"size-icon animate-spin text-muted-foreground\" />\n\t\t\t\t)}\n\t\t\t\ttitle={label}\n\t\t\t\tdescription={description}\n\t\t\t\tdetails={details}\n\t\t\t\tclassName={className}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nLoadingState.displayName = 'LoadingState';\n\nexport type ErrorStateVariant = StateDisplayVariant;\n\nexport interface ErrorStateProps extends Omit<DivProps, 'title'> {\n\t/** Heading above the description. */\n\ttitle?: ReactNode;\n\t/** Supporting copy under the label. */\n\tdescription?: ReactNode;\n\t/** Control offered alongside the message. */\n\taction?: ReactNode;\n\tonRetry?: () => void;\n\t/** Copy for the retry action in the error state. */\n\tretryLabel?: ReactNode;\n\t/** Which state is shown — loading, empty, or error. */\n\tvariant?: ErrorStateVariant;\n\t/** Glyph shown above the message. */\n\ticon?: ReactNode;\n}\n\nexport const ErrorState = forwardRef<HTMLDivElement, ErrorStateProps>(\n\tfunction ErrorState({\n\t\ttitle,\n\t\tdescription,\n\t\taction,\n\t\tonRetry,\n\t\tretryLabel,\n\t\tvariant = 'panel',\n\t\ticon,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst retryAction = action ?? (onRetry && retryLabel ? (\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\ttone=\"destructive\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tonClick={onRetry}\n\t\t\t>\n\t\t\t\t{retryLabel}\n\t\t\t</Button>\n\t\t) : undefined);\n\n\t\treturn (\n\t\t\t<StateDisplayFrame\n\t\t\t\tref={ref}\n\t\t\t\trole=\"alert\"\n\t\t\t\tcomponentClassName=\"error-state--component\"\n\t\t\t\tvariant={variant}\n\t\t\t\ttone=\"destructive\"\n\t\t\t\ticon={icon ?? <AlertCircle className=\"size-icon text-destructive\" />}\n\t\t\t\ttitle={title}\n\t\t\t\tdescription={description}\n\t\t\t\taction={retryAction}\n\t\t\t\tclassName={className}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nErrorState.displayName = 'ErrorState';\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./affordance-geometry.generated-DXl-Zb3Z.js";
1
+ import { t as e } from "./affordance-geometry.generated-D8Jcfb0G.js";
2
2
  //#region src/lib/field-affordance-recipes.ts
3
3
  var t = {
4
4
  target: "inline-flex size-control-clear shrink-0 items-center justify-center rounded-inner p-0 outline-none transition-[color,box-shadow]",
@@ -14,4 +14,4 @@ var t = {
14
14
  //#endregion
15
15
  export { t };
16
16
 
17
- //# sourceMappingURL=field-affordance-recipes-CHdUtn2Z.js.map
17
+ //# sourceMappingURL=field-affordance-recipes-IjzPrCTw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field-affordance-recipes-CHdUtn2Z.js","names":["affordanceGeometry","fieldAffordanceRecipes"],"sources":["../src/lib/field-affordance-recipes.ts"],"sourcesContent":["import { affordanceGeometry } from './affordance-geometry.generated';\n\n/** Field affordances have one target/clearance owner. Primitives own behavior. */\nexport const fieldAffordanceRecipes = {\n\ttarget: 'inline-flex size-control-clear shrink-0 items-center justify-center rounded-inner p-0 outline-none transition-[color,box-shadow]',\n\tfocus: 'focus-visible:z-10 focus-visible:border-input focus-visible:ring-2 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\tclear: 'text-muted-foreground hover:text-foreground',\n\ttoggle: 'text-muted-foreground hover:bg-accent hover:text-accent-foreground',\n\ticon: 'size-control-clear-icon shrink-0 max-h-full max-w-full',\n\tcentered: 'absolute top-1/2 -translate-y-1/2',\n\tclearEnd: affordanceGeometry.clearEnd,\n\tclearPadding: affordanceGeometry.clearPadding,\n\ttogglePadding: affordanceGeometry.togglePadding,\n} as const;\n"],"mappings":";;AAGA,IAAaC,IAAyB;CACrC,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,MAAM;CACN,UAAU;CACV,UAAUD,EAAmB;CAC7B,cAAcA,EAAmB;CACjC,eAAeA,EAAmB;AACnC"}
1
+ {"version":3,"file":"field-affordance-recipes-IjzPrCTw.js","names":["affordanceGeometry","fieldAffordanceRecipes"],"sources":["../src/lib/field-affordance-recipes.ts"],"sourcesContent":["import { affordanceGeometry } from './affordance-geometry.generated';\n\n/** Field affordances have one target/clearance owner. Primitives own behavior. */\nexport const fieldAffordanceRecipes = {\n\ttarget: 'inline-flex size-control-clear shrink-0 items-center justify-center rounded-inner p-0 outline-none transition-[color,box-shadow]',\n\tfocus: 'focus-visible:z-10 focus-visible:border-input focus-visible:ring-2 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\tclear: 'text-muted-foreground hover:text-foreground',\n\ttoggle: 'text-muted-foreground hover:bg-accent hover:text-accent-foreground',\n\ticon: 'size-control-clear-icon shrink-0 max-h-full max-w-full',\n\tcentered: 'absolute top-1/2 -translate-y-1/2',\n\tclearEnd: affordanceGeometry.clearEnd,\n\tclearPadding: affordanceGeometry.clearPadding,\n\ttogglePadding: affordanceGeometry.togglePadding,\n} as const;\n"],"mappings":";;AAGA,IAAaC,IAAyB;CACrC,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,MAAM;CACN,UAAU;CACV,UAAUD,EAAmB;CAC7B,cAAcA,EAAmB;CACjC,eAAeA,EAAmB;AACnC"}
@@ -3,18 +3,18 @@ import { useStrings as e } from "./lib/strings.js";
3
3
  import { t } from "./utils-C2EKeIw3.js";
4
4
  import { n } from "./buttons-Co6GavvM.js";
5
5
  import { a as r, n as i, r as a } from "./typography-Cv8MT-82.js";
6
- import { r as o, t as s } from "./structure-BvW4vG4H.js";
7
- import { n as c, t as l } from "./feedback-a9j9J-9A.js";
6
+ import { r as o, t as s } from "./structure-MvKVq-oL.js";
7
+ import { n as c, t as l } from "./feedback-DWUkgEjR.js";
8
8
  import { _ as u, g as d, m as f } from "./primitives-DKPOGVpj.js";
9
9
  import { t as p } from "./number-BNT_BIzJ.js";
10
10
  import { n as m, t as h } from "./date-BFNMnrS5.js";
11
11
  import { t as g } from "./badge-BZXZT9wd.js";
12
- import { a as _, i as v, n as y, o as b, r as x, s as S, t as C } from "./command-D0kWBZfd.js";
13
- import { t as w } from "./input-DMorJiTI.js";
14
- import { t as T } from "./date-picker-DI6kPNof.js";
15
- import { a as E, c as D, i as O, o as k, r as A, t as j } from "./popover-TInGXsjg.js";
16
- import { i as M, r as N, t as P } from "./tabs-DY09eoZg.js";
17
- import { t as F } from "./popover-menu-BzqXqE72.js";
12
+ import { a as _, i as v, n as y, o as b, r as x, s as S, t as C } from "./command-C0xe7u9B.js";
13
+ import { t as w } from "./input-WwYQZJzG.js";
14
+ import { t as T } from "./date-picker-CA6ogMQB.js";
15
+ import { a as E, c as D, i as O, o as k, r as A, t as j } from "./popover-CoLDEg19.js";
16
+ import { i as M, r as N, t as P } from "./tabs-B5cNMWiP.js";
17
+ import { t as F } from "./popover-menu-GLIQTJTx.js";
18
18
  import { t as I } from "./use-debounced-callback-Cx1h-hdv.js";
19
19
  import { t as L } from "./use-debounce-DZ_1ZBPa.js";
20
20
  import R, { Component as ee, createContext as te, useCallback as z, useContext as ne, useEffect as B, useId as re, useMemo as V, useRef as H, useState as U } from "react";
@@ -2200,4 +2200,4 @@ function Et(e, t) {
2200
2200
  //#endregion
2201
2201
  export { Ce as A, Oe as C, xe as D, Se as E, _e as F, me as I, he as L, ve as M, Z as N, we as O, X as P, Y as R, ke as S, Q as T, $ as _, St as a, Le as b, bt as c, nt as d, et as f, Ye as g, Ze as h, Ct as i, ye as j, be as k, ot as l, Qe as m, Tt as n, xt as o, $e as p, wt as r, yt as s, Et as t, rt as u, He as v, De as w, Ae as x, ze as y };
2202
2202
 
2203
- //# sourceMappingURL=filters-qtrcv1hf.js.map
2203
+ //# sourceMappingURL=filters-BhsUtsxW.js.map