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.
- package/CHANGELOG.md +53 -1
- package/README.md +39 -6
- package/dist/{accordion-BRWh3BM1.js → accordion-B-5Focs8.js} +2 -2
- package/dist/{accordion-BRWh3BM1.js.map → accordion-B-5Focs8.js.map} +1 -1
- package/dist/{affordance-geometry.generated-DXl-Zb3Z.js → affordance-geometry.generated-D8Jcfb0G.js} +10 -1
- package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +1 -0
- package/dist/{ai-artifact-DkOArd3-.js → ai-artifact-B5tPpXnS.js} +5 -5
- package/dist/{ai-artifact-DkOArd3-.js.map → ai-artifact-B5tPpXnS.js.map} +1 -1
- package/dist/{app-shell-BH_bGcE2.js → app-shell-at8Kt4l_.js} +3 -3
- package/dist/{app-shell-BH_bGcE2.js.map → app-shell-at8Kt4l_.js.map} +1 -1
- package/dist/{attachment-DsLgNHXt.js → attachment-BO2R47wn.js} +2 -2
- package/dist/{attachment-DsLgNHXt.js.map → attachment-BO2R47wn.js.map} +1 -1
- package/dist/{auth-BDB1V_2q.js → auth-OFwWSAap.js} +4 -4
- package/dist/{auth-BDB1V_2q.js.map → auth-OFwWSAap.js.map} +1 -1
- package/dist/{avatar-CsnWaYmt.js → avatar-Bpzty83c.js} +73 -68
- package/dist/avatar-Bpzty83c.js.map +1 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/cards.js +2 -2
- package/dist/base/cascader.js +6 -6
- package/dist/base/choice-inputs.js +3 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +1 -1
- package/dist/base/feedback.js +4 -3
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +236 -0
- package/dist/base/inline-edit.js.map +1 -0
- package/dist/base/media-gallery.js +1 -1
- package/dist/base/navigation.js +3 -3
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/repeaters.js +4 -4
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +1 -1
- package/dist/base/signature-pad.js +3 -3
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +1 -1
- package/dist/base/structure.js +1 -1
- package/dist/base/text-inputs.js +2 -2
- package/dist/base/tree.js +1 -1
- package/dist/base/upload-queue.js +1 -1
- package/dist/base/upload.js +3 -3
- package/dist/base/value-inputs.js +1 -1
- package/dist/blocks/admin.js +6 -6
- package/dist/blocks/ai.js +6 -6
- package/dist/blocks/analytics/usage-card.js +3 -0
- package/dist/blocks/analytics.js +361 -360
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +1 -1
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +15 -15
- package/dist/blocks/data-display.js +1 -1
- package/dist/blocks/onboarding.js +3 -3
- package/dist/blocks/planning.js +311 -0
- package/dist/blocks/planning.js.map +1 -0
- package/dist/blocks/timelines.js +1 -1
- package/dist/{cards-BMB0laLG.js → cards-Cum56XOF.js} +3 -3
- package/dist/{cards-BMB0laLG.js.map → cards-Cum56XOF.js.map} +1 -1
- package/dist/checkbox-BavDRjF7.js +34 -0
- package/dist/checkbox-BavDRjF7.js.map +1 -0
- package/dist/{choice-inputs-CavA-SGV.js → choice-inputs-CC7XqPQO.js} +166 -191
- package/dist/choice-inputs-CC7XqPQO.js.map +1 -0
- package/dist/{code-block-DIlqzoiD.js → code-block-xHKbAJDj.js} +2 -2
- package/dist/{code-block-DIlqzoiD.js.map → code-block-xHKbAJDj.js.map} +1 -1
- package/dist/{combobox-HDftpzxt.js → combobox-DEbdr-3u.js} +2 -2
- package/dist/{combobox-HDftpzxt.js.map → combobox-DEbdr-3u.js.map} +1 -1
- package/dist/{combobox-CHD750do.js → combobox-xv3yJbzl.js} +7 -7
- package/dist/{combobox-CHD750do.js.map → combobox-xv3yJbzl.js.map} +1 -1
- package/dist/{command-D0kWBZfd.js → command-C0xe7u9B.js} +2 -2
- package/dist/{command-D0kWBZfd.js.map → command-C0xe7u9B.js.map} +1 -1
- package/dist/{comments-CvYeglMS.js → comments-DviPLnwy.js} +8 -8
- package/dist/{comments-CvYeglMS.js.map → comments-DviPLnwy.js.map} +1 -1
- package/dist/components/base/cards/smart-card.types.d.ts +2 -0
- package/dist/components/base/inline-edit/index.d.ts +2 -0
- package/dist/components/base/inline-edit/inline-edit.d.ts +81 -0
- package/dist/components/base/inline-edit/inline-edit.recipes.d.ts +6 -0
- package/dist/components/base/structure/structure.recipes.d.ts +6 -0
- package/dist/components/blocks/analytics/index.d.ts +1 -0
- package/dist/components/blocks/analytics/usage-card/index.d.ts +3 -0
- package/dist/components/blocks/analytics/usage-card/types.d.ts +52 -0
- package/dist/components/blocks/analytics/usage-card/usage-card.d.ts +6 -0
- package/dist/components/blocks/analytics/usage-card/usage-card.data.d.ts +19 -0
- package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +22 -0
- package/dist/components/blocks/planning/index.d.ts +3 -0
- package/dist/components/blocks/planning/task-card.d.ts +3 -0
- package/dist/components/blocks/planning/task-card.strings.d.ts +15 -0
- package/dist/components/blocks/planning/task-card.types.d.ts +66 -0
- package/dist/{containers-CPNyNo1_.js → containers-6s-ucRQQ.js} +3 -2
- package/dist/containers-6s-ucRQQ.js.map +1 -0
- package/dist/{data-display-b3d1TfL4.js → data-display-cWIRdeaf.js} +8 -8
- package/dist/{data-display-b3d1TfL4.js.map → data-display-cWIRdeaf.js.map} +1 -1
- package/dist/{date-picker-DI6kPNof.js → date-picker-CA6ogMQB.js} +5 -5
- package/dist/{date-picker-DI6kPNof.js.map → date-picker-CA6ogMQB.js.map} +1 -1
- package/dist/{date-pickers-ByP6Cv2z.js → date-pickers-BPIKLdsD.js} +4 -4
- package/dist/{date-pickers-ByP6Cv2z.js.map → date-pickers-BPIKLdsD.js.map} +1 -1
- package/dist/{display-ByI5tkqy.js → display-CFM5myut.js} +3 -3
- package/dist/{display-ByI5tkqy.js.map → display-CFM5myut.js.map} +1 -1
- package/dist/features/activities.js +4 -4
- package/dist/features/ai-chat.js +4 -4
- package/dist/features/async-preview.js +4 -4
- package/dist/features/combobox.js +1 -1
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +5 -5
- package/dist/features/email-composer.js +11 -11
- package/dist/features/event-calendar.js +2 -2
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +6 -6
- package/dist/features/map.js +3 -3
- package/dist/features/media-library.js +8 -8
- package/dist/features/mentions.js +1 -1
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +43 -42
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +107 -106
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +5 -5
- package/dist/features/resource.js +7 -7
- package/dist/features/rich-text-editor.js +1 -1
- package/dist/features/schema-form.js +11 -11
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +2 -2
- package/dist/features/sync.js +2 -2
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +11 -11
- package/dist/feedback-DWUkgEjR.js +233 -0
- package/dist/feedback-DWUkgEjR.js.map +1 -0
- package/dist/{field-affordance-recipes-CHdUtn2Z.js → field-affordance-recipes-IjzPrCTw.js} +2 -2
- package/dist/{field-affordance-recipes-CHdUtn2Z.js.map → field-affordance-recipes-IjzPrCTw.js.map} +1 -1
- package/dist/{filters-qtrcv1hf.js → filters-BhsUtsxW.js} +9 -9
- package/dist/{filters-qtrcv1hf.js.map → filters-BhsUtsxW.js.map} +1 -1
- package/dist/{form-field-C6W-y2hR.js → form-field-Bn7ZH1rA.js} +2 -2
- package/dist/{form-field-C6W-y2hR.js.map → form-field-Bn7ZH1rA.js.map} +1 -1
- package/dist/{form-sizing-39NohSqn.js → form-sizing-BWs70_a2.js} +4 -3
- package/dist/{form-sizing-39NohSqn.js.map → form-sizing-BWs70_a2.js.map} +1 -1
- package/dist/{forms-BF-HSbff.js → forms-B7pzS25o.js} +5 -5
- package/dist/{forms-BF-HSbff.js.map → forms-B7pzS25o.js.map} +1 -1
- package/dist/{forms-numeric-Y15Bg5Nr.js → forms-numeric-BUBxELBv.js} +18 -18
- package/dist/{forms-numeric-Y15Bg5Nr.js.map → forms-numeric-BUBxELBv.js.map} +1 -1
- package/dist/{header-B8ex54cY.js → header-C59QZyxV.js} +6 -6
- package/dist/{header-B8ex54cY.js.map → header-C59QZyxV.js.map} +1 -1
- package/dist/{hooks-D6UBVzf2.js → hooks-CM1Vp9Pe.js} +2 -2
- package/dist/{hooks-D6UBVzf2.js.map → hooks-CM1Vp9Pe.js.map} +1 -1
- package/dist/{input-DMorJiTI.js → input-WwYQZJzG.js} +3 -3
- package/dist/{input-DMorJiTI.js.map → input-WwYQZJzG.js.map} +1 -1
- package/dist/layout/app-shell.js +1 -1
- package/dist/layout/auth.js +1 -1
- package/dist/layout/containers.js +1 -1
- package/dist/layout/header.js +1 -1
- package/dist/layout/hooks.js +1 -1
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +1 -1
- package/dist/layout/settings.js +1 -1
- package/dist/layout/sidebar.js +2 -2
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +10 -10
- package/dist/lib/affordance-geometry.generated.d.ts +9 -0
- package/dist/{media-gallery-Ca4YmvBi.js → media-gallery-DhDRgnVZ.js} +2 -2
- package/dist/{media-gallery-Ca4YmvBi.js.map → media-gallery-DhDRgnVZ.js.map} +1 -1
- package/dist/{mentions-CRio8mTm.js → mentions-B8Ko-fhS.js} +4 -4
- package/dist/{mentions-CRio8mTm.js.map → mentions-B8Ko-fhS.js.map} +1 -1
- package/dist/{message-B5-6LeYl.js → message-COsdEvXT.js} +2 -2
- package/dist/{message-B5-6LeYl.js.map → message-COsdEvXT.js.map} +1 -1
- package/dist/{navigation-DqEITuD2.js → navigation-BUIn2Qxx.js} +2 -2
- package/dist/{navigation-DqEITuD2.js.map → navigation-BUIn2Qxx.js.map} +1 -1
- package/dist/{navigation-BTrEb5u4.js → navigation-DBEu4POU.js} +3 -3
- package/dist/{navigation-BTrEb5u4.js.map → navigation-DBEu4POU.js.map} +1 -1
- package/dist/{navigation-row-recipes-BFpvGPGE.js → navigation-row-recipes-GVh11KiT.js} +2 -2
- package/dist/{navigation-row-recipes-BFpvGPGE.js.map → navigation-row-recipes-GVh11KiT.js.map} +1 -1
- package/dist/{overlays-DBqV0J_V.js → overlays-B11wZka6.js} +4 -4
- package/dist/{overlays-DBqV0J_V.js.map → overlays-B11wZka6.js.map} +1 -1
- package/dist/{page-BMBGjJY8.js → page-BV6ioQg3.js} +5 -5
- package/dist/{page-BMBGjJY8.js.map → page-BV6ioQg3.js.map} +1 -1
- package/dist/{page-header-BH41wCyY.js → page-header-DQRa0jug.js} +2 -2
- package/dist/{page-header-BH41wCyY.js.map → page-header-DQRa0jug.js.map} +1 -1
- package/dist/{popover-TInGXsjg.js → popover-CoLDEg19.js} +2 -2
- package/dist/{popover-TInGXsjg.js.map → popover-CoLDEg19.js.map} +1 -1
- package/dist/{popover-menu-BzqXqE72.js → popover-menu-GLIQTJTx.js} +4 -4
- package/dist/{popover-menu-BzqXqE72.js.map → popover-menu-GLIQTJTx.js.map} +1 -1
- package/dist/progress-BOe8l_FZ.js +168 -0
- package/dist/progress-BOe8l_FZ.js.map +1 -0
- package/dist/{receipt-DYWTQGEc.js → receipt-BM8xsGFy.js} +3 -3
- package/dist/{receipt-DYWTQGEc.js.map → receipt-BM8xsGFy.js.map} +1 -1
- package/dist/{rich-text-editor-BZSJchAF.js → rich-text-editor-CoVrTiSv.js} +2 -2
- package/dist/{rich-text-editor-BZSJchAF.js.map → rich-text-editor-CoVrTiSv.js.map} +1 -1
- package/dist/services/actions.js +1 -1
- package/dist/{settings-D9f_wdIC.js → settings-BnCyyPOJ.js} +3 -3
- package/dist/{settings-D9f_wdIC.js.map → settings-BnCyyPOJ.js.map} +1 -1
- package/dist/{sheet-vOUloJ4O.js → sheet-B-q914Ad.js} +2 -2
- package/dist/{sheet-vOUloJ4O.js.map → sheet-B-q914Ad.js.map} +1 -1
- package/dist/{sidebar-C3UKkbC5.js → sidebar-C_2p3Tfj.js} +6 -6
- package/dist/{sidebar-C3UKkbC5.js.map → sidebar-C_2p3Tfj.js.map} +1 -1
- package/dist/{sidebar-CNBKFDRW.js → sidebar-DPR7fmqN.js} +4 -4
- package/dist/{sidebar-CNBKFDRW.js.map → sidebar-DPR7fmqN.js.map} +1 -1
- package/dist/{skeleton-BvRhK8y-.js → skeleton-CmT1ppqb.js} +2 -2
- package/dist/{skeleton-BvRhK8y-.js.map → skeleton-CmT1ppqb.js.map} +1 -1
- package/dist/{smart-card-B5FcKODh.js → smart-card-CYLn46e6.js} +119 -118
- package/dist/smart-card-CYLn46e6.js.map +1 -0
- package/dist/{spinner-JtlFJ7Nc.js → spinner-BY9HbUEh.js} +2 -2
- package/dist/{spinner-JtlFJ7Nc.js.map → spinner-BY9HbUEh.js.map} +1 -1
- package/dist/{structure-BvW4vG4H.js → structure-MvKVq-oL.js} +13 -13
- package/dist/{structure-BvW4vG4H.js.map → structure-MvKVq-oL.js.map} +1 -1
- package/dist/{structure.recipes-DjqnBpwz.js → structure.recipes-Bqhf9oIh.js} +2 -2
- package/dist/structure.recipes-Bqhf9oIh.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/{table-ghtAQ-JJ.js → table-BS39xnlq.js} +6 -6
- package/dist/{table-ghtAQ-JJ.js.map → table-BS39xnlq.js.map} +1 -1
- package/dist/{tabs-DY09eoZg.js → tabs-B5cNMWiP.js} +2 -2
- package/dist/{tabs-DY09eoZg.js.map → tabs-B5cNMWiP.js.map} +1 -1
- package/dist/{text-inputs-BhOcedTo.js → text-inputs-Dh9XGyiS.js} +4 -4
- package/dist/{text-inputs-BhOcedTo.js.map → text-inputs-Dh9XGyiS.js.map} +1 -1
- package/dist/{timelines-CnZ2S_Gr.js → timelines-B9ICkQcV.js} +2 -2
- package/dist/{timelines-CnZ2S_Gr.js.map → timelines-B9ICkQcV.js.map} +1 -1
- package/dist/{tree-COD9BGdU.js → tree-BdWSaoFT.js} +2 -2
- package/dist/{tree-COD9BGdU.js.map → tree-BdWSaoFT.js.map} +1 -1
- package/dist/{upload-DIzw1dx1.js → upload-D8Za5x_c.js} +4 -4
- package/dist/{upload-DIzw1dx1.js.map → upload-D8Za5x_c.js.map} +1 -1
- package/dist/{upload-queue-xRJ3qDmd.js → upload-queue-hIIYBLS7.js} +3 -3
- package/dist/{upload-queue-xRJ3qDmd.js.map → upload-queue-hIIYBLS7.js.map} +1 -1
- package/dist/usage-card-DnmnJ58D.js +458 -0
- package/dist/usage-card-DnmnJ58D.js.map +1 -0
- package/dist/{value-inputs-Co1fu-xv.js → value-inputs-DX2dbxjj.js} +7 -7
- package/dist/{value-inputs-Co1fu-xv.js.map → value-inputs-DX2dbxjj.js.map} +1 -1
- package/dist/{workspace-Cbqz4FzN.js → workspace-C1PZmk8L.js} +4 -4
- package/dist/{workspace-Cbqz4FzN.js.map → workspace-C1PZmk8L.js.map} +1 -1
- package/docs/consumer-skill/SKILL.md +120 -17
- package/docs/consumer-skill/examples/detail.tsx +7 -8
- package/docs/consumer-skill/examples/manifest.json +14 -0
- package/docs/consumer-skill/examples/planning-usage-edit.tsx +29 -0
- package/docs/consumer-skill/examples/scoped-directory.tsx +77 -0
- package/docs/consumer-skill/references/composition.md +103 -0
- package/docs/consumer-skill/references/design-contract.md +4 -3
- package/docs/consumer-skill/references/discovery.md +17 -0
- package/docs/consumer-skill/references/installation.md +20 -3
- package/docs/consumer-skill/references/integration.md +12 -0
- package/docs/consumer-skill/references/public-api.json +452 -229
- package/docs/consumer-skill/references/review.md +74 -0
- package/docs/consumer-skill/references/tokens.json +1 -1
- package/docs/consumer-skill/references/workflows.md +97 -1
- package/docs/consumer-skill/scripts/check-composition.mjs +31 -0
- package/docs/consumer-skill/scripts/composition-policy.mjs +155 -0
- package/docs/consumer-skill/scripts/discovery.mjs +6 -1
- package/docs/consumer-skill/scripts/surface-policy.mjs +22 -0
- package/package.json +24 -3
- package/dist/affordance-geometry.generated-DXl-Zb3Z.js.map +0 -1
- package/dist/avatar-CsnWaYmt.js.map +0 -1
- package/dist/choice-inputs-CavA-SGV.js.map +0 -1
- package/dist/containers-CPNyNo1_.js.map +0 -1
- package/dist/feedback-a9j9J-9A.js +0 -391
- package/dist/feedback-a9j9J-9A.js.map +0 -1
- package/dist/smart-card-B5FcKODh.js.map +0 -1
- package/dist/structure.recipes-DjqnBpwz.js.map +0 -1
package/dist/blocks/commerce.js
CHANGED
|
@@ -4,27 +4,27 @@ import { mergeStrings as t, useStrings as n } from "../lib/strings.js";
|
|
|
4
4
|
import { t as r } from "../utils-C2EKeIw3.js";
|
|
5
5
|
import { n as i } from "../buttons-Co6GavvM.js";
|
|
6
6
|
import { a, i as o, r as s, t as c } from "../typography-Cv8MT-82.js";
|
|
7
|
-
import { r as l, t as u } from "../structure-
|
|
8
|
-
import { t as d, u as f } from "../smart-card-
|
|
9
|
-
import {
|
|
10
|
-
import { n as m } from "../cards-
|
|
7
|
+
import { r as l, t as u } from "../structure-MvKVq-oL.js";
|
|
8
|
+
import { t as d, u as f } from "../smart-card-CYLn46e6.js";
|
|
9
|
+
import { t as p } from "../progress-BOe8l_FZ.js";
|
|
10
|
+
import { n as m } from "../cards-Cum56XOF.js";
|
|
11
11
|
import { _ as h, c as g, g as _, m as v, u as y } from "../primitives-DKPOGVpj.js";
|
|
12
12
|
import { n as b, r as x, t as S } from "../number-BNT_BIzJ.js";
|
|
13
13
|
import { t as C } from "../icon-badge-Dv0RYQwj.js";
|
|
14
|
-
import { i as w, n as T, s as E } from "../avatar-
|
|
14
|
+
import { i as w, n as T, s as E } from "../avatar-Bpzty83c.js";
|
|
15
15
|
import { t as D } from "../badge-BZXZT9wd.js";
|
|
16
16
|
import { t as O } from "../separator-Gk_WXH-l.js";
|
|
17
|
-
import { t as k } from "../input-
|
|
18
|
-
import { i as A, n as j } from "../display-
|
|
19
|
-
import { t as M } from "../form-field-
|
|
20
|
-
import { a as N,
|
|
21
|
-
import { u as ne } from "../value-inputs-
|
|
22
|
-
import { d as P, n as re } from "../forms-numeric-
|
|
17
|
+
import { t as k } from "../input-WwYQZJzG.js";
|
|
18
|
+
import { i as A, n as j } from "../display-CFM5myut.js";
|
|
19
|
+
import { t as M } from "../form-field-Bn7ZH1rA.js";
|
|
20
|
+
import { a as N, c as ee, r as te } from "../choice-inputs-CC7XqPQO.js";
|
|
21
|
+
import { u as ne } from "../value-inputs-DX2dbxjj.js";
|
|
22
|
+
import { d as P, n as re } from "../forms-numeric-BUBxELBv.js";
|
|
23
23
|
import { a as ie, c as F, i as I, n as L, o as R, r as z, t as B, u as V } from "../item-pJ0GsOiJ.js";
|
|
24
|
-
import { i as ae, n as oe, r as se, t as ce } from "../tabs-
|
|
25
|
-
import { g as H, n as U } from "../data-display-
|
|
26
|
-
import { n as le, t as ue } from "../receipt-
|
|
27
|
-
import { s as de } from "../timelines-
|
|
24
|
+
import { i as ae, n as oe, r as se, t as ce } from "../tabs-B5cNMWiP.js";
|
|
25
|
+
import { g as H, n as U } from "../data-display-cWIRdeaf.js";
|
|
26
|
+
import { n as le, t as ue } from "../receipt-BM8xsGFy.js";
|
|
27
|
+
import { s as de } from "../timelines-B9ICkQcV.js";
|
|
28
28
|
import { forwardRef as fe, useEffect as pe, useId as me, useRef as he, useState as ge } from "react";
|
|
29
29
|
import { Fragment as W, jsx as G, jsxs as K } from "react/jsx-runtime";
|
|
30
30
|
import { ArrowRight as _e, Barcode as ve, Calendar as ye, CalendarClock as be, Check as q, CheckCircle2 as xe, ChevronRight as Se, Circle as Ce, CircleAlert as we, Copy as Te, CreditCard as Ee, Edit2 as De, ExternalLink as Oe, Eye as ke, Gauge as Ae, Gift as J, Loader2 as je, MapPin as Me, MessageSquare as Ne, Package as Pe, PackageCheck as Fe, Pencil as Ie, Receipt as Le, RefreshCw as Re, Repeat as ze, RotateCcw as Be, Search as Ve, ShoppingBag as He, Sparkles as Ue, Star as We, TicketPercent as Ge, Trash2 as Ke, TriangleAlert as qe, Trophy as Je, X as Ye } from "lucide-react";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, t as h, u as g } from "../data-display-
|
|
2
|
+
import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, t as h, u as g } from "../data-display-cWIRdeaf.js";
|
|
3
3
|
export { l as DenseInfoClassification, e as DenseInfoDashboard, f as DenseInfoFinancial, i as DenseInfoProjectCard, r as DenseInfoScoreCard, n as DocumentStackIllustration, c as EmptyState, m as InboxCleanIllustration, a as InlineStat, u as MetadataList, p as MetadataValue, h as RelationshipCardFrame, d as SearchGlassIllustration, t as StackedCardsIllustration, s as UsersCircleIllustration, o as defaultDenseInfoStrings, g as defaultEmptyStateStrings };
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
import { useStrings as e } from "../lib/strings.js";
|
|
3
3
|
import { t } from "../utils-C2EKeIw3.js";
|
|
4
4
|
import { a as n } from "../typography-Cv8MT-82.js";
|
|
5
|
-
import { t as r } from "../structure-
|
|
6
|
-
import { a as i, c as a, i as o, l as s, o as c, r as l, s as u, u as d } from "../accordion-
|
|
7
|
-
import { t as f } from "../spinner-
|
|
5
|
+
import { t as r } from "../structure-MvKVq-oL.js";
|
|
6
|
+
import { a as i, c as a, i as o, l as s, o as c, r as l, s as u, u as d } from "../accordion-B-5Focs8.js";
|
|
7
|
+
import { t as f } from "../spinner-BY9HbUEh.js";
|
|
8
8
|
import { forwardRef as p, useCallback as m, useEffect as h, useMemo as g, useRef as _, useState as v } from "react";
|
|
9
9
|
import { jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
10
10
|
import { CheckCircle2 as x } from "lucide-react";
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useStrings as e } from "../lib/strings.js";
|
|
3
|
+
import { t } from "../utils-C2EKeIw3.js";
|
|
4
|
+
import { n } from "../buttons-Co6GavvM.js";
|
|
5
|
+
import { a as r, n as i } from "../typography-Cv8MT-82.js";
|
|
6
|
+
import { t as a } from "../structure-MvKVq-oL.js";
|
|
7
|
+
import { t as o } from "../smart-card-CYLn46e6.js";
|
|
8
|
+
import { t as s } from "../progress-BOe8l_FZ.js";
|
|
9
|
+
import { t as c } from "../avatar-Bpzty83c.js";
|
|
10
|
+
import { t as l } from "../badge-BZXZT9wd.js";
|
|
11
|
+
import { n as u, r as d, t as f } from "../collapsible-DsnktFNv.js";
|
|
12
|
+
import { t as p } from "../checkbox-BavDRjF7.js";
|
|
13
|
+
import { c as m, n as h, r as g, t as _ } from "../item-pJ0GsOiJ.js";
|
|
14
|
+
import { forwardRef as v, useId as y, useState as b } from "react";
|
|
15
|
+
import { jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
16
|
+
import { ArrowUpRight as C, CalendarDays as w, ChevronDown as T, CircleDashed as E, LoaderCircle as D } from "lucide-react";
|
|
17
|
+
//#region src/components/blocks/planning/task-card.strings.ts
|
|
18
|
+
var O = {
|
|
19
|
+
expand: "Expand subtasks",
|
|
20
|
+
collapse: "Collapse subtasks",
|
|
21
|
+
subtasks: "Subtasks",
|
|
22
|
+
completion: "Subtask completion",
|
|
23
|
+
due: "Due",
|
|
24
|
+
open: "Open",
|
|
25
|
+
empty: "No subtasks yet.",
|
|
26
|
+
saving: "Saving…",
|
|
27
|
+
formatCompletionCount: (e, t) => `${e}/${t}`,
|
|
28
|
+
formatCompletion: (e, t) => `${e} of ${t} completed`,
|
|
29
|
+
formatAssignedTo: (e) => `Assigned to ${e}`
|
|
30
|
+
}, k = [
|
|
31
|
+
"button, a[href], input, select, textarea, summary, label, [tabindex]",
|
|
32
|
+
"[role=\"button\"], [role=\"link\"], [role=\"checkbox\"], [role=\"switch\"], [role=\"radio\"]",
|
|
33
|
+
"[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"], [role=\"tab\"]",
|
|
34
|
+
"[role=\"combobox\"], [role=\"textbox\"], [role=\"slider\"], [role=\"spinbutton\"]",
|
|
35
|
+
"[contenteditable]:not([contenteditable=\"false\"])"
|
|
36
|
+
].join(", ");
|
|
37
|
+
function A({ completed: e, total: n, label: r, valueText: i }) {
|
|
38
|
+
let a = `task-completion-${y()}`;
|
|
39
|
+
return n === 0 ? /* @__PURE__ */ x(E, {
|
|
40
|
+
"aria-hidden": "true",
|
|
41
|
+
className: "text-muted-foreground"
|
|
42
|
+
}) : /* @__PURE__ */ x(s, {
|
|
43
|
+
value: e,
|
|
44
|
+
max: n,
|
|
45
|
+
"aria-label": r,
|
|
46
|
+
getAriaValueText: () => i,
|
|
47
|
+
headerSlot: null,
|
|
48
|
+
className: "task-card--completion block shrink-0",
|
|
49
|
+
trackSlot: /* @__PURE__ */ S("svg", {
|
|
50
|
+
viewBox: "0 0 24 24",
|
|
51
|
+
"aria-hidden": "true",
|
|
52
|
+
className: "-rotate-90",
|
|
53
|
+
children: [
|
|
54
|
+
/* @__PURE__ */ x("defs", { children: /* @__PURE__ */ x("mask", {
|
|
55
|
+
id: a,
|
|
56
|
+
maskUnits: "userSpaceOnUse",
|
|
57
|
+
x: "0",
|
|
58
|
+
y: "0",
|
|
59
|
+
width: "24",
|
|
60
|
+
height: "24",
|
|
61
|
+
style: { maskType: "alpha" },
|
|
62
|
+
children: /* @__PURE__ */ x("circle", {
|
|
63
|
+
cx: "12",
|
|
64
|
+
cy: "12",
|
|
65
|
+
r: "9",
|
|
66
|
+
pathLength: "100",
|
|
67
|
+
fill: "none",
|
|
68
|
+
stroke: "currentColor",
|
|
69
|
+
strokeWidth: "4",
|
|
70
|
+
strokeDasharray: "100",
|
|
71
|
+
strokeDashoffset: 100 - e / n * 100,
|
|
72
|
+
className: "task-card--completion-reveal transition-[stroke-dashoffset] duration-300 ease-out motion-reduce:transition-none"
|
|
73
|
+
})
|
|
74
|
+
}) }),
|
|
75
|
+
/* @__PURE__ */ x("circle", {
|
|
76
|
+
cx: "12",
|
|
77
|
+
cy: "12",
|
|
78
|
+
r: "9",
|
|
79
|
+
pathLength: "100",
|
|
80
|
+
fill: "none",
|
|
81
|
+
strokeWidth: "3",
|
|
82
|
+
strokeLinecap: "round",
|
|
83
|
+
strokeDasharray: "5 7.5",
|
|
84
|
+
className: "stroke-muted"
|
|
85
|
+
}),
|
|
86
|
+
/* @__PURE__ */ x("circle", {
|
|
87
|
+
cx: "12",
|
|
88
|
+
cy: "12",
|
|
89
|
+
r: "9",
|
|
90
|
+
pathLength: "100",
|
|
91
|
+
fill: "none",
|
|
92
|
+
strokeWidth: "3",
|
|
93
|
+
strokeLinecap: "round",
|
|
94
|
+
strokeDasharray: "5 7.5",
|
|
95
|
+
mask: `url(#${a})`,
|
|
96
|
+
className: t("transition-[stroke] duration-300 ease-out motion-reduce:transition-none", e === n ? "stroke-success" : "stroke-primary")
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
})
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function j({ item: e, disabled: n, onChange: a, savingLabel: o }) {
|
|
103
|
+
let s = y(), l = y(), u = y();
|
|
104
|
+
return /* @__PURE__ */ S(_, {
|
|
105
|
+
role: "listitem",
|
|
106
|
+
density: "compact",
|
|
107
|
+
className: "task-card--item gap-space-md py-space-xs",
|
|
108
|
+
"data-completed": e.completed || void 0,
|
|
109
|
+
children: [
|
|
110
|
+
/* @__PURE__ */ x(m, { children: /* @__PURE__ */ x(p, {
|
|
111
|
+
id: l,
|
|
112
|
+
checked: e.completed,
|
|
113
|
+
disabled: n || e.disabled || e.busy || !a,
|
|
114
|
+
"aria-labelledby": s,
|
|
115
|
+
"aria-describedby": e.error ? u : void 0,
|
|
116
|
+
"aria-invalid": e.error ? !0 : void 0,
|
|
117
|
+
"aria-busy": e.busy || void 0,
|
|
118
|
+
onCheckedChange: (t) => a?.(e.id, t === !0)
|
|
119
|
+
}) }),
|
|
120
|
+
/* @__PURE__ */ S(g, { children: [
|
|
121
|
+
/* @__PURE__ */ x(i, {
|
|
122
|
+
htmlFor: l,
|
|
123
|
+
children: /* @__PURE__ */ x(r, {
|
|
124
|
+
id: s,
|
|
125
|
+
tag: "span",
|
|
126
|
+
type: e.completed ? "secondary" : "main",
|
|
127
|
+
className: t("task-card--item-title min-w-0 break-words", e.completed && "line-through"),
|
|
128
|
+
children: e.title
|
|
129
|
+
})
|
|
130
|
+
}),
|
|
131
|
+
e.error && /* @__PURE__ */ x(r, {
|
|
132
|
+
id: u,
|
|
133
|
+
role: "alert",
|
|
134
|
+
size: "xs",
|
|
135
|
+
type: "error",
|
|
136
|
+
children: e.error
|
|
137
|
+
}),
|
|
138
|
+
e.busy && /* @__PURE__ */ x(r, {
|
|
139
|
+
role: "status",
|
|
140
|
+
size: "xs",
|
|
141
|
+
type: "secondary",
|
|
142
|
+
children: o
|
|
143
|
+
})
|
|
144
|
+
] }),
|
|
145
|
+
(e.assignee || e.busy) && /* @__PURE__ */ S(h, { children: [e.busy && /* @__PURE__ */ x(D, {
|
|
146
|
+
"aria-hidden": "true",
|
|
147
|
+
className: "size-icon animate-spin motion-reduce:animate-none text-muted-foreground"
|
|
148
|
+
}), e.assignee && /* @__PURE__ */ x(c, {
|
|
149
|
+
users: [e.assignee],
|
|
150
|
+
size: "sm"
|
|
151
|
+
})] })
|
|
152
|
+
]
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
var M = v(function({ title: i, items: s, status: p, dueDate: m, assignees: h, assignedTo: g, expanded: _, defaultExpanded: v = !1, onExpandedChange: y, onItemCompletedChange: E, onOpen: D, href: M, disabled: N = !1, surface: P, strings: F, className: I, onClick: L, ...R }, z) {
|
|
156
|
+
let B = e(O, F), [V, H] = b(v), U = _ ?? V, W = s.filter((e) => e.completed).length, G = B.formatCompletion(W, s.length), K = B.formatCompletionCount(W, s.length), q = g || M !== void 0 || D, J = !!(m || h?.length);
|
|
157
|
+
function Y(e) {
|
|
158
|
+
N || (_ === void 0 && H(e), y?.(e));
|
|
159
|
+
}
|
|
160
|
+
function X(e) {
|
|
161
|
+
if (L?.(e), N || e.defaultPrevented || !(e.target instanceof Element)) return;
|
|
162
|
+
let t = e.target.closest(".card--header");
|
|
163
|
+
if (!t || t.closest(".card--component") !== e.currentTarget) return;
|
|
164
|
+
let n = e.target.closest(k);
|
|
165
|
+
n && t.contains(n) || (Y(!U), e.currentTarget.querySelector(".collapsible-trigger--component")?.focus({ preventScroll: !0 }));
|
|
166
|
+
}
|
|
167
|
+
return /* @__PURE__ */ x(f, {
|
|
168
|
+
ref: z,
|
|
169
|
+
open: U,
|
|
170
|
+
disabled: N,
|
|
171
|
+
onOpenChange: Y,
|
|
172
|
+
render: /* @__PURE__ */ x(o, {
|
|
173
|
+
...R,
|
|
174
|
+
onClick: X,
|
|
175
|
+
title: i,
|
|
176
|
+
description: J ? /* @__PURE__ */ S(a, {
|
|
177
|
+
direction: "horizontal",
|
|
178
|
+
align: "center",
|
|
179
|
+
justify: "between",
|
|
180
|
+
gap: "sm",
|
|
181
|
+
className: "task-card--metadata",
|
|
182
|
+
children: [m && /* @__PURE__ */ S(a, {
|
|
183
|
+
direction: "horizontal",
|
|
184
|
+
align: "center",
|
|
185
|
+
gap: "xs",
|
|
186
|
+
children: [/* @__PURE__ */ x(w, {
|
|
187
|
+
"aria-hidden": "true",
|
|
188
|
+
className: "size-icon-sm text-muted-foreground"
|
|
189
|
+
}), /* @__PURE__ */ S(r, {
|
|
190
|
+
tag: "span",
|
|
191
|
+
size: "xs",
|
|
192
|
+
type: "secondary",
|
|
193
|
+
children: [
|
|
194
|
+
B.due,
|
|
195
|
+
" ",
|
|
196
|
+
/* @__PURE__ */ x("time", {
|
|
197
|
+
dateTime: m.dateTime,
|
|
198
|
+
children: m.label
|
|
199
|
+
})
|
|
200
|
+
]
|
|
201
|
+
})]
|
|
202
|
+
}), !!h?.length && /* @__PURE__ */ x(c, {
|
|
203
|
+
users: h,
|
|
204
|
+
size: "sm"
|
|
205
|
+
})]
|
|
206
|
+
}) : void 0,
|
|
207
|
+
surface: P,
|
|
208
|
+
textGap: "dense",
|
|
209
|
+
gap: "md",
|
|
210
|
+
headerClassName: t("flex-row items-center", !N && "cursor-pointer"),
|
|
211
|
+
"data-expanded": U,
|
|
212
|
+
className: t("task-card--component min-w-0", I),
|
|
213
|
+
icon: /* @__PURE__ */ x(A, {
|
|
214
|
+
completed: W,
|
|
215
|
+
total: s.length,
|
|
216
|
+
label: B.completion,
|
|
217
|
+
valueText: G
|
|
218
|
+
}),
|
|
219
|
+
titleSuffix: /* @__PURE__ */ S(a, {
|
|
220
|
+
direction: "horizontal",
|
|
221
|
+
align: "center",
|
|
222
|
+
gap: "sm",
|
|
223
|
+
children: [p && /* @__PURE__ */ x(l, {
|
|
224
|
+
tone: p.tone ?? "neutral",
|
|
225
|
+
size: "sm",
|
|
226
|
+
children: p.label
|
|
227
|
+
}), /* @__PURE__ */ x(r, {
|
|
228
|
+
tag: "span",
|
|
229
|
+
size: "xs",
|
|
230
|
+
weight: "medium",
|
|
231
|
+
type: "secondary",
|
|
232
|
+
className: "task-card--count tabular-nums",
|
|
233
|
+
"aria-label": G,
|
|
234
|
+
children: K
|
|
235
|
+
})]
|
|
236
|
+
}),
|
|
237
|
+
headerAction: /* @__PURE__ */ x(d, {
|
|
238
|
+
render: /* @__PURE__ */ x(n, {
|
|
239
|
+
type: "button",
|
|
240
|
+
tone: "neutral",
|
|
241
|
+
buttonStyle: "ghost",
|
|
242
|
+
size: "sm",
|
|
243
|
+
iconOnly: !0
|
|
244
|
+
}),
|
|
245
|
+
"aria-label": U ? B.collapse : B.expand,
|
|
246
|
+
children: /* @__PURE__ */ x(T, {
|
|
247
|
+
"aria-hidden": "true",
|
|
248
|
+
className: t("size-icon", U && "rotate-180")
|
|
249
|
+
})
|
|
250
|
+
}),
|
|
251
|
+
footerDivider: U && !!q,
|
|
252
|
+
footerSlot: U && q ? /* @__PURE__ */ S(a, {
|
|
253
|
+
direction: "horizontal",
|
|
254
|
+
align: "center",
|
|
255
|
+
justify: "between",
|
|
256
|
+
gap: "md",
|
|
257
|
+
children: [g && /* @__PURE__ */ S(a, {
|
|
258
|
+
direction: "horizontal",
|
|
259
|
+
align: "center",
|
|
260
|
+
gap: "sm",
|
|
261
|
+
className: "min-w-0 flex-1",
|
|
262
|
+
children: [/* @__PURE__ */ x(c, {
|
|
263
|
+
users: [g],
|
|
264
|
+
size: "sm"
|
|
265
|
+
}), /* @__PURE__ */ x(r, {
|
|
266
|
+
tag: "span",
|
|
267
|
+
size: "xs",
|
|
268
|
+
type: "secondary",
|
|
269
|
+
className: "min-w-0 break-words",
|
|
270
|
+
children: B.formatAssignedTo(g.name)
|
|
271
|
+
})]
|
|
272
|
+
}), (M !== void 0 || D) && /* @__PURE__ */ S(n, {
|
|
273
|
+
type: "button",
|
|
274
|
+
href: M,
|
|
275
|
+
onClick: D,
|
|
276
|
+
disabled: N,
|
|
277
|
+
tone: "neutral",
|
|
278
|
+
buttonStyle: "outline",
|
|
279
|
+
size: "sm",
|
|
280
|
+
children: [B.open, /* @__PURE__ */ x(C, { "aria-hidden": "true" })]
|
|
281
|
+
})]
|
|
282
|
+
}) : void 0
|
|
283
|
+
}),
|
|
284
|
+
children: U && /* @__PURE__ */ x(a, {
|
|
285
|
+
gap: "md",
|
|
286
|
+
children: /* @__PURE__ */ x(u, {
|
|
287
|
+
role: "region",
|
|
288
|
+
"aria-label": B.subtasks,
|
|
289
|
+
children: s.length > 0 ? /* @__PURE__ */ x(a, {
|
|
290
|
+
role: "list",
|
|
291
|
+
gap: "none",
|
|
292
|
+
className: "task-card--items",
|
|
293
|
+
children: s.map((e) => /* @__PURE__ */ x(j, {
|
|
294
|
+
item: e,
|
|
295
|
+
disabled: N,
|
|
296
|
+
onChange: E,
|
|
297
|
+
savingLabel: B.saving
|
|
298
|
+
}, e.id))
|
|
299
|
+
}) : /* @__PURE__ */ x(r, {
|
|
300
|
+
type: "secondary",
|
|
301
|
+
children: B.empty
|
|
302
|
+
})
|
|
303
|
+
})
|
|
304
|
+
})
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
M.displayName = "TaskCard";
|
|
308
|
+
//#endregion
|
|
309
|
+
export { M as TaskCard, O as defaultTaskCardStrings };
|
|
310
|
+
|
|
311
|
+
//# sourceMappingURL=planning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning.js","names":["Text","Label","Stack","Card","Progress","StackedAvatars","Badge","CollapsibleContent","CollapsibleTrigger","Collapsible","Checkbox","ItemMedia","ItemActions","ItemContent","Item","defaultTaskCardStrings","completed","total","name","headerControlSelector","CompletionIndicator","maskId","useId","CircleDashed","label","valueText","cn","SubtaskRow","titleId","checkboxId","errorId","item","disabled","onChange","checked","savingLabel","LoaderCircle","TaskCard","forwardRef","expandedProp","stringsProp","props","strings","useStrings","internalExpanded","setInternalExpanded","useState","defaultExpanded","expanded","items","completion","completionCount","hasFooter","assignedTo","href","onOpen","hasMetadata","dueDate","assignees","requestExpanded","next","onExpandedChange","handleClick","onClick","event","header","control","CalendarDays","className","status","Button","ChevronDown","ArrowUpRight","onItemCompletedChange"],"sources":["../../src/components/blocks/planning/task-card.strings.ts","../../src/components/blocks/planning/task-card.tsx"],"sourcesContent":["export interface TaskCardStrings {\n\texpand: string;\n\tcollapse: string;\n\tsubtasks: string;\n\tcompletion: string;\n\tdue: string;\n\topen: string;\n\tempty: string;\n\tsaving: string;\n\t/** Compact visible count; the full completion formatter remains the accessible value. */\n\tformatCompletionCount: (completed: number, total: number) => string;\n\tformatCompletion: (completed: number, total: number) => string;\n\tformatAssignedTo: (name: string) => string;\n}\n\nexport const defaultTaskCardStrings: TaskCardStrings = {\n\texpand: 'Expand subtasks',\n\tcollapse: 'Collapse subtasks',\n\tsubtasks: 'Subtasks',\n\tcompletion: 'Subtask completion',\n\tdue: 'Due',\n\topen: 'Open',\n\tempty: 'No subtasks yet.',\n\tsaving: 'Saving…',\n\tformatCompletionCount: (completed, total) => `${completed}/${total}`,\n\tformatCompletion: (completed, total) => `${completed} of ${total} completed`,\n\tformatAssignedTo: (name) => `Assigned to ${name}`,\n};\n","import { ArrowUpRight, CalendarDays, ChevronDown, CircleDashed, LoaderCircle } from 'lucide-react';\nimport { forwardRef, useId, useState, type MouseEvent } from 'react';\n\nimport { StackedAvatars } from '../../base/avatar';\nimport { Badge } from '../../base/badge';\nimport { Button } from '../../base/buttons';\nimport { Card } from '../../base/cards';\nimport { Checkbox } from '../../base/choice-inputs/checkbox';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../base/display/collapsible';\nimport { Progress } from '../../base/feedback/progress';\nimport { Item, ItemActions, ItemContent, ItemMedia } from '../../base/item';\nimport { Stack } from '../../base/structure';\nimport { Label, Text } from '../../typography';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { defaultTaskCardStrings } from './task-card.strings';\nimport type { TaskCardItem, TaskCardProps } from './task-card.types';\n\nconst headerControlSelector = [\n\t'button, a[href], input, select, textarea, summary, label, [tabindex]',\n\t'[role=\"button\"], [role=\"link\"], [role=\"checkbox\"], [role=\"switch\"], [role=\"radio\"]',\n\t'[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"], [role=\"tab\"]',\n\t'[role=\"combobox\"], [role=\"textbox\"], [role=\"slider\"], [role=\"spinbutton\"]',\n\t'[contenteditable]:not([contenteditable=\"false\"])',\n].join(', ');\n\n/** Private drawing geometry; Progress retains the shared value and accessibility contract. */\nfunction CompletionIndicator({ completed, total, label, valueText }: { completed: number; total: number; label: string; valueText: string }) {\n\tconst maskId = `task-completion-${useId()}`;\n\tif (total === 0) return <CircleDashed aria-hidden=\"true\" className=\"text-muted-foreground\" />;\n\treturn (\n\t\t<Progress\n\t\t\tvalue={completed}\n\t\t\tmax={total}\n\t\t\taria-label={label}\n\t\t\tgetAriaValueText={() => valueText}\n\t\t\theaderSlot={null}\n\t\t\tclassName=\"task-card--completion block shrink-0\"\n\t\t\ttrackSlot={(\n\t\t\t\t<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" className=\"-rotate-90\">\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<mask id={maskId} maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"24\" height=\"24\" style={{ maskType: 'alpha' }}>\n\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"9\" pathLength=\"100\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"4\"\n\t\t\t\t\t\t\t\tstrokeDasharray=\"100\" strokeDashoffset={100 - completed / total * 100}\n\t\t\t\t\t\t\t\tclassName=\"task-card--completion-reveal transition-[stroke-dashoffset] duration-300 ease-out motion-reduce:transition-none\" />\n\t\t\t\t\t\t</mask>\n\t\t\t\t\t</defs>\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"9\" pathLength=\"100\" fill=\"none\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeDasharray=\"5 7.5\" className=\"stroke-muted\" />\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"9\" pathLength=\"100\" fill=\"none\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeDasharray=\"5 7.5\" mask={`url(#${maskId})`}\n\t\t\t\t\t\tclassName={cn('transition-[stroke] duration-300 ease-out motion-reduce:transition-none', completed === total ? 'stroke-success' : 'stroke-primary')} />\n\t\t\t\t</svg>\n\t\t\t)}\n\t\t/>\n\t);\n}\n\nfunction SubtaskRow({ item, disabled, onChange, savingLabel }: { item: TaskCardItem; disabled: boolean; onChange?: TaskCardProps['onItemCompletedChange']; savingLabel: string }) {\n\tconst titleId = useId();\n\tconst checkboxId = useId();\n\tconst errorId = useId();\n\treturn (\n\t\t<Item role=\"listitem\" density=\"compact\" className=\"task-card--item gap-space-md py-space-xs\" data-completed={item.completed || undefined}>\n\t\t\t<ItemMedia>\n\t\t\t\t<Checkbox\n\t\t\t\t\tid={checkboxId}\n\t\t\t\t\tchecked={item.completed}\n\t\t\t\t\tdisabled={disabled || item.disabled || item.busy || !onChange}\n\t\t\t\t\taria-labelledby={titleId}\n\t\t\t\t\taria-describedby={item.error ? errorId : undefined}\n\t\t\t\t\taria-invalid={item.error ? true : undefined}\n\t\t\t\t\taria-busy={item.busy || undefined}\n\t\t\t\t\tonCheckedChange={(checked) => onChange?.(item.id, checked === true)}\n\t\t\t\t/>\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent>\n\t\t\t\t<Label htmlFor={checkboxId}>\n\t\t\t\t\t<Text id={titleId} tag=\"span\" type={item.completed ? 'secondary' : 'main'} className={cn('task-card--item-title min-w-0 break-words', item.completed && 'line-through')}>\n\t\t\t\t\t\t{item.title}\n\t\t\t\t\t</Text>\n\t\t\t\t</Label>\n\t\t\t\t{item.error && <Text id={errorId} role=\"alert\" size=\"xs\" type=\"error\">{item.error}</Text>}\n\t\t\t\t{item.busy && <Text role=\"status\" size=\"xs\" type=\"secondary\">{savingLabel}</Text>}\n\t\t\t</ItemContent>\n\t\t\t{(item.assignee || item.busy) && <ItemActions>\n\t\t\t\t{item.busy && <LoaderCircle aria-hidden=\"true\" className=\"size-icon animate-spin motion-reduce:animate-none text-muted-foreground\" />}\n\t\t\t\t{item.assignee && <StackedAvatars users={[item.assignee]} size=\"sm\" />}\n\t\t\t</ItemActions>}\n\t\t</Item>\n\t);\n}\n\n/** Compact task summary with explicit keyboard disclosure and controlled subtasks. */\nexport const TaskCard = forwardRef<HTMLDivElement, TaskCardProps>(function TaskCard({\n\ttitle,\n\titems,\n\tstatus,\n\tdueDate,\n\tassignees,\n\tassignedTo,\n\texpanded: expandedProp,\n\tdefaultExpanded = false,\n\tonExpandedChange,\n\tonItemCompletedChange,\n\tonOpen,\n\thref,\n\tdisabled = false,\n\tsurface,\n\tstrings: stringsProp,\n\tclassName,\n\tonClick,\n\t...props\n}, ref) {\n\tconst strings = useStrings(defaultTaskCardStrings, stringsProp);\n\tconst [internalExpanded, setInternalExpanded] = useState(defaultExpanded);\n\tconst expanded = expandedProp ?? internalExpanded;\n\tconst completed = items.filter((item) => item.completed).length;\n\tconst completion = strings.formatCompletion(completed, items.length);\n\tconst completionCount = strings.formatCompletionCount(completed, items.length);\n\tconst hasFooter = assignedTo || href !== undefined || onOpen;\n\tconst hasMetadata = Boolean(dueDate || assignees?.length);\n\tfunction requestExpanded(next: boolean) {\n\t\tif (disabled) return;\n\t\tif (expandedProp === undefined) setInternalExpanded(next);\n\t\tonExpandedChange?.(next);\n\t}\n\tfunction handleClick(event: MouseEvent<HTMLDivElement>) {\n\t\tonClick?.(event);\n\t\tif (disabled || event.defaultPrevented || !(event.target instanceof Element)) return;\n\t\tconst header = event.target.closest('.card--header');\n\t\tif (!header || header.closest('.card--component') !== event.currentTarget) return;\n\t\t// The native disclosure button and any nested controls own their clicks.\n\t\tconst control = event.target.closest(headerControlSelector);\n\t\tif (control && header.contains(control)) return;\n\t\trequestExpanded(!expanded);\n\t\tevent.currentTarget.querySelector<HTMLButtonElement>('.collapsible-trigger--component')?.focus({ preventScroll: true });\n\t}\n\n\treturn (\n\t\t<Collapsible\n\t\t\tref={ref}\n\t\t\topen={expanded}\n\t\t\tdisabled={disabled}\n\t\t\tonOpenChange={requestExpanded}\n\t\t\trender={(\n\t\t\t\t<Card\n\t\t\t\t\t{...props}\n\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\tdescription={hasMetadata ? (\n\t\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"between\" gap=\"sm\" className=\"task-card--metadata\">\n\t\t\t\t\t\t\t{dueDate && <Stack direction=\"horizontal\" align=\"center\" gap=\"xs\">\n\t\t\t\t\t\t\t\t<CalendarDays aria-hidden=\"true\" className=\"size-icon-sm text-muted-foreground\" />\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">{strings.due} <time dateTime={dueDate.dateTime}>{dueDate.label}</time></Text>\n\t\t\t\t\t\t\t</Stack>}\n\t\t\t\t\t\t\t{Boolean(assignees?.length) && <StackedAvatars users={assignees!} size=\"sm\" />}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) : undefined}\n\t\t\t\t\tsurface={surface}\n\t\t\t\t\ttextGap=\"dense\"\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\theaderClassName={cn('flex-row items-center', !disabled && 'cursor-pointer')}\n\t\t\t\t\tdata-expanded={expanded}\n\t\t\t\t\tclassName={cn('task-card--component min-w-0', className)}\n\t\t\t\t\ticon={<CompletionIndicator completed={completed} total={items.length} label={strings.completion} valueText={completion} />}\n\t\t\t\t\ttitleSuffix={(\n\t\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" gap=\"sm\">\n\t\t\t\t\t\t\t{status && <Badge tone={status.tone ?? 'neutral'} size=\"sm\">{status.label}</Badge>}\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" type=\"secondary\" className=\"task-card--count tabular-nums\" aria-label={completion}>{completionCount}</Text>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t)}\n\t\t\t\t\theaderAction={(\n\t\t\t\t\t\t<CollapsibleTrigger render={<Button type=\"button\" tone=\"neutral\" buttonStyle=\"ghost\" size=\"sm\" iconOnly />} aria-label={expanded ? strings.collapse : strings.expand}>\n\t\t\t\t\t\t\t<ChevronDown aria-hidden=\"true\" className={cn('size-icon', expanded && 'rotate-180')} />\n\t\t\t\t\t\t</CollapsibleTrigger>\n\t\t\t\t\t)}\n\t\t\t\t\tfooterDivider={expanded && Boolean(hasFooter)}\n\t\t\t\t\tfooterSlot={expanded && hasFooter ? (\n\t\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"between\" gap=\"md\">\n\t\t\t\t\t\t\t{assignedTo && <Stack direction=\"horizontal\" align=\"center\" gap=\"sm\" className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t<StackedAvatars users={[assignedTo]} size=\"sm\" />\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"min-w-0 break-words\">{strings.formatAssignedTo(assignedTo.name)}</Text>\n\t\t\t\t\t\t\t</Stack>}\n\t\t\t\t\t\t\t{(href !== undefined || onOpen) && <Button type=\"button\" href={href} onClick={onOpen} disabled={disabled} tone=\"neutral\" buttonStyle=\"outline\" size=\"sm\">\n\t\t\t\t\t\t\t\t{strings.open}<ArrowUpRight aria-hidden=\"true\" />\n\t\t\t\t\t\t\t</Button>}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) : undefined}\n\t\t\t\t/>\n\t\t\t)}\n\t\t>\n\t\t\t{expanded && <Stack gap=\"md\">\n\t\t\t\t<CollapsibleContent role=\"region\" aria-label={strings.subtasks}>\n\t\t\t\t\t{items.length > 0 ? <Stack role=\"list\" gap=\"none\" className=\"task-card--items\">\n\t\t\t\t\t\t{items.map((item) => <SubtaskRow key={item.id} item={item} disabled={disabled} onChange={onItemCompletedChange} savingLabel={strings.saving} />)}\n\t\t\t\t\t</Stack> : <Text type=\"secondary\">{strings.empty}</Text>}\n\t\t\t\t</CollapsibleContent>\n\t\t\t</Stack>}\n\t\t</Collapsible>\n\t);\n});\n\nTaskCard.displayName = 'TaskCard';\n"],"mappings":"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"}
|
package/dist/blocks/timelines.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../timelines-
|
|
2
|
+
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../timelines-B9ICkQcV.js";
|
|
3
3
|
export { i as ChangelogTimeline, o as MilestonesTimeline, e as StepsCard, r as StepsHorizontal, a as Timeline, t as defaultChangelogTimelineStrings, n as defaultMilestonesTimelineStrings };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as e } from "./utils-C2EKeIw3.js";
|
|
3
3
|
import { n as t } from "./buttons-Co6GavvM.js";
|
|
4
|
-
import { t as n } from "./structure-
|
|
5
|
-
import { c as r, d as i, i as a, l as o, s } from "./smart-card-
|
|
4
|
+
import { t as n } from "./structure-MvKVq-oL.js";
|
|
5
|
+
import { c as r, d as i, i as a, l as o, s } from "./smart-card-CYLn46e6.js";
|
|
6
6
|
import { t as c } from "./action-menu-Cx3SdfbN.js";
|
|
7
7
|
import { t as l } from "./separator-Gk_WXH-l.js";
|
|
8
8
|
import { forwardRef as u } from "react";
|
|
@@ -63,4 +63,4 @@ m.displayName = "CardPrimaryAction", h.displayName = "CardActionStrip";
|
|
|
63
63
|
//#endregion
|
|
64
64
|
export { m as n, p as r, h as t };
|
|
65
65
|
|
|
66
|
-
//# sourceMappingURL=cards-
|
|
66
|
+
//# sourceMappingURL=cards-Cum56XOF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards-
|
|
1
|
+
{"version":3,"file":"cards-Cum56XOF.js","names":["cn","Button","Stack","CardShell","SURFACE_CLASSES","CardContent","CardTitle","ActionButtons","Separator","SmartCardSkeleton","SkeletonBar","barClassName","className","CardHeader","title","lines","i","CardPrimaryAction","forwardRef","props","hidden","CardActionStrip","visible","actions","action","alignClassName","align","separator","compact","fullWidthPrimary","buttonClassName"],"sources":["../src/components/base/cards/partials/smart-card-skeleton.tsx","../src/components/base/cards/card-actions.tsx"],"sourcesContent":["/**\n * SmartCardSkeleton — placeholder shell rendered while a SmartCard's\n * data is loading. Picks up the canonical card surface so the loading\n * state visually matches the eventual `SmartCard` it'll replace.\n */\nimport type { ReactNode } from 'react';\n\nimport { Stack } from '../../structure';\nimport { cn } from '../../../../lib/utils';\n\nimport { SURFACE_CLASSES } from '../smart-card.tokens';\n\nimport { CardContent, CardHeader, CardShell, CardTitle } from './card-primitives';\n\nexport interface SmartCardSkeletonProps {\n\t/** Surface title. */\n\ttitle?: ReactNode;\n\tlines?: number;\n\tclassName?: string;\n}\n\nexport function SmartCardSkeleton({ title, lines = 2, className }: SmartCardSkeletonProps) {\n\tconst SkeletonBar = ({ barClassName }: { barClassName?: string }) => (\n\t\t<div className={cn('animate-pulse rounded bg-muted', barClassName)} />\n\t);\n\n\treturn (\n\t\t<CardShell\n\t\t\tclassName={cn('smart-card-skeleton--component', SURFACE_CLASSES.card, 'gap-space-xl py-surface', className)}\n\t\t>\n\t\t\t<CardHeader className=\"flex-col gap-normal px-surface pb-0\">\n\t\t\t\t{title ? <CardTitle>{title}</CardTitle> : <SkeletonBar barClassName=\"h-4 w-32\" />}\n\t\t\t</CardHeader>\n\t\t\t<CardContent className=\"px-surface py-0\">\n\t\t\t\t<Stack gap=\"lg\">\n\t\t\t\t\t{Array.from({ length: lines }, (_, i) => (\n\t\t\t\t\t\t<SkeletonBar key={`skel-${String(i)}`} barClassName={cn('h-4', i === 0 ? 'w-full' : 'w-3/4')} />\n\t\t\t\t\t))}\n\t\t\t\t</Stack>\n\t\t\t</CardContent>\n\t\t</CardShell>\n\t);\n}\n\nSmartCardSkeleton.displayName = 'SmartCardSkeleton';\n","/**\n * Card action recipes — package-owned chrome for body/footer card actions.\n *\n * Use these instead of hand-rolled footer button rows in resource cards.\n */\nimport { forwardRef, type ComponentProps, type ReactElement, type ReactNode } from 'react';\nimport type { LucideIcon } from 'lucide-react';\n\nimport { Button } from '../buttons';\nimport {\n\tActionButtons,\n\ttype ActionMenuAction,\n\ttype ActionMenuLinkRenderProps,\n} from '../action-menu';\nimport { Separator } from '../display/separator';\nimport { cn } from '../../../lib/utils';\n\nexport interface CardPrimaryActionProps\n\textends Omit<ComponentProps<typeof Button>, 'variant' | 'fullWidth' | 'children'> {\n\tchildren: ReactNode;\n\ticon?: LucideIcon;\n\t/** Renders the action as an anchor to this destination. */\n\thref?: string;\n\t/** Omits the action without changing the others' order. */\n\thidden?: boolean;\n\t/** Stretches the action to the row's width. */\n\tfullWidth?: boolean;\n}\n\nexport const CardPrimaryAction = forwardRef<HTMLButtonElement, CardPrimaryActionProps>(function CardPrimaryAction({\n\tchildren,\n\ticon,\n\thidden = false,\n\tfullWidth = true,\n\tclassName,\n\t...props\n}: CardPrimaryActionProps, ref) {\n\tif (hidden) return null;\n\n\treturn (\n\t\t<Button\n\t\t\tref={ref}\n\t\t\ttype=\"button\"\n\t\t\ttone=\"primary\"\n\t\t\tfullWidth={fullWidth}\n\t\t\ticon={icon}\n\t\t\tclassName={cn('card-primary-action--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</Button>\n\t);\n});\n\nexport interface CardActionStripProps {\n\t/** Actions to render, in order. */\n\tactions: readonly ActionMenuAction[];\n\t/** Draws a rule above the action row. */\n\tseparator?: boolean;\n\t/** Horizontal alignment of the action row. */\n\talign?: 'start' | 'end' | 'between' | 'stretch';\n\t/** Tightens the row for dense cards. */\n\tcompact?: boolean;\n\t/** Stretches only the primary action. */\n\tfullWidthPrimary?: boolean;\n\tclassName?: string;\n\t/** Merged onto every button in the row. */\n\tbuttonClassName?: string;\n\t/** Renders actions carrying an `href` through the consumer's router. */\n\trenderLink?: (props: ActionMenuLinkRenderProps) => ReactElement;\n}\n\nexport function CardActionStrip({\n\tactions,\n\tseparator = false,\n\talign = 'start',\n\tcompact = false,\n\tfullWidthPrimary = false,\n\tclassName,\n\tbuttonClassName,\n\trenderLink,\n}: CardActionStripProps) {\n\tconst visible = actions.filter((action) => action.visible !== false);\n\tif (visible.length === 0) return null;\n\n\tconst alignClassName = {\n\t\tstart: 'justify-start',\n\t\tend: 'justify-end',\n\t\tbetween: 'justify-between',\n\t\tstretch: 'justify-stretch',\n\t}[align];\n\n\treturn (\n\t\t<div className={cn('card-action-strip--component', className)}>\n\t\t\t{!!separator && <Separator className={cn(compact ? 'mb-space-sm' : 'mb-space-md')} />}\n\t\t\t<ActionButtons\n\t\t\t\tactions={visible}\n\t\t\t\tsize={compact ? 'sm' : 'md'}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'flex-wrap',\n\t\t\t\t\talignClassName,\n\t\t\t\t\talign === 'stretch' && '[&>.base-button--component]:flex-1',\n\t\t\t\t\tfullWidthPrimary && '[&>.base-button--component:first-child]:flex-1',\n\t\t\t\t)}\n\t\t\t\tbuttonClassName={cn(\n\t\t\t\t\tcompact ? 'min-w-0' : 'min-w-24',\n\t\t\t\t\tbuttonClassName,\n\t\t\t\t)}\n\t\t\t\trenderLink={renderLink}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nCardPrimaryAction.displayName = 'CardPrimaryAction';\nCardActionStrip.displayName = 'CardActionStrip';\n"],"mappings":";;;;;;;;;;AAqBA,SAAgBS,EAAkB,EAAE,UAAO,WAAQ,GAAG,gBAAqC;CAC1F,IAAMC,KAAe,EAAE,sBACtB,kBAAC,OAAD,EAAK,WAAWV,EAAG,kCAAkCW,CAAY,EAAI,CAAA;CAGtE,OACC,kBAACR,GAAD;EACC,WAAWH,EAAG,kCAAkCI,EAAgB,MAAM,2BAA2BQ,CAAS;EAD3G,UAAA,CAGC,kBAACC,GAAD;GAAY,WAAU;GACpB,UAAAC,IAAQ,kBAACR,GAAD,EAAA,UAAYQ,EAAiB,CAAA,IAAI,kBAACJ,GAAD,EAAa,cAAa,WAAY,CAAA;EACrE,CAAA,GACZ,kBAACL,GAAD;GAAa,WAAU;GACtB,UAAA,kBAACH,GAAD;IAAO,KAAI;IACT,UAAA,MAAM,KAAK,EAAE,QAAQa,EAAM,IAAI,GAAG,MAClC,kBAACL,GAAD,EAAuC,cAAcV,EAAG,OAAOgB,MAAM,IAAI,WAAW,OAAO,EAAI,GAA7E,QAAQ,OAAOA,CAAC,GAA6D,CAC/F;GACK,CAAA;EACK,CAAA,CACH;;AAEb;AAEA,EAAkB,cAAc;;;ACfhC,IAAaC,IAAoBC,EAAsD,SAA2B,EACjH,aACA,SACA,YAAS,IACT,eAAY,IACZ,cACA,GAAGC,KACuB,GAAK;CAG/B,OAFIC,IAAe,OAGlB,kBAACnB,GAAD;EACM;EACL,MAAK;EACL,MAAK;EACM;EACL;EACN,WAAWD,EAAG,kCAAkCY,CAAS;EACzD,GAAIO;EAEH;CACM,CAAA;AAEV,CAAC;AAoBD,SAAgBE,EAAgB,EAC/B,YACA,eAAY,IACZ,WAAQ,SACR,aAAU,IACV,sBAAmB,IACnB,cACA,oBACA,iBACwB;CACxB,IAAMC,IAAUC,EAAQ,QAAQ,MAAWC,EAAO,YAAY,EAAK;CACnE,IAAIF,EAAQ,WAAW,GAAG,OAAO;CAEjC,IAAMG,IAAiB;EACtB,OAAO;EACP,KAAK;EACL,SAAS;EACT,SAAS;CACV,EAAEC;CAEF,OACC,kBAAC,OAAD;EAAK,WAAW1B,EAAG,gCAAgCY,CAAS;EAA5D,UAAA,CACE,CAAC,CAACe,KAAa,kBAACnB,GAAD,EAAW,WAAWR,EAAG4B,IAAU,gBAAgB,aAAa,EAAI,CAAA,GACpF,kBAACrB,GAAD;GACC,SAASe;GACT,MAAMM,IAAU,OAAO;GACvB,WAAW5B,EACV,aACAyB,GACAC,MAAU,aAAa,sCACvBG,KAAoB,gDACrB;GACA,iBAAiB7B,EAChB4B,IAAU,YAAY,YACtBE,CACD;GACY;EACZ,CAAA,CACG;;AAEP;AAEA,EAAkB,cAAc,qBAChC,EAAgB,cAAc"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as e } from "./utils-C2EKeIw3.js";
|
|
3
|
+
import { forwardRef as t } from "react";
|
|
4
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
5
|
+
import { CheckIcon as r } from "lucide-react";
|
|
6
|
+
import { Checkbox as i } from "@base-ui/react/checkbox";
|
|
7
|
+
//#region src/components/ui/checkbox.tsx
|
|
8
|
+
function a({ className: t, onCheckedChange: a, ...o }) {
|
|
9
|
+
return /* @__PURE__ */ n(i.Root, {
|
|
10
|
+
"data-slot": "checkbox",
|
|
11
|
+
className: e("peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-[color,box-shadow] outline-none", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 aria-invalid:border-destructive", "data-[checked]:bg-primary data-[checked]:border-primary data-[checked]:text-primary-foreground", "data-[indeterminate]:bg-primary data-[indeterminate]:border-primary data-[indeterminate]:text-primary-foreground", "data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50", t),
|
|
12
|
+
onCheckedChange: a,
|
|
13
|
+
...o,
|
|
14
|
+
children: /* @__PURE__ */ n(i.Indicator, {
|
|
15
|
+
"data-slot": "checkbox-indicator",
|
|
16
|
+
className: "flex items-center justify-center text-current",
|
|
17
|
+
children: /* @__PURE__ */ n(r, { className: "size-3.5" })
|
|
18
|
+
})
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/components/base/choice-inputs/checkbox.tsx
|
|
23
|
+
var o = t(function({ className: t, ...r }, i) {
|
|
24
|
+
return /* @__PURE__ */ n(a, {
|
|
25
|
+
ref: i,
|
|
26
|
+
className: e("checkbox--component inline-flex items-center justify-center rounded-radius-xs border-muted-foreground", t),
|
|
27
|
+
...r
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
o.displayName = "Checkbox";
|
|
31
|
+
//#endregion
|
|
32
|
+
export { o as t };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=checkbox-BavDRjF7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox-BavDRjF7.js","names":["Checkbox","CheckboxPrimitive","Checkbox","CheckboxPrimitive","cn","Checkbox$2","props","Checkbox","className","CheckIcon","Checkbox$1","forwardRef"],"sources":["../src/components/ui/checkbox.tsx","../src/components/base/choice-inputs/checkbox.tsx"],"sourcesContent":["\"use client\"\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nexport interface CheckboxProps extends Omit<CheckboxPrimitive.Root.Props, 'onChange'> {\n\tonCheckedChange?: (checked: boolean | 'indeterminate') => void\n}\n\nfunction Checkbox({\n\tclassName,\n\tonCheckedChange,\n\t...props\n}: CheckboxProps) {\n\treturn (\n\t\t<CheckboxPrimitive.Root\n\t\t\tdata-slot=\"checkbox\"\n\t\t\tclassName={cn(\n\t\t\t\t\"peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-[color,box-shadow] outline-none\",\n\t\t\t\t\"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n\t\t\t\t\"aria-invalid:ring-destructive/20 aria-invalid:border-destructive\",\n\t\t\t\t\"data-[checked]:bg-primary data-[checked]:border-primary data-[checked]:text-primary-foreground\",\n\t\t\t\t\"data-[indeterminate]:bg-primary data-[indeterminate]:border-primary data-[indeterminate]:text-primary-foreground\",\n\t\t\t\t\"data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonCheckedChange={onCheckedChange}\n\t\t\t{...props}\n\t\t>\n\t\t\t<CheckboxPrimitive.Indicator\n\t\t\t\tdata-slot=\"checkbox-indicator\"\n\t\t\t\tclassName=\"flex items-center justify-center text-current\"\n\t\t\t>\n\t\t\t\t<CheckIcon className=\"size-3.5\" />\n\t\t\t</CheckboxPrimitive.Indicator>\n\t\t</CheckboxPrimitive.Root>\n\t)\n}\n\nexport { Checkbox }\n","import { forwardRef } from 'react';\n\nimport { Checkbox as CheckboxPrimitive, type CheckboxProps } from '../../ui/checkbox';\nimport { cn } from '../../../lib/utils';\n\n/**\n * Checkbox — base wrapper around the shadcn/Base UI checkbox primitive.\n *\n * Base UI renders the root as an inline span; the wrapper makes it an\n * inline-flex control so token size utilities render as a square box instead\n * of collapsing to the two border lines.\n *\n * The root ref accepts the actual HTMLElement, including custom button renders.\n * The muted foreground border keeps the unchecked boundary visible in both themes.\n *\n * The wrapper retains its compact corner recipe while deriving it from the\n * shared theme radius, so scoped consumer radius overrides still apply.\n */\nconst Checkbox = forwardRef<HTMLElement, CheckboxProps>(function Checkbox({ className, ...props }, ref) {\n\treturn (\n\t\t<CheckboxPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'checkbox--component inline-flex items-center justify-center rounded-radius-xs border-muted-foreground',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nCheckbox.displayName = 'Checkbox';\n\nexport { Checkbox };\nexport type { CheckboxProps };\n"],"mappings":";;;;;;;AAWA,SAASA,EAAS,EACjB,cACA,oBACA,GAAGM,KACc;CACjB,OACC,kBAACL,EAAkB,MAAnB;EACC,aAAU;EACV,WAAWG,EACV,+GACA,iFACA,oEACA,kGACA,oHACA,iEACAI,CACD;EACiB;EACjB,GAAIF;EAEJ,UAAA,kBAACL,EAAkB,WAAnB;GACC,aAAU;GACV,WAAU;GAEV,UAAA,kBAACQ,GAAD,EAAW,WAAU,WAAY,CAAA;EACL,CAAA;CACN,CAAA;AAE1B;;;ACrBA,IAAMP,IAAWS,EAAuC,SAAkB,EAAE,cAAW,GAAGL,KAAS,GAAK;CACvG,OACC,kBAACH,GAAD;EACM;EACL,WAAWC,EACV,yGACAI,CACD;EACA,GAAIF;CACJ,CAAA;AAEH,CAAC;AAED,EAAS,cAAc"}
|