@flamingo-stack/openframe-frontend-core 0.0.295 → 0.0.296-snapshot.20260621021605
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/README.md +9 -0
- package/dist/{chunk-7RIYT7ZH.js → chunk-2QG57XOJ.js} +1067 -205
- package/dist/chunk-2QG57XOJ.js.map +1 -0
- package/dist/{chunk-7KXD7CWD.js → chunk-3JIQVE7T.js} +9 -15
- package/dist/{chunk-7KXD7CWD.js.map → chunk-3JIQVE7T.js.map} +1 -1
- package/dist/{chunk-FT4FCV7L.cjs → chunk-4PSQS3SW.cjs} +7 -9
- package/dist/chunk-4PSQS3SW.cjs.map +1 -0
- package/dist/{chunk-OOKKGOPQ.js → chunk-4TLE6VLU.js} +30 -24
- package/dist/chunk-4TLE6VLU.js.map +1 -0
- package/dist/{chunk-6IBA2MQV.cjs → chunk-53FUMSZ5.cjs} +40 -46
- package/dist/chunk-53FUMSZ5.cjs.map +1 -0
- package/dist/{chunk-D3LEFMOA.cjs → chunk-54KNMC2R.cjs} +3 -3
- package/dist/{chunk-D3LEFMOA.cjs.map → chunk-54KNMC2R.cjs.map} +1 -1
- package/dist/{chunk-EYEW6PTA.cjs → chunk-6C526VNN.cjs} +358 -118
- package/dist/chunk-6C526VNN.cjs.map +1 -0
- package/dist/{chunk-5O6N3BKR.cjs → chunk-7OVGB2DQ.cjs} +19 -25
- package/dist/chunk-7OVGB2DQ.cjs.map +1 -0
- package/dist/{chunk-6GCI7JOE.js → chunk-AD6C23QY.js} +8 -7
- package/dist/{chunk-6GCI7JOE.js.map → chunk-AD6C23QY.js.map} +1 -1
- package/dist/chunk-F5OB2YAL.cjs +144 -0
- package/dist/chunk-F5OB2YAL.cjs.map +1 -0
- package/dist/chunk-FBWXMMRB.cjs +2 -0
- package/dist/chunk-FBWXMMRB.cjs.map +1 -0
- package/dist/{chunk-YIGPRLQY.cjs → chunk-FCDQNTDG.cjs} +21 -20
- package/dist/chunk-FCDQNTDG.cjs.map +1 -0
- package/dist/{chunk-XXI7BNB6.cjs → chunk-FQOTC3UU.cjs} +321 -18
- package/dist/chunk-FQOTC3UU.cjs.map +1 -0
- package/dist/{chunk-INDQMNP6.cjs → chunk-GUTS7HGA.cjs} +11658 -2146
- package/dist/chunk-GUTS7HGA.cjs.map +1 -0
- package/dist/chunk-GZ4C3XW6.js +2 -0
- package/dist/chunk-GZ4C3XW6.js.map +1 -0
- package/dist/{chunk-HOVJGXF7.js → chunk-IL47XWV5.js} +8 -14
- package/dist/{chunk-HOVJGXF7.js.map → chunk-IL47XWV5.js.map} +1 -1
- package/dist/{chunk-LCNMR277.js → chunk-IZ7JSBFP.js} +1 -1
- package/dist/chunk-IZ7JSBFP.js.map +1 -0
- package/dist/{chunk-5IJ46KAV.js → chunk-JALO4TAZ.js} +360 -57
- package/dist/chunk-JALO4TAZ.js.map +1 -0
- package/dist/{chunk-AQOWFSMB.cjs → chunk-L6PSSIUQ.cjs} +1 -1
- package/dist/chunk-L6PSSIUQ.cjs.map +1 -0
- package/dist/{chunk-J3RDKZ32.js → chunk-L7ULJKG7.js} +6 -10
- package/dist/{chunk-J3RDKZ32.js.map → chunk-L7ULJKG7.js.map} +1 -1
- package/dist/{chunk-6BZEAPNT.js → chunk-PC746XCO.js} +15120 -5608
- package/dist/chunk-PC746XCO.js.map +1 -0
- package/dist/{chunk-3ZXUQQL4.js → chunk-PI4WSYQV.js} +2 -2
- package/dist/{chunk-E4XABBSU.js → chunk-PWQUAVA3.js} +338 -98
- package/dist/chunk-PWQUAVA3.js.map +1 -0
- package/dist/chunk-SA2WPJVO.js +144 -0
- package/dist/chunk-SA2WPJVO.js.map +1 -0
- package/dist/{chunk-ETACGX2A.cjs → chunk-UNVE2SDJ.cjs} +37 -31
- package/dist/chunk-UNVE2SDJ.cjs.map +1 -0
- package/dist/{chunk-5E2HOSSH.cjs → chunk-WMSTJAZT.cjs} +913 -51
- package/dist/chunk-WMSTJAZT.cjs.map +1 -0
- package/dist/{chunk-EJXHZX2E.js → chunk-X4DOXQRT.js} +4 -6
- package/dist/{chunk-EJXHZX2E.js.map → chunk-X4DOXQRT.js.map} +1 -1
- package/dist/{chunk-A2YL7QRX.cjs → chunk-YBYI62OE.cjs} +33 -37
- package/dist/chunk-YBYI62OE.cjs.map +1 -0
- package/dist/components/case-studies/index.cjs +126 -0
- package/dist/components/case-studies/index.cjs.map +1 -0
- package/dist/components/case-studies/index.d.ts +2 -0
- package/dist/components/case-studies/index.d.ts.map +1 -0
- package/dist/components/case-studies/index.js +126 -0
- package/dist/components/case-studies/index.js.map +1 -0
- package/dist/components/case-studies/share-experience-section.d.ts +48 -0
- package/dist/components/case-studies/share-experience-section.d.ts.map +1 -0
- package/dist/components/chat/chat-container.d.ts.map +1 -1
- package/dist/components/chat/error-message-display.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +8 -18
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +75 -85
- package/dist/components/chat/types/component.types.d.ts +2 -0
- package/dist/components/chat/types/component.types.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +8 -15
- package/dist/components/contact/index.cjs.map +1 -1
- package/dist/components/contact/index.js +7 -14
- package/dist/components/docs/doc-viewer.d.ts +39 -2
- package/dist/components/docs/doc-viewer.d.ts.map +1 -1
- package/dist/components/docs/docs-hub-page.d.ts +46 -0
- package/dist/components/docs/docs-hub-page.d.ts.map +1 -0
- package/dist/components/docs/index.cjs +17 -9
- package/dist/components/docs/index.cjs.map +1 -1
- package/dist/components/docs/index.d.ts +4 -0
- package/dist/components/docs/index.d.ts.map +1 -1
- package/dist/components/docs/index.js +16 -8
- package/dist/components/docs/skeletons.d.ts +32 -0
- package/dist/components/docs/skeletons.d.ts.map +1 -0
- package/dist/components/docs/use-docs-resolve-link.d.ts +20 -0
- package/dist/components/docs/use-docs-resolve-link.d.ts.map +1 -0
- package/dist/components/docs/use-document-tree.d.ts.map +1 -1
- package/dist/components/embeds/embed-container.d.ts +37 -0
- package/dist/components/embeds/embed-container.d.ts.map +1 -0
- package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
- package/dist/components/embeds/file-download-card.d.ts +18 -0
- package/dist/components/embeds/file-download-card.d.ts.map +1 -0
- package/dist/components/embeds/index.cjs +38 -15
- package/dist/components/embeds/index.cjs.map +1 -1
- package/dist/components/embeds/index.d.ts +8 -0
- package/dist/components/embeds/index.d.ts.map +1 -1
- package/dist/components/embeds/index.js +40 -17
- package/dist/components/embeds/linkedin-embed-client.d.ts +8 -0
- package/dist/components/embeds/linkedin-embed-client.d.ts.map +1 -0
- package/dist/components/embeds/markdown-image.d.ts +5 -0
- package/dist/components/embeds/markdown-image.d.ts.map +1 -0
- package/dist/components/embeds/reddit-embed-client.d.ts +7 -0
- package/dist/components/embeds/reddit-embed-client.d.ts.map +1 -0
- package/dist/components/embeds/rich-markdown-runtime.d.ts +46 -0
- package/dist/components/embeds/rich-markdown-runtime.d.ts.map +1 -0
- package/dist/components/embeds/twitter-embed-client.d.ts +8 -0
- package/dist/components/embeds/twitter-embed-client.d.ts.map +1 -0
- package/dist/components/faq/index.cjs +9 -16
- package/dist/components/faq/index.cjs.map +1 -1
- package/dist/components/faq/index.js +8 -15
- package/dist/components/features/index.cjs +8 -16
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.js +24 -32
- package/dist/components/features/notifications/notification-drawer.d.ts.map +1 -1
- package/dist/components/features/notifications/notifications-context.d.ts +5 -1
- package/dist/components/features/notifications/notifications-context.d.ts.map +1 -1
- package/dist/components/index.cjs +257 -452
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +781 -976
- package/dist/components/index.js.map +1 -1
- package/dist/components/layout/page-header.d.ts +78 -0
- package/dist/components/layout/page-header.d.ts.map +1 -0
- package/dist/components/layout/page-layout.d.ts +10 -1
- package/dist/components/layout/page-layout.d.ts.map +1 -1
- package/dist/components/layout/page-with-header.d.ts +67 -0
- package/dist/components/layout/page-with-header.d.ts.map +1 -0
- package/dist/components/layout/title-block.d.ts +17 -1
- package/dist/components/layout/title-block.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +7 -15
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.js +9 -17
- package/dist/components/onboarding-guides/index.cjs +35 -36
- package/dist/components/onboarding-guides/index.cjs.map +1 -1
- package/dist/components/onboarding-guides/index.js +13 -14
- package/dist/components/onboarding-guides/index.js.map +1 -1
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +1 -1
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
- package/dist/components/related-content/index.cjs +9 -16
- package/dist/components/related-content/index.cjs.map +1 -1
- package/dist/components/related-content/index.js +8 -15
- package/dist/components/shared/dev-section/dev-section-page.d.ts +9 -0
- package/dist/components/shared/dev-section/dev-section-page.d.ts.map +1 -1
- package/dist/components/shared/dev-section/dev-section-view.d.ts.map +1 -1
- package/dist/components/shared/dev-section/index.d.ts +1 -1
- package/dist/components/shared/dev-section/index.d.ts.map +1 -1
- package/dist/components/shared/doc-search/use-doc-search.d.ts.map +1 -1
- package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +100 -112
- package/dist/components/tickets/index.cjs.map +1 -1
- package/dist/components/tickets/index.js +20 -32
- package/dist/components/tickets/index.js.map +1 -1
- package/dist/components/ui/button/split-button.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +50 -52
- package/dist/components/ui/file-manager/index.cjs.map +1 -1
- package/dist/components/ui/file-manager/index.js +4 -6
- package/dist/components/ui/file-manager/index.js.map +1 -1
- package/dist/components/ui/index.cjs +13 -19
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.d.ts +2 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +133 -139
- package/dist/components/ui/release-changelog-section.d.ts +6 -2
- package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
- package/dist/components/ui/rich-markdown-renderer.d.ts +34 -0
- package/dist/components/ui/rich-markdown-renderer.d.ts.map +1 -0
- package/dist/components/ui/simple-markdown-renderer.d.ts +2 -8
- package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -1
- package/dist/contexts/chat-runtime-context.d.ts +14 -0
- package/dist/contexts/chat-runtime-context.d.ts.map +1 -1
- package/dist/contexts/index.cjs +3 -3
- package/dist/contexts/index.js +5 -5
- package/dist/embed-shims/index.cjs +3 -3
- package/dist/embed-shims/index.cjs.map +1 -1
- package/dist/embed-shims/index.js +4 -4
- package/dist/hooks/index.cjs +4 -9
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.js +6 -11
- package/dist/index.cjs +14 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +362 -368
- package/dist/types/doc-source.d.ts +31 -1
- package/dist/types/doc-source.d.ts.map +1 -1
- package/dist/utils/index.cjs +4 -0
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/page-header-constants.d.ts +15 -0
- package/dist/utils/page-header-constants.d.ts.map +1 -0
- package/dist/utils/social-embed-cache.d.ts +29 -0
- package/dist/utils/social-embed-cache.d.ts.map +1 -0
- package/package.json +7 -1
- package/src/components/case-studies/index.ts +4 -0
- package/src/components/case-studies/share-experience-section.tsx +185 -0
- package/src/components/chat/chat-container.tsx +5 -7
- package/src/components/chat/embeddable-chat.tsx +1 -1
- package/src/components/chat/error-message-display.tsx +49 -31
- package/src/components/chat/types/component.types.ts +2 -0
- package/src/components/docs/doc-viewer.tsx +111 -19
- package/src/components/docs/docs-hub-page.tsx +149 -0
- package/src/components/docs/index.ts +17 -0
- package/src/components/docs/skeletons.tsx +138 -0
- package/src/components/docs/use-docs-resolve-link.ts +52 -0
- package/src/components/docs/use-document-tree.ts +21 -0
- package/src/components/embeds/embed-container.tsx +80 -0
- package/src/components/embeds/embed-iframe.tsx +7 -9
- package/src/components/embeds/file-download-card.tsx +54 -0
- package/src/components/embeds/index.ts +30 -0
- package/src/components/embeds/linkedin-embed-client.tsx +100 -0
- package/src/components/embeds/markdown-image.tsx +88 -0
- package/src/components/embeds/og-link-preview.tsx +13 -13
- package/src/components/embeds/reddit-embed-client.tsx +550 -0
- package/src/components/embeds/rich-markdown-runtime.tsx +79 -0
- package/src/components/embeds/twitter-embed-client.tsx +308 -0
- package/src/components/features/notifications/notification-drawer.tsx +18 -7
- package/src/components/features/notifications/notifications-context.tsx +7 -0
- package/src/components/layout/page-header.tsx +182 -0
- package/src/components/layout/page-layout.tsx +14 -1
- package/src/components/layout/page-with-header.tsx +110 -0
- package/src/components/layout/title-block.tsx +40 -62
- package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +3 -3
- package/src/components/shared/dev-section/dev-section-page.tsx +9 -1
- package/src/components/shared/dev-section/dev-section-view.tsx +14 -9
- package/src/components/shared/dev-section/index.ts +1 -1
- package/src/components/shared/doc-search/use-doc-search.ts +7 -3
- package/src/components/shared/legal-document/legal-document-page.tsx +2 -2
- package/src/components/shared/product-release/release-detail-page.tsx +6 -4
- package/src/components/ui/button/split-button.tsx +5 -2
- package/src/components/ui/index.ts +2 -0
- package/src/components/ui/release-changelog-section.tsx +7 -2
- package/src/components/ui/rich-markdown-renderer.tsx +1203 -0
- package/src/components/ui/simple-markdown-renderer.tsx +7 -11
- package/src/contexts/chat-runtime-context.tsx +14 -0
- package/src/stories/NotificationDrawer.stories.tsx +2 -0
- package/src/types/doc-source.ts +33 -1
- package/src/utils/index.ts +1 -0
- package/src/utils/page-header-constants.ts +15 -0
- package/src/utils/social-embed-cache.ts +391 -0
- package/dist/chunk-26PKDALD.js +0 -2379
- package/dist/chunk-26PKDALD.js.map +0 -1
- package/dist/chunk-3MCHAFHB.js +0 -89
- package/dist/chunk-3MCHAFHB.js.map +0 -1
- package/dist/chunk-3XIB4VKS.cjs +0 -619
- package/dist/chunk-3XIB4VKS.cjs.map +0 -1
- package/dist/chunk-4W7NYJ3B.cjs +0 -3009
- package/dist/chunk-4W7NYJ3B.cjs.map +0 -1
- package/dist/chunk-5E2HOSSH.cjs.map +0 -1
- package/dist/chunk-5IJ46KAV.js.map +0 -1
- package/dist/chunk-5O6N3BKR.cjs.map +0 -1
- package/dist/chunk-6BZEAPNT.js.map +0 -1
- package/dist/chunk-6IBA2MQV.cjs.map +0 -1
- package/dist/chunk-6JINAOI7.cjs +0 -311
- package/dist/chunk-6JINAOI7.cjs.map +0 -1
- package/dist/chunk-7RIYT7ZH.js.map +0 -1
- package/dist/chunk-A2YL7QRX.cjs.map +0 -1
- package/dist/chunk-AQOWFSMB.cjs.map +0 -1
- package/dist/chunk-E4XABBSU.js.map +0 -1
- package/dist/chunk-ETACGX2A.cjs.map +0 -1
- package/dist/chunk-EYEW6PTA.cjs.map +0 -1
- package/dist/chunk-FQJK446R.js +0 -1606
- package/dist/chunk-FQJK446R.js.map +0 -1
- package/dist/chunk-FT4FCV7L.cjs.map +0 -1
- package/dist/chunk-INDQMNP6.cjs.map +0 -1
- package/dist/chunk-J54Z3OCR.cjs +0 -1606
- package/dist/chunk-J54Z3OCR.cjs.map +0 -1
- package/dist/chunk-KXCRGTRN.cjs +0 -2379
- package/dist/chunk-KXCRGTRN.cjs.map +0 -1
- package/dist/chunk-LCNMR277.js.map +0 -1
- package/dist/chunk-LFGGF7OT.cjs +0 -449
- package/dist/chunk-LFGGF7OT.cjs.map +0 -1
- package/dist/chunk-M2OCXTNT.js +0 -311
- package/dist/chunk-M2OCXTNT.js.map +0 -1
- package/dist/chunk-NSPOYUBH.js +0 -3009
- package/dist/chunk-NSPOYUBH.js.map +0 -1
- package/dist/chunk-OOKKGOPQ.js.map +0 -1
- package/dist/chunk-OQ6X7ZOC.js +0 -449
- package/dist/chunk-OQ6X7ZOC.js.map +0 -1
- package/dist/chunk-POKKCWKF.js +0 -354
- package/dist/chunk-POKKCWKF.js.map +0 -1
- package/dist/chunk-TFSYSWPS.cjs +0 -89
- package/dist/chunk-TFSYSWPS.cjs.map +0 -1
- package/dist/chunk-XXI7BNB6.cjs.map +0 -1
- package/dist/chunk-YD43AKI5.js +0 -619
- package/dist/chunk-YD43AKI5.js.map +0 -1
- package/dist/chunk-YETA25JW.cjs +0 -354
- package/dist/chunk-YETA25JW.cjs.map +0 -1
- package/dist/chunk-YIGPRLQY.cjs.map +0 -1
- /package/dist/{chunk-3ZXUQQL4.js.map → chunk-PI4WSYQV.js.map} +0 -0
|
@@ -7,6 +7,9 @@ import {
|
|
|
7
7
|
cn,
|
|
8
8
|
init_cn
|
|
9
9
|
} from "./chunk-XTCBRQN2.js";
|
|
10
|
+
import {
|
|
11
|
+
CheckboxCheckmarkIcon
|
|
12
|
+
} from "./chunk-6U3IUD57.js";
|
|
10
13
|
import {
|
|
11
14
|
__esm
|
|
12
15
|
} from "./chunk-GGWZFCYS.js";
|
|
@@ -35,8 +38,8 @@ var init_button_styles = __esm({
|
|
|
35
38
|
// src/components/ui/button/button.tsx
|
|
36
39
|
import { Slot } from "@radix-ui/react-slot";
|
|
37
40
|
import { cva } from "class-variance-authority";
|
|
38
|
-
import
|
|
39
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
41
|
+
import React3 from "react";
|
|
42
|
+
import { Fragment, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
40
43
|
var buttonVariants, splitShellVariants, splitSlotVariants, Spinner, Button;
|
|
41
44
|
var init_button = __esm({
|
|
42
45
|
"src/components/ui/button/button.tsx"() {
|
|
@@ -149,9 +152,9 @@ var init_button = __esm({
|
|
|
149
152
|
defaultVariants: { slot: "main", size: "default", variant: "accent" }
|
|
150
153
|
}
|
|
151
154
|
);
|
|
152
|
-
Spinner = () => /* @__PURE__ */
|
|
153
|
-
/* @__PURE__ */
|
|
154
|
-
/* @__PURE__ */
|
|
155
|
+
Spinner = () => /* @__PURE__ */ jsxs3("svg", { className: "animate-spin", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
156
|
+
/* @__PURE__ */ jsx3("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
|
|
157
|
+
/* @__PURE__ */ jsx3(
|
|
155
158
|
"path",
|
|
156
159
|
{
|
|
157
160
|
className: "opacity-75",
|
|
@@ -160,7 +163,7 @@ var init_button = __esm({
|
|
|
160
163
|
}
|
|
161
164
|
)
|
|
162
165
|
] });
|
|
163
|
-
Button =
|
|
166
|
+
Button = React3.forwardRef(function Button2({
|
|
164
167
|
className,
|
|
165
168
|
variant,
|
|
166
169
|
size,
|
|
@@ -191,16 +194,16 @@ var init_button = __esm({
|
|
|
191
194
|
);
|
|
192
195
|
const mainSlotClass = splitSlotVariants({ slot: "main", size: safeSize, variant: safeVariant });
|
|
193
196
|
const iconSlotClass = splitSlotVariants({ slot: "icon", size: safeSize, variant: safeVariant });
|
|
194
|
-
const splitContent = /* @__PURE__ */
|
|
195
|
-
/* @__PURE__ */
|
|
196
|
-
/* @__PURE__ */
|
|
197
|
-
leftIcon && /* @__PURE__ */
|
|
197
|
+
const splitContent = /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
198
|
+
/* @__PURE__ */ jsxs3("span", { className: cn("contents", loading && "invisible"), children: [
|
|
199
|
+
/* @__PURE__ */ jsxs3("span", { className: mainSlotClass, children: [
|
|
200
|
+
leftIcon && /* @__PURE__ */ jsx3("span", { className: "inline-flex items-center", children: leftIcon }),
|
|
198
201
|
children,
|
|
199
|
-
rightIcon && /* @__PURE__ */
|
|
202
|
+
rightIcon && /* @__PURE__ */ jsx3("span", { className: "inline-flex items-center", children: rightIcon })
|
|
200
203
|
] }),
|
|
201
|
-
/* @__PURE__ */
|
|
204
|
+
/* @__PURE__ */ jsx3("span", { "aria-hidden": "true", className: iconSlotClass, children: splitIcon })
|
|
202
205
|
] }),
|
|
203
|
-
loading && /* @__PURE__ */
|
|
206
|
+
loading && /* @__PURE__ */ jsx3("span", { className: "absolute inset-0 inline-flex items-center justify-center text-ods-text-primary", children: /* @__PURE__ */ jsx3(Spinner, {}) })
|
|
204
207
|
] });
|
|
205
208
|
const splitAnchor = linkProps ?? (href ? {
|
|
206
209
|
href,
|
|
@@ -209,7 +212,7 @@ var init_button = __esm({
|
|
|
209
212
|
onClick
|
|
210
213
|
} : null);
|
|
211
214
|
if (splitAnchor) {
|
|
212
|
-
return /* @__PURE__ */
|
|
215
|
+
return /* @__PURE__ */ jsx3(
|
|
213
216
|
next_link_default,
|
|
214
217
|
{
|
|
215
218
|
href: splitAnchor.href,
|
|
@@ -225,7 +228,7 @@ var init_button = __esm({
|
|
|
225
228
|
}
|
|
226
229
|
);
|
|
227
230
|
}
|
|
228
|
-
return /* @__PURE__ */
|
|
231
|
+
return /* @__PURE__ */ jsx3(
|
|
229
232
|
"button",
|
|
230
233
|
{
|
|
231
234
|
ref,
|
|
@@ -239,15 +242,15 @@ var init_button = __esm({
|
|
|
239
242
|
}
|
|
240
243
|
const classes = cn(buttonVariants({ variant, size, fullWidth, noPaddingX }), className);
|
|
241
244
|
if (asChild) {
|
|
242
|
-
return /* @__PURE__ */
|
|
245
|
+
return /* @__PURE__ */ jsx3(Slot, { ref, className: classes, ...props, children });
|
|
243
246
|
}
|
|
244
|
-
const content = /* @__PURE__ */
|
|
245
|
-
/* @__PURE__ */
|
|
246
|
-
leftIcon && /* @__PURE__ */
|
|
247
|
+
const content = /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
248
|
+
/* @__PURE__ */ jsxs3("span", { className: cn("contents", loading && "invisible"), children: [
|
|
249
|
+
leftIcon && /* @__PURE__ */ jsx3("span", { className: "inline-flex items-center", children: leftIcon }),
|
|
247
250
|
children,
|
|
248
|
-
rightIcon && /* @__PURE__ */
|
|
251
|
+
rightIcon && /* @__PURE__ */ jsx3("span", { className: "inline-flex items-center", children: rightIcon })
|
|
249
252
|
] }),
|
|
250
|
-
loading && /* @__PURE__ */
|
|
253
|
+
loading && /* @__PURE__ */ jsx3("span", { className: "absolute inset-0 inline-flex items-center justify-center text-ods-text-primary", children: /* @__PURE__ */ jsx3(Spinner, {}) })
|
|
251
254
|
] });
|
|
252
255
|
const anchor = linkProps ?? (href ? {
|
|
253
256
|
href,
|
|
@@ -256,7 +259,7 @@ var init_button = __esm({
|
|
|
256
259
|
onClick
|
|
257
260
|
} : null);
|
|
258
261
|
if (anchor) {
|
|
259
|
-
return /* @__PURE__ */
|
|
262
|
+
return /* @__PURE__ */ jsx3(
|
|
260
263
|
next_link_default,
|
|
261
264
|
{
|
|
262
265
|
href: anchor.href,
|
|
@@ -272,7 +275,7 @@ var init_button = __esm({
|
|
|
272
275
|
}
|
|
273
276
|
);
|
|
274
277
|
}
|
|
275
|
-
return /* @__PURE__ */
|
|
278
|
+
return /* @__PURE__ */ jsx3(
|
|
276
279
|
"button",
|
|
277
280
|
{
|
|
278
281
|
ref,
|
|
@@ -289,12 +292,12 @@ var init_button = __esm({
|
|
|
289
292
|
|
|
290
293
|
// src/components/ui/button/split-button.tsx
|
|
291
294
|
import { cva as cva2 } from "class-variance-authority";
|
|
292
|
-
import
|
|
293
|
-
import { jsx as
|
|
294
|
-
function Half({ variant, size, side, href, openInNewTab, prefetch, onClick, disabled, type = "button", ariaLabel, children }) {
|
|
295
|
-
const classes = splitHalfVariants({ variant, size, side });
|
|
295
|
+
import React4 from "react";
|
|
296
|
+
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
297
|
+
function Half({ variant, size, side, href, openInNewTab, prefetch, onClick, disabled, grow, type = "button", ariaLabel, children }) {
|
|
298
|
+
const classes = cn(splitHalfVariants({ variant, size, side }), grow && "flex-1");
|
|
296
299
|
if (href) {
|
|
297
|
-
return /* @__PURE__ */
|
|
300
|
+
return /* @__PURE__ */ jsx4(
|
|
298
301
|
next_link_default,
|
|
299
302
|
{
|
|
300
303
|
href,
|
|
@@ -310,7 +313,7 @@ function Half({ variant, size, side, href, openInNewTab, prefetch, onClick, disa
|
|
|
310
313
|
}
|
|
311
314
|
);
|
|
312
315
|
}
|
|
313
|
-
return /* @__PURE__ */
|
|
316
|
+
return /* @__PURE__ */ jsx4(
|
|
314
317
|
"button",
|
|
315
318
|
{
|
|
316
319
|
type,
|
|
@@ -376,7 +379,7 @@ var init_split_button = __esm({
|
|
|
376
379
|
],
|
|
377
380
|
defaultVariants: { variant: "accent", size: "default", side: "main" }
|
|
378
381
|
});
|
|
379
|
-
SplitButton =
|
|
382
|
+
SplitButton = React4.forwardRef(function SplitButton2({
|
|
380
383
|
variant = "accent",
|
|
381
384
|
size = "default",
|
|
382
385
|
fullWidth = false,
|
|
@@ -395,7 +398,7 @@ var init_split_button = __esm({
|
|
|
395
398
|
"aria-label": ariaLabel,
|
|
396
399
|
groupAriaLabel
|
|
397
400
|
}, ref) {
|
|
398
|
-
return /* @__PURE__ */
|
|
401
|
+
return /* @__PURE__ */ jsxs4(
|
|
399
402
|
"div",
|
|
400
403
|
{
|
|
401
404
|
ref,
|
|
@@ -403,7 +406,7 @@ var init_split_button = __esm({
|
|
|
403
406
|
"aria-label": groupAriaLabel,
|
|
404
407
|
className: cn("inline-flex items-stretch", fullWidth && "w-full", className),
|
|
405
408
|
children: [
|
|
406
|
-
/* @__PURE__ */
|
|
409
|
+
/* @__PURE__ */ jsxs4(
|
|
407
410
|
Half,
|
|
408
411
|
{
|
|
409
412
|
variant,
|
|
@@ -414,16 +417,17 @@ var init_split_button = __esm({
|
|
|
414
417
|
prefetch,
|
|
415
418
|
onClick,
|
|
416
419
|
disabled: disabled || mainDisabled,
|
|
420
|
+
grow: fullWidth,
|
|
417
421
|
type,
|
|
418
422
|
ariaLabel,
|
|
419
423
|
children: [
|
|
420
|
-
leftIcon && /* @__PURE__ */
|
|
421
|
-
/* @__PURE__ */
|
|
422
|
-
rightIcon && /* @__PURE__ */
|
|
424
|
+
leftIcon && /* @__PURE__ */ jsx4("span", { className: "inline-flex items-center", children: leftIcon }),
|
|
425
|
+
/* @__PURE__ */ jsx4("span", { children }),
|
|
426
|
+
rightIcon && /* @__PURE__ */ jsx4("span", { className: "inline-flex items-center", children: rightIcon })
|
|
423
427
|
]
|
|
424
428
|
}
|
|
425
429
|
),
|
|
426
|
-
/* @__PURE__ */
|
|
430
|
+
/* @__PURE__ */ jsx4(
|
|
427
431
|
Half,
|
|
428
432
|
{
|
|
429
433
|
variant,
|
|
@@ -435,7 +439,7 @@ var init_split_button = __esm({
|
|
|
435
439
|
onClick: iconAction.onClick,
|
|
436
440
|
disabled: disabled || iconAction.disabled,
|
|
437
441
|
ariaLabel: iconAction["aria-label"],
|
|
438
|
-
children: /* @__PURE__ */
|
|
442
|
+
children: /* @__PURE__ */ jsx4("span", { className: "inline-flex items-center", children: iconAction.icon })
|
|
439
443
|
}
|
|
440
444
|
)
|
|
441
445
|
]
|
|
@@ -454,30 +458,173 @@ var init_button2 = __esm({
|
|
|
454
458
|
}
|
|
455
459
|
});
|
|
456
460
|
|
|
461
|
+
// src/components/ui/field-wrapper.tsx
|
|
462
|
+
init_cn();
|
|
463
|
+
import * as React from "react";
|
|
464
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
465
|
+
var errorVariantClasses = {
|
|
466
|
+
error: "text-ods-error",
|
|
467
|
+
warning: "text-[var(--ods-attention-yellow-warning)]"
|
|
468
|
+
};
|
|
469
|
+
var FieldWrapper = React.forwardRef(
|
|
470
|
+
({ label, error, errorVariant = "error", className, children }, ref) => {
|
|
471
|
+
const hasChrome = label != null || error != null;
|
|
472
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: cn(hasChrome ? "relative flex w-full flex-col" : "contents", className), children: [
|
|
473
|
+
label && /* @__PURE__ */ jsx("label", { className: "text-h4 text-ods-text-primary mb-1", children: label }),
|
|
474
|
+
children,
|
|
475
|
+
error && /* @__PURE__ */ jsx("p", { className: cn("absolute bottom-0 left-0 right-0 translate-y-full text-h6 truncate", errorVariantClasses[errorVariant]), title: error, children: error })
|
|
476
|
+
] });
|
|
477
|
+
}
|
|
478
|
+
);
|
|
479
|
+
FieldWrapper.displayName = "FieldWrapper";
|
|
480
|
+
|
|
481
|
+
// src/components/ui/input.tsx
|
|
482
|
+
init_cn();
|
|
483
|
+
import * as React2 from "react";
|
|
484
|
+
import { Loader2 } from "lucide-react";
|
|
485
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
486
|
+
var invalidBorderClasses = {
|
|
487
|
+
error: "border-ods-error hover:border-ods-error has-[:focus]:border-ods-error",
|
|
488
|
+
warning: "!border-[var(--ods-attention-yellow-warning)] hover:!border-[var(--ods-attention-yellow-warning)] has-[:focus]:!border-[var(--ods-attention-yellow-warning)]"
|
|
489
|
+
};
|
|
490
|
+
var Input = React2.forwardRef(
|
|
491
|
+
({ className, type, invalid = false, startAdornment, endAdornment, label, error, errorVariant = "error", loading = false, ...props }, ref) => {
|
|
492
|
+
const isInvalid = invalid || !!error;
|
|
493
|
+
if (type === "range") {
|
|
494
|
+
const rangeInput = /* @__PURE__ */ jsx2(
|
|
495
|
+
"input",
|
|
496
|
+
{
|
|
497
|
+
type: "range",
|
|
498
|
+
className: cn(
|
|
499
|
+
"w-full cursor-pointer appearance-none rounded-full bg-white/30 h-1",
|
|
500
|
+
// Webkit (Chrome/Safari) thumb
|
|
501
|
+
"[&::-webkit-slider-thumb]:appearance-none",
|
|
502
|
+
"[&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3",
|
|
503
|
+
"[&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white",
|
|
504
|
+
"[&::-webkit-slider-thumb]:cursor-pointer [&::-webkit-slider-thumb]:shadow-sm",
|
|
505
|
+
// Firefox thumb
|
|
506
|
+
"[&::-moz-range-thumb]:w-3 [&::-moz-range-thumb]:h-3",
|
|
507
|
+
"[&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:bg-white",
|
|
508
|
+
"[&::-moz-range-thumb]:border-0 [&::-moz-range-thumb]:cursor-pointer",
|
|
509
|
+
// Firefox track
|
|
510
|
+
"[&::-moz-range-track]:bg-transparent",
|
|
511
|
+
// Disabled
|
|
512
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
513
|
+
className
|
|
514
|
+
),
|
|
515
|
+
ref,
|
|
516
|
+
...props
|
|
517
|
+
}
|
|
518
|
+
);
|
|
519
|
+
return label ? /* @__PURE__ */ jsx2(FieldWrapper, { label, error, errorVariant, children: rangeInput }) : rangeInput;
|
|
520
|
+
}
|
|
521
|
+
const content = /* @__PURE__ */ jsxs2(
|
|
522
|
+
"label",
|
|
523
|
+
{
|
|
524
|
+
"data-invalid": isInvalid || void 0,
|
|
525
|
+
className: cn(
|
|
526
|
+
// Layout & spacing
|
|
527
|
+
"flex w-full items-center gap-2 rounded-[6px] border px-3 h-11 md:h-12 cursor-text",
|
|
528
|
+
// Focus-within states
|
|
529
|
+
"has-[:focus-visible]:outline-none",
|
|
530
|
+
"group",
|
|
531
|
+
// Animations & touch UX
|
|
532
|
+
"transition-colors duration-200",
|
|
533
|
+
// Theme palette
|
|
534
|
+
"bg-ods-card border-ods-border has-[:focus]:border-ods-accent",
|
|
535
|
+
// Hover & active (not disabled)
|
|
536
|
+
!props.disabled && "hover:bg-ods-bg-hover hover:border-ods-border-hover active:bg-ods-bg-active active:border-ods-border-active",
|
|
537
|
+
// Disabled
|
|
538
|
+
props.disabled && "!cursor-not-allowed bg-ods-bg",
|
|
539
|
+
// Invalid
|
|
540
|
+
isInvalid && invalidBorderClasses[errorVariant],
|
|
541
|
+
className
|
|
542
|
+
),
|
|
543
|
+
children: [
|
|
544
|
+
startAdornment && /* @__PURE__ */ jsx2("span", { className: "text-h6 flex-shrink-0 text-ods-text-secondary transition-colors duration-200 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6", children: startAdornment }),
|
|
545
|
+
/* @__PURE__ */ jsx2(
|
|
546
|
+
"input",
|
|
547
|
+
{
|
|
548
|
+
type,
|
|
549
|
+
className: cn(
|
|
550
|
+
// Layout
|
|
551
|
+
"flex-1 min-w-0 bg-transparent border-none outline-none",
|
|
552
|
+
// Typography
|
|
553
|
+
"text-h4",
|
|
554
|
+
// Colors
|
|
555
|
+
"text-ods-text-primary placeholder:text-ods-text-secondary",
|
|
556
|
+
// File input adjustments
|
|
557
|
+
"file:border-0 file:bg-transparent",
|
|
558
|
+
// Disabled
|
|
559
|
+
"disabled:cursor-not-allowed disabled:text-ods-text-disabled disabled:placeholder:text-ods-border",
|
|
560
|
+
// Touch
|
|
561
|
+
"touch-manipulation",
|
|
562
|
+
// Autofill override
|
|
563
|
+
"[&:-webkit-autofill]:[-webkit-box-shadow:0_0_0_9999px_transparent_inset] [&:-webkit-autofill]:[-webkit-text-fill-color:var(--color-text-primary)] [&:-webkit-autofill]:[caret-color:var(--color-text-primary)] [&:-webkit-autofill]:[transition:background-color_9999s_ease-in-out_0s]"
|
|
564
|
+
),
|
|
565
|
+
ref,
|
|
566
|
+
...props
|
|
567
|
+
}
|
|
568
|
+
),
|
|
569
|
+
loading && /* @__PURE__ */ jsx2(Loader2, { className: "animate-spin flex-shrink-0 text-ods-text-secondary size-4 md:size-6" }),
|
|
570
|
+
!loading && endAdornment && /* @__PURE__ */ jsx2("span", { className: "text-h6 flex-shrink-0 text-ods-text-secondary transition-colors duration-200 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6", children: endAdornment })
|
|
571
|
+
]
|
|
572
|
+
}
|
|
573
|
+
);
|
|
574
|
+
return /* @__PURE__ */ jsx2(FieldWrapper, { label, error, errorVariant, children: content });
|
|
575
|
+
}
|
|
576
|
+
);
|
|
577
|
+
Input.displayName = "Input";
|
|
578
|
+
|
|
579
|
+
// src/components/ui/checkbox.tsx
|
|
580
|
+
init_cn();
|
|
581
|
+
import * as React5 from "react";
|
|
582
|
+
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
583
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
584
|
+
var Checkbox = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
585
|
+
CheckboxPrimitive.Root,
|
|
586
|
+
{
|
|
587
|
+
ref,
|
|
588
|
+
className: cn(
|
|
589
|
+
"peer h-4 w-4 shrink-0 rounded-sm border border-ods-border bg-ods-card focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-ods-accent data-[state=checked]:border-ods-accent",
|
|
590
|
+
className
|
|
591
|
+
),
|
|
592
|
+
...props,
|
|
593
|
+
children: /* @__PURE__ */ jsx5(
|
|
594
|
+
CheckboxPrimitive.Indicator,
|
|
595
|
+
{
|
|
596
|
+
className: cn("flex items-center justify-center text-ods-text-on-accent"),
|
|
597
|
+
children: /* @__PURE__ */ jsx5(CheckboxCheckmarkIcon, { size: 10 })
|
|
598
|
+
}
|
|
599
|
+
)
|
|
600
|
+
}
|
|
601
|
+
));
|
|
602
|
+
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
603
|
+
|
|
457
604
|
// src/components/ui/dropdown-menu.tsx
|
|
458
605
|
init_cn();
|
|
459
|
-
import * as
|
|
606
|
+
import * as React7 from "react";
|
|
460
607
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
461
608
|
import { Check, ChevronRight, Circle } from "lucide-react";
|
|
462
609
|
|
|
463
610
|
// src/components/ui/portal-container.tsx
|
|
464
|
-
import * as
|
|
465
|
-
var PortalContainerContext =
|
|
611
|
+
import * as React6 from "react";
|
|
612
|
+
var PortalContainerContext = React6.createContext(
|
|
466
613
|
null
|
|
467
614
|
);
|
|
468
615
|
function usePortalContainer() {
|
|
469
|
-
return
|
|
616
|
+
return React6.useContext(PortalContainerContext);
|
|
470
617
|
}
|
|
471
618
|
|
|
472
619
|
// src/components/ui/dropdown-menu.tsx
|
|
473
|
-
import { jsx as
|
|
620
|
+
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
474
621
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
475
622
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
476
623
|
var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
477
624
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
478
625
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
479
626
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
480
|
-
var DropdownMenuSubTrigger =
|
|
627
|
+
var DropdownMenuSubTrigger = React7.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs5(
|
|
481
628
|
DropdownMenuPrimitive.SubTrigger,
|
|
482
629
|
{
|
|
483
630
|
ref,
|
|
@@ -489,12 +636,12 @@ var DropdownMenuSubTrigger = React4.forwardRef(({ className, inset, children, ..
|
|
|
489
636
|
...props,
|
|
490
637
|
children: [
|
|
491
638
|
children,
|
|
492
|
-
/* @__PURE__ */
|
|
639
|
+
/* @__PURE__ */ jsx6(ChevronRight, { className: "ml-auto" })
|
|
493
640
|
]
|
|
494
641
|
}
|
|
495
642
|
));
|
|
496
643
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
497
|
-
var DropdownMenuSubContent =
|
|
644
|
+
var DropdownMenuSubContent = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
|
|
498
645
|
DropdownMenuPrimitive.SubContent,
|
|
499
646
|
{
|
|
500
647
|
ref,
|
|
@@ -506,9 +653,9 @@ var DropdownMenuSubContent = React4.forwardRef(({ className, ...props }, ref) =>
|
|
|
506
653
|
}
|
|
507
654
|
));
|
|
508
655
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
509
|
-
var DropdownMenuContent =
|
|
656
|
+
var DropdownMenuContent = React7.forwardRef(({ className, sideOffset = 4, ...props }, ref) => {
|
|
510
657
|
const container = usePortalContainer();
|
|
511
|
-
return /* @__PURE__ */
|
|
658
|
+
return /* @__PURE__ */ jsx6(DropdownMenuPrimitive.Portal, { container: container ?? void 0, children: /* @__PURE__ */ jsx6(
|
|
512
659
|
DropdownMenuPrimitive.Content,
|
|
513
660
|
{
|
|
514
661
|
ref,
|
|
@@ -522,7 +669,7 @@ var DropdownMenuContent = React4.forwardRef(({ className, sideOffset = 4, ...pro
|
|
|
522
669
|
) });
|
|
523
670
|
});
|
|
524
671
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
525
|
-
var DropdownMenuItem =
|
|
672
|
+
var DropdownMenuItem = React7.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx6(
|
|
526
673
|
DropdownMenuPrimitive.Item,
|
|
527
674
|
{
|
|
528
675
|
ref,
|
|
@@ -535,7 +682,7 @@ var DropdownMenuItem = React4.forwardRef(({ className, inset, ...props }, ref) =
|
|
|
535
682
|
}
|
|
536
683
|
));
|
|
537
684
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
538
|
-
var DropdownMenuCheckboxItem =
|
|
685
|
+
var DropdownMenuCheckboxItem = React7.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs5(
|
|
539
686
|
DropdownMenuPrimitive.CheckboxItem,
|
|
540
687
|
{
|
|
541
688
|
ref,
|
|
@@ -546,13 +693,13 @@ var DropdownMenuCheckboxItem = React4.forwardRef(({ className, children, checked
|
|
|
546
693
|
checked,
|
|
547
694
|
...props,
|
|
548
695
|
children: [
|
|
549
|
-
/* @__PURE__ */
|
|
696
|
+
/* @__PURE__ */ jsx6("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx6(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx6(Check, { className: "h-4 w-4" }) }) }),
|
|
550
697
|
children
|
|
551
698
|
]
|
|
552
699
|
}
|
|
553
700
|
));
|
|
554
701
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
555
|
-
var DropdownMenuRadioItem =
|
|
702
|
+
var DropdownMenuRadioItem = React7.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs5(
|
|
556
703
|
DropdownMenuPrimitive.RadioItem,
|
|
557
704
|
{
|
|
558
705
|
ref,
|
|
@@ -562,13 +709,13 @@ var DropdownMenuRadioItem = React4.forwardRef(({ className, children, ...props }
|
|
|
562
709
|
),
|
|
563
710
|
...props,
|
|
564
711
|
children: [
|
|
565
|
-
/* @__PURE__ */
|
|
712
|
+
/* @__PURE__ */ jsx6("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx6(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx6(Circle, { className: "h-2 w-2 fill-ods-accent" }) }) }),
|
|
566
713
|
children
|
|
567
714
|
]
|
|
568
715
|
}
|
|
569
716
|
));
|
|
570
717
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
571
|
-
var DropdownMenuLabel =
|
|
718
|
+
var DropdownMenuLabel = React7.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx6(
|
|
572
719
|
DropdownMenuPrimitive.Label,
|
|
573
720
|
{
|
|
574
721
|
ref,
|
|
@@ -581,7 +728,7 @@ var DropdownMenuLabel = React4.forwardRef(({ className, inset, ...props }, ref)
|
|
|
581
728
|
}
|
|
582
729
|
));
|
|
583
730
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
584
|
-
var DropdownMenuSeparator =
|
|
731
|
+
var DropdownMenuSeparator = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
|
|
585
732
|
DropdownMenuPrimitive.Separator,
|
|
586
733
|
{
|
|
587
734
|
ref,
|
|
@@ -594,7 +741,7 @@ var DropdownMenuShortcut = ({
|
|
|
594
741
|
className,
|
|
595
742
|
...props
|
|
596
743
|
}) => {
|
|
597
|
-
return /* @__PURE__ */
|
|
744
|
+
return /* @__PURE__ */ jsx6(
|
|
598
745
|
"span",
|
|
599
746
|
{
|
|
600
747
|
className: cn("ml-auto text-xs tracking-widest text-ods-text-secondary opacity-60", className),
|
|
@@ -604,13 +751,161 @@ var DropdownMenuShortcut = ({
|
|
|
604
751
|
};
|
|
605
752
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
606
753
|
|
|
754
|
+
// src/components/ui/skeleton.tsx
|
|
755
|
+
init_cn();
|
|
756
|
+
import * as React8 from "react";
|
|
757
|
+
import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
758
|
+
var Skeleton = React8.forwardRef(
|
|
759
|
+
({ className, ...props }, ref) => {
|
|
760
|
+
return /* @__PURE__ */ jsx7(
|
|
761
|
+
"div",
|
|
762
|
+
{
|
|
763
|
+
ref,
|
|
764
|
+
className: cn(
|
|
765
|
+
"animate-pulse rounded-md bg-ods-border",
|
|
766
|
+
className
|
|
767
|
+
),
|
|
768
|
+
...props
|
|
769
|
+
}
|
|
770
|
+
);
|
|
771
|
+
}
|
|
772
|
+
);
|
|
773
|
+
Skeleton.displayName = "Skeleton";
|
|
774
|
+
var SkeletonText = React8.forwardRef(
|
|
775
|
+
({ lines = 1, className, ...props }, ref) => {
|
|
776
|
+
return /* @__PURE__ */ jsx7("div", { ref, className: cn("space-y-2", className), ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx7(
|
|
777
|
+
Skeleton,
|
|
778
|
+
{
|
|
779
|
+
className: cn(
|
|
780
|
+
"h-4",
|
|
781
|
+
i === lines - 1 && lines > 1 && "w-3/4"
|
|
782
|
+
// Last line shorter for multi-line
|
|
783
|
+
)
|
|
784
|
+
},
|
|
785
|
+
i
|
|
786
|
+
)) });
|
|
787
|
+
}
|
|
788
|
+
);
|
|
789
|
+
SkeletonText.displayName = "SkeletonText";
|
|
790
|
+
var SkeletonCard = React8.forwardRef(
|
|
791
|
+
({ showImage = false, className, ...props }, ref) => {
|
|
792
|
+
return /* @__PURE__ */ jsxs6(
|
|
793
|
+
"div",
|
|
794
|
+
{
|
|
795
|
+
ref,
|
|
796
|
+
className: cn(
|
|
797
|
+
"rounded-lg border border-ods-border overflow-hidden",
|
|
798
|
+
className
|
|
799
|
+
),
|
|
800
|
+
...props,
|
|
801
|
+
children: [
|
|
802
|
+
showImage && /* @__PURE__ */ jsx7(Skeleton, { className: "h-48 w-full" }),
|
|
803
|
+
/* @__PURE__ */ jsxs6("div", { className: "p-6", children: [
|
|
804
|
+
/* @__PURE__ */ jsx7(Skeleton, { className: "h-6 w-3/4 mb-4" }),
|
|
805
|
+
/* @__PURE__ */ jsx7(SkeletonText, { lines: 3 })
|
|
806
|
+
] })
|
|
807
|
+
]
|
|
808
|
+
}
|
|
809
|
+
);
|
|
810
|
+
}
|
|
811
|
+
);
|
|
812
|
+
SkeletonCard.displayName = "SkeletonCard";
|
|
813
|
+
var SkeletonGrid = React8.forwardRef(
|
|
814
|
+
({ columns = 3, items = 6, showImages = false, className, ...props }, ref) => {
|
|
815
|
+
return /* @__PURE__ */ jsx7(
|
|
816
|
+
"div",
|
|
817
|
+
{
|
|
818
|
+
ref,
|
|
819
|
+
className: cn(
|
|
820
|
+
`grid grid-cols-1 gap-6`,
|
|
821
|
+
columns === 2 && "md:grid-cols-2",
|
|
822
|
+
columns === 3 && "md:grid-cols-3",
|
|
823
|
+
columns === 4 && "md:grid-cols-4",
|
|
824
|
+
className
|
|
825
|
+
),
|
|
826
|
+
...props,
|
|
827
|
+
children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsx7(SkeletonCard, { showImage: showImages }, i))
|
|
828
|
+
}
|
|
829
|
+
);
|
|
830
|
+
}
|
|
831
|
+
);
|
|
832
|
+
SkeletonGrid.displayName = "SkeletonGrid";
|
|
833
|
+
var SkeletonButton = React8.forwardRef(
|
|
834
|
+
({ size = "default", className, ...props }, ref) => {
|
|
835
|
+
const sizeClasses = {
|
|
836
|
+
sm: "h-8 w-20",
|
|
837
|
+
default: "h-10 w-32",
|
|
838
|
+
lg: "h-12 w-40"
|
|
839
|
+
};
|
|
840
|
+
return /* @__PURE__ */ jsx7(
|
|
841
|
+
Skeleton,
|
|
842
|
+
{
|
|
843
|
+
ref,
|
|
844
|
+
className: cn(
|
|
845
|
+
"rounded-lg",
|
|
846
|
+
sizeClasses[size],
|
|
847
|
+
className
|
|
848
|
+
),
|
|
849
|
+
...props
|
|
850
|
+
}
|
|
851
|
+
);
|
|
852
|
+
}
|
|
853
|
+
);
|
|
854
|
+
SkeletonButton.displayName = "SkeletonButton";
|
|
855
|
+
var SkeletonHeading = React8.forwardRef(
|
|
856
|
+
({ level = 1, className, ...props }, ref) => {
|
|
857
|
+
const heightClasses = {
|
|
858
|
+
1: "h-12",
|
|
859
|
+
2: "h-10",
|
|
860
|
+
3: "h-8",
|
|
861
|
+
4: "h-7",
|
|
862
|
+
5: "h-6",
|
|
863
|
+
6: "h-5"
|
|
864
|
+
};
|
|
865
|
+
return /* @__PURE__ */ jsx7(
|
|
866
|
+
Skeleton,
|
|
867
|
+
{
|
|
868
|
+
ref,
|
|
869
|
+
className: cn(
|
|
870
|
+
heightClasses[level],
|
|
871
|
+
"w-3/4",
|
|
872
|
+
className
|
|
873
|
+
),
|
|
874
|
+
...props
|
|
875
|
+
}
|
|
876
|
+
);
|
|
877
|
+
}
|
|
878
|
+
);
|
|
879
|
+
SkeletonHeading.displayName = "SkeletonHeading";
|
|
880
|
+
var SkeletonList = React8.forwardRef(
|
|
881
|
+
({ items = 5, className, ...props }, ref) => {
|
|
882
|
+
return /* @__PURE__ */ jsx7("div", { ref, className: cn("space-y-3", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-3", children: [
|
|
883
|
+
/* @__PURE__ */ jsx7(Skeleton, { className: "h-10 w-10 rounded-full flex-shrink-0" }),
|
|
884
|
+
/* @__PURE__ */ jsxs6("div", { className: "flex-1", children: [
|
|
885
|
+
/* @__PURE__ */ jsx7(Skeleton, { className: "h-4 w-1/3 mb-1" }),
|
|
886
|
+
/* @__PURE__ */ jsx7(Skeleton, { className: "h-3 w-1/2" })
|
|
887
|
+
] })
|
|
888
|
+
] }, i)) });
|
|
889
|
+
}
|
|
890
|
+
);
|
|
891
|
+
SkeletonList.displayName = "SkeletonList";
|
|
892
|
+
var SkeletonNavigation = React8.forwardRef(
|
|
893
|
+
({ items = 6, className, ...props }, ref) => {
|
|
894
|
+
return /* @__PURE__ */ jsx7("div", { ref, className: cn("flex items-center gap-6", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsx7(Skeleton, { className: "h-5 w-20" }, i)) });
|
|
895
|
+
}
|
|
896
|
+
);
|
|
897
|
+
SkeletonNavigation.displayName = "SkeletonNavigation";
|
|
898
|
+
|
|
607
899
|
export {
|
|
900
|
+
FieldWrapper,
|
|
901
|
+
Input,
|
|
608
902
|
buttonVariants,
|
|
609
903
|
Button,
|
|
610
904
|
init_button,
|
|
611
905
|
SplitButton,
|
|
612
906
|
init_split_button,
|
|
613
907
|
init_button2,
|
|
908
|
+
Checkbox,
|
|
614
909
|
PortalContainerContext,
|
|
615
910
|
usePortalContainer,
|
|
616
911
|
DropdownMenu,
|
|
@@ -627,6 +922,14 @@ export {
|
|
|
627
922
|
DropdownMenuRadioItem,
|
|
628
923
|
DropdownMenuLabel,
|
|
629
924
|
DropdownMenuSeparator,
|
|
630
|
-
DropdownMenuShortcut
|
|
925
|
+
DropdownMenuShortcut,
|
|
926
|
+
Skeleton,
|
|
927
|
+
SkeletonText,
|
|
928
|
+
SkeletonCard,
|
|
929
|
+
SkeletonGrid,
|
|
930
|
+
SkeletonButton,
|
|
931
|
+
SkeletonHeading,
|
|
932
|
+
SkeletonList,
|
|
933
|
+
SkeletonNavigation
|
|
631
934
|
};
|
|
632
|
-
//# sourceMappingURL=chunk-
|
|
935
|
+
//# sourceMappingURL=chunk-JALO4TAZ.js.map
|