@flamingo-stack/openframe-frontend-core 0.0.692 → 0.0.693-snapshot.20261002120603
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/dist/chat-protocol/events.d.ts +3 -0
- package/dist/chat-protocol/events.d.ts.map +1 -1
- package/dist/chat-protocol/frames.d.ts +6 -0
- package/dist/chat-protocol/frames.d.ts.map +1 -1
- package/dist/chat-protocol/index.cjs +26 -1
- package/dist/chat-protocol/index.cjs.map +1 -1
- package/dist/chat-protocol/index.d.ts +1 -0
- package/dist/chat-protocol/index.d.ts.map +1 -1
- package/dist/chat-protocol/index.js +23 -2
- package/dist/chat-protocol/index.js.map +1 -1
- package/dist/chat-protocol/leading-frames.d.ts.map +1 -1
- package/dist/chat-protocol/progress.d.ts +35 -0
- package/dist/chat-protocol/progress.d.ts.map +1 -0
- package/dist/{chunk-GDZ7IC5B.js → chunk-234IIQIS.js} +2 -2
- package/dist/{chunk-KDCIYRZV.cjs → chunk-2EQED5SZ.cjs} +34 -34
- package/dist/{chunk-KDCIYRZV.cjs.map → chunk-2EQED5SZ.cjs.map} +1 -1
- package/dist/{chunk-JUNOY5HK.js → chunk-2HX6AADM.js} +15 -17
- package/dist/chunk-2HX6AADM.js.map +1 -0
- package/dist/{chunk-X5XFKI6N.js → chunk-33L2IR62.js} +3 -3
- package/dist/{chunk-A5NHAHV6.js → chunk-42LIHMRA.js} +4 -4
- package/dist/{chunk-MIZU2OTO.cjs → chunk-63BLVGXZ.cjs} +4 -4
- package/dist/{chunk-MIZU2OTO.cjs.map → chunk-63BLVGXZ.cjs.map} +1 -1
- package/dist/{chunk-TEIHEFXP.js → chunk-6ZSDKDOV.js} +8 -8
- package/dist/{chunk-UVUNBXS6.js → chunk-7IINE3MK.js} +48 -5
- package/dist/chunk-7IINE3MK.js.map +1 -0
- package/dist/{chunk-N3526CTH.cjs → chunk-7TO3CWPM.cjs} +3 -3
- package/dist/{chunk-N3526CTH.cjs.map → chunk-7TO3CWPM.cjs.map} +1 -1
- package/dist/{chunk-TXFGG47A.js → chunk-7VO6NC67.js} +4 -4
- package/dist/{chunk-SC44YJCF.js → chunk-A7RKT5SO.js} +2 -2
- package/dist/{chunk-Y7ZEVTLC.js → chunk-BW6YBATM.js} +141 -71
- package/dist/chunk-BW6YBATM.js.map +1 -0
- package/dist/{chunk-GZRU2A4L.cjs → chunk-C27F6GBZ.cjs} +790 -720
- package/dist/chunk-C27F6GBZ.cjs.map +1 -0
- package/dist/{chunk-DVSPRY2V.cjs → chunk-ESMDIJIN.cjs} +3 -3
- package/dist/{chunk-DVSPRY2V.cjs.map → chunk-ESMDIJIN.cjs.map} +1 -1
- package/dist/{chunk-EXWS2QSD.cjs → chunk-FNGX5WZM.cjs} +497 -474
- package/dist/chunk-FNGX5WZM.cjs.map +1 -0
- package/dist/{chunk-RK47E3PP.js → chunk-GWQCUC53.js} +4 -4
- package/dist/{chunk-AVAZ6BD6.js → chunk-HBMGSGZY.js} +6 -6
- package/dist/{chunk-HM7ZGABI.js → chunk-HEBLLLLD.js} +2 -2
- package/dist/{chunk-7BNWMOPM.cjs → chunk-HJZ3UTUE.cjs} +83 -83
- package/dist/{chunk-7BNWMOPM.cjs.map → chunk-HJZ3UTUE.cjs.map} +1 -1
- package/dist/{chunk-ATREVNIN.cjs → chunk-JB25CCOB.cjs} +47 -47
- package/dist/{chunk-ATREVNIN.cjs.map → chunk-JB25CCOB.cjs.map} +1 -1
- package/dist/{chunk-Q25VYAEL.cjs → chunk-JISKS7RJ.cjs} +26 -26
- package/dist/{chunk-Q25VYAEL.cjs.map → chunk-JISKS7RJ.cjs.map} +1 -1
- package/dist/{chunk-WTYQCT4A.cjs → chunk-K5GSLGV2.cjs} +18 -18
- package/dist/{chunk-WTYQCT4A.cjs.map → chunk-K5GSLGV2.cjs.map} +1 -1
- package/dist/{chunk-CG7OWW7X.cjs → chunk-K5K2FRQK.cjs} +19 -19
- package/dist/{chunk-CG7OWW7X.cjs.map → chunk-K5K2FRQK.cjs.map} +1 -1
- package/dist/{chunk-CKUPANVU.cjs → chunk-KBSL4FCL.cjs} +9 -9
- package/dist/{chunk-CKUPANVU.cjs.map → chunk-KBSL4FCL.cjs.map} +1 -1
- package/dist/{chunk-SDORFSFK.cjs → chunk-KDUDL4PB.cjs} +37 -37
- package/dist/{chunk-SDORFSFK.cjs.map → chunk-KDUDL4PB.cjs.map} +1 -1
- package/dist/{chunk-5XPK2QGU.cjs → chunk-KJHIFF6H.cjs} +16 -16
- package/dist/{chunk-5XPK2QGU.cjs.map → chunk-KJHIFF6H.cjs.map} +1 -1
- package/dist/{chunk-MCNQKS6I.js → chunk-LHYOESIQ.js} +4 -4
- package/dist/{chunk-DUURFYGS.cjs → chunk-LPFU6U7O.cjs} +5 -5
- package/dist/{chunk-DUURFYGS.cjs.map → chunk-LPFU6U7O.cjs.map} +1 -1
- package/dist/{chunk-ZAV2F4VX.js → chunk-N7HFUBOV.js} +3 -3
- package/dist/{chunk-53O6PQ3F.cjs → chunk-NDLFK57D.cjs} +7 -7
- package/dist/{chunk-53O6PQ3F.cjs.map → chunk-NDLFK57D.cjs.map} +1 -1
- package/dist/{chunk-Z7QCNCBN.js → chunk-O4RDXDVS.js} +12 -12
- package/dist/{chunk-F6LXGP6S.cjs → chunk-Q2B2MGFU.cjs} +7 -7
- package/dist/{chunk-F6LXGP6S.cjs.map → chunk-Q2B2MGFU.cjs.map} +1 -1
- package/dist/{chunk-CKO6NKNE.js → chunk-QP54LMXJ.js} +38 -15
- package/dist/{chunk-CKO6NKNE.js.map → chunk-QP54LMXJ.js.map} +1 -1
- package/dist/{chunk-QRA2JXE4.cjs → chunk-RE6PGOSS.cjs} +6 -8
- package/dist/chunk-RE6PGOSS.cjs.map +1 -0
- package/dist/{chunk-C2SVJVEB.js → chunk-SH5GPYSV.js} +2 -2
- package/dist/{chunk-KQZMM3QJ.cjs → chunk-SJFB4Z4L.cjs} +105 -105
- package/dist/{chunk-KQZMM3QJ.cjs.map → chunk-SJFB4Z4L.cjs.map} +1 -1
- package/dist/{chunk-7EPGJOKN.js → chunk-TA3JJFEO.js} +4 -4
- package/dist/{chunk-LYJJH4D6.js → chunk-TBR3UTFY.js} +6 -6
- package/dist/{chunk-USKQURNF.cjs → chunk-TG3VBMDG.cjs} +3 -3
- package/dist/{chunk-USKQURNF.cjs.map → chunk-TG3VBMDG.cjs.map} +1 -1
- package/dist/{chunk-IQTQIBZ3.js → chunk-TV5SZJ3N.js} +12 -12
- package/dist/{chunk-RLNNV46K.js → chunk-TXSQLORA.js} +6 -6
- package/dist/{chunk-LYQULSK4.js → chunk-UCXZRJIE.js} +7 -7
- package/dist/{chunk-I27PWVWE.cjs → chunk-WT4HURQN.cjs} +46 -3
- package/dist/chunk-WT4HURQN.cjs.map +1 -0
- package/dist/{chunk-XAOAYDGR.js → chunk-WZJWIZVH.js} +4 -4
- package/dist/{chunk-PKZGXRU2.js → chunk-XKNKGBUX.js} +10 -8
- package/dist/{chunk-PKZGXRU2.js.map → chunk-XKNKGBUX.js.map} +1 -1
- package/dist/{chunk-LNKLB7GM.cjs → chunk-XNTQHC26.cjs} +28 -28
- package/dist/{chunk-LNKLB7GM.cjs.map → chunk-XNTQHC26.cjs.map} +1 -1
- package/dist/{chunk-2YVTGPM7.js → chunk-XZILGCXJ.js} +2 -2
- package/dist/{chunk-DKJDO7YM.cjs → chunk-Y5AFMYYN.cjs} +46 -44
- package/dist/chunk-Y5AFMYYN.cjs.map +1 -0
- package/dist/{chunk-FTK3S57R.cjs → chunk-ZCPMWXIB.cjs} +25 -25
- package/dist/{chunk-FTK3S57R.cjs.map → chunk-ZCPMWXIB.cjs.map} +1 -1
- package/dist/{chunk-RTKF5AYA.cjs → chunk-ZUGAHQDB.cjs} +7 -7
- package/dist/{chunk-RTKF5AYA.cjs.map → chunk-ZUGAHQDB.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +21 -21
- package/dist/components/case-studies/index.js +8 -8
- package/dist/components/chat/chat-message-list.d.ts.map +1 -1
- package/dist/components/chat/chat-typing-indicator.d.ts.map +1 -1
- package/dist/components/chat/cycling-phrase.d.ts.map +1 -1
- package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-unified-chat.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +5 -5
- package/dist/components/chat/index.js +4 -4
- package/dist/components/chat/stream/chat-dialog-store.d.ts.map +1 -1
- package/dist/components/chat/stream/chat-stream-reducer.d.ts +4 -0
- package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -1
- 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/chat/types/unified-chat-state.types.d.ts +5 -0
- package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +9 -9
- package/dist/components/contact/index.js +8 -8
- package/dist/components/docs/index.cjs +12 -12
- package/dist/components/docs/index.js +11 -11
- package/dist/components/embeds/index.cjs +9 -9
- package/dist/components/embeds/index.js +8 -8
- package/dist/components/faq/index.cjs +10 -10
- package/dist/components/faq/index.js +9 -9
- package/dist/components/features/index.cjs +8 -8
- package/dist/components/features/index.js +7 -7
- package/dist/components/help-center-pages/index.cjs +107 -107
- package/dist/components/help-center-pages/index.js +22 -22
- package/dist/components/index.cjs +69 -69
- package/dist/components/index.js +22 -22
- package/dist/components/meeting-scheduler/index.cjs +59 -59
- package/dist/components/meeting-scheduler/index.js +9 -9
- package/dist/components/navigation/app-layout-drawer.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +11 -11
- package/dist/components/navigation/index.js +10 -10
- package/dist/components/onboarding-guides/index.cjs +12 -12
- package/dist/components/onboarding-guides/index.js +11 -11
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/tickets/index.cjs +13 -13
- package/dist/components/tickets/index.js +12 -12
- package/dist/components/ui/index.cjs +8 -8
- package/dist/components/ui/index.js +7 -7
- package/dist/components/ui/markdown/engine.d.ts +0 -21
- package/dist/components/ui/markdown/engine.d.ts.map +1 -1
- package/dist/hooks/index.cjs +6 -6
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.js +5 -5
- package/dist/hooks/use-authed-asset-src.d.ts.map +1 -1
- package/dist/index.cjs +15 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +12 -12
- package/dist/tailwind.config.cjs +14 -1
- package/dist/tailwind.config.cjs.map +1 -1
- package/dist/tailwind.config.js +14 -1
- package/dist/tailwind.config.js.map +1 -1
- package/eslint-config/README.md +13 -0
- package/eslint-config/base.js +15 -0
- package/eslint-config/webview-performance.js +75 -0
- package/package.json +1 -1
- package/src/chat-protocol/__tests__/progress.test.ts +39 -0
- package/src/chat-protocol/events.ts +3 -0
- package/src/chat-protocol/frames.ts +7 -0
- package/src/chat-protocol/index.ts +2 -0
- package/src/chat-protocol/leading-frames.ts +4 -1
- package/src/chat-protocol/progress.ts +55 -0
- package/src/components/chat/chat-message-enhanced.tsx +1 -1
- package/src/components/chat/chat-message-list.tsx +65 -15
- package/src/components/chat/chat-typing-indicator.tsx +18 -29
- package/src/components/chat/cycling-phrase.tsx +1 -11
- package/src/components/chat/embeddable-chat.tsx +14 -6
- package/src/components/chat/hooks/use-sse-chat-adapter.ts +2 -0
- package/src/components/chat/hooks/use-unified-chat.ts +1 -0
- package/src/components/chat/stream/__tests__/chat-stream-reducer-progress.test.ts +40 -0
- package/src/components/chat/stream/chat-dialog-store.ts +1 -0
- package/src/components/chat/stream/chat-stream-reducer.ts +13 -0
- package/src/components/chat/types/component.types.ts +2 -0
- package/src/components/chat/types/unified-chat-state.types.ts +6 -0
- package/src/components/navigation/app-layout-drawer.tsx +53 -7
- package/src/components/ui/__tests__/__snapshots__/markdown-parity.test.tsx.snap +29 -29
- package/src/components/ui/markdown/engine.tsx +56 -12
- package/src/hooks/use-authed-asset-src.ts +58 -6
- package/tailwind.config.ts +13 -0
- package/dist/chunk-DKJDO7YM.cjs.map +0 -1
- package/dist/chunk-EXWS2QSD.cjs.map +0 -1
- package/dist/chunk-GZRU2A4L.cjs.map +0 -1
- package/dist/chunk-I27PWVWE.cjs.map +0 -1
- package/dist/chunk-JUNOY5HK.js.map +0 -1
- package/dist/chunk-QRA2JXE4.cjs.map +0 -1
- package/dist/chunk-UVUNBXS6.js.map +0 -1
- package/dist/chunk-Y7ZEVTLC.js.map +0 -1
- /package/dist/{chunk-GDZ7IC5B.js.map → chunk-234IIQIS.js.map} +0 -0
- /package/dist/{chunk-X5XFKI6N.js.map → chunk-33L2IR62.js.map} +0 -0
- /package/dist/{chunk-A5NHAHV6.js.map → chunk-42LIHMRA.js.map} +0 -0
- /package/dist/{chunk-TEIHEFXP.js.map → chunk-6ZSDKDOV.js.map} +0 -0
- /package/dist/{chunk-TXFGG47A.js.map → chunk-7VO6NC67.js.map} +0 -0
- /package/dist/{chunk-SC44YJCF.js.map → chunk-A7RKT5SO.js.map} +0 -0
- /package/dist/{chunk-RK47E3PP.js.map → chunk-GWQCUC53.js.map} +0 -0
- /package/dist/{chunk-AVAZ6BD6.js.map → chunk-HBMGSGZY.js.map} +0 -0
- /package/dist/{chunk-HM7ZGABI.js.map → chunk-HEBLLLLD.js.map} +0 -0
- /package/dist/{chunk-MCNQKS6I.js.map → chunk-LHYOESIQ.js.map} +0 -0
- /package/dist/{chunk-ZAV2F4VX.js.map → chunk-N7HFUBOV.js.map} +0 -0
- /package/dist/{chunk-Z7QCNCBN.js.map → chunk-O4RDXDVS.js.map} +0 -0
- /package/dist/{chunk-C2SVJVEB.js.map → chunk-SH5GPYSV.js.map} +0 -0
- /package/dist/{chunk-7EPGJOKN.js.map → chunk-TA3JJFEO.js.map} +0 -0
- /package/dist/{chunk-LYJJH4D6.js.map → chunk-TBR3UTFY.js.map} +0 -0
- /package/dist/{chunk-IQTQIBZ3.js.map → chunk-TV5SZJ3N.js.map} +0 -0
- /package/dist/{chunk-RLNNV46K.js.map → chunk-TXSQLORA.js.map} +0 -0
- /package/dist/{chunk-LYQULSK4.js.map → chunk-UCXZRJIE.js.map} +0 -0
- /package/dist/{chunk-XAOAYDGR.js.map → chunk-WZJWIZVH.js.map} +0 -0
- /package/dist/{chunk-2YVTGPM7.js.map → chunk-XZILGCXJ.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
SoftwareInfo,
|
|
10
10
|
SoftwareSourceBadge,
|
|
11
11
|
ToolBadge
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-TBR3UTFY.js";
|
|
13
13
|
import {
|
|
14
14
|
AppHeader,
|
|
15
15
|
AppLayout,
|
|
@@ -29,14 +29,14 @@ import {
|
|
|
29
29
|
SlidingSidebar,
|
|
30
30
|
TicketAlertsButton,
|
|
31
31
|
TopNavigation
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-XKNKGBUX.js";
|
|
33
33
|
import {
|
|
34
34
|
MobileNavigationDropdown,
|
|
35
35
|
MultiLevelNavigation,
|
|
36
36
|
StickySectionNav,
|
|
37
37
|
useSectionNavigation
|
|
38
|
-
} from "./chunk-
|
|
39
|
-
import "./chunk-
|
|
38
|
+
} from "./chunk-33L2IR62.js";
|
|
39
|
+
import "./chunk-LHYOESIQ.js";
|
|
40
40
|
import {
|
|
41
41
|
AIEnrichButton,
|
|
42
42
|
AIEnrichSection,
|
|
@@ -633,7 +633,7 @@ import {
|
|
|
633
633
|
withFirstTouchAttribution,
|
|
634
634
|
withWalkthroughOpenParam,
|
|
635
635
|
writeDismissCookie
|
|
636
|
-
} from "./chunk-
|
|
636
|
+
} from "./chunk-QP54LMXJ.js";
|
|
637
637
|
import "./chunk-L2SLFCXP.js";
|
|
638
638
|
import "./chunk-BJXDHKUX.js";
|
|
639
639
|
import {
|
|
@@ -750,7 +750,7 @@ import {
|
|
|
750
750
|
validateSchema,
|
|
751
751
|
validateVariables,
|
|
752
752
|
variablesToUrlParams
|
|
753
|
-
} from "./chunk-
|
|
753
|
+
} from "./chunk-WZJWIZVH.js";
|
|
754
754
|
import "./chunk-JD5TKRCU.js";
|
|
755
755
|
import {
|
|
756
756
|
CONTENT_REF_GROUPS,
|
|
@@ -772,7 +772,7 @@ import {
|
|
|
772
772
|
serializeSchemaParams,
|
|
773
773
|
shouldIncludeInUrl,
|
|
774
774
|
withQuery
|
|
775
|
-
} from "./chunk-
|
|
775
|
+
} from "./chunk-234IIQIS.js";
|
|
776
776
|
import {
|
|
777
777
|
Checkbox
|
|
778
778
|
} from "./chunk-HLCJPRXP.js";
|
|
@@ -1174,7 +1174,7 @@ import {
|
|
|
1174
1174
|
useVideoOriginPreconnect,
|
|
1175
1175
|
useVideoWarmup,
|
|
1176
1176
|
usesCanonicalStatusStyle
|
|
1177
|
-
} from "./chunk-
|
|
1177
|
+
} from "./chunk-BW6YBATM.js";
|
|
1178
1178
|
import {
|
|
1179
1179
|
HEADING_EMOJI_RE,
|
|
1180
1180
|
HUB_HEADER_OFFSET_PX,
|
|
@@ -1209,7 +1209,6 @@ import {
|
|
|
1209
1209
|
useDebounce,
|
|
1210
1210
|
useHeaderHeight,
|
|
1211
1211
|
useIsTruncated,
|
|
1212
|
-
useIsomorphicLayoutEffect,
|
|
1213
1212
|
useLgUp,
|
|
1214
1213
|
useMarqueeEngine,
|
|
1215
1214
|
useMdUp,
|
|
@@ -1218,7 +1217,7 @@ import {
|
|
|
1218
1217
|
useResetOnPageHidden,
|
|
1219
1218
|
useSmUp,
|
|
1220
1219
|
useSuppressCloneFocus
|
|
1221
|
-
} from "./chunk-
|
|
1220
|
+
} from "./chunk-2HX6AADM.js";
|
|
1222
1221
|
import "./chunk-XXMHLZ3Y.js";
|
|
1223
1222
|
import {
|
|
1224
1223
|
AboutIcon,
|
|
@@ -1557,7 +1556,7 @@ import {
|
|
|
1557
1556
|
urlPathLooksLikeSvg,
|
|
1558
1557
|
useCoverImageFallback,
|
|
1559
1558
|
webinarTiming
|
|
1560
|
-
} from "./chunk-
|
|
1559
|
+
} from "./chunk-XZILGCXJ.js";
|
|
1561
1560
|
import "./chunk-MDKCTSDS.js";
|
|
1562
1561
|
import {
|
|
1563
1562
|
EMBED_PROXY_OPTIONAL_HEADERS,
|
|
@@ -1603,8 +1602,9 @@ import {
|
|
|
1603
1602
|
useAuthedAssetSrc,
|
|
1604
1603
|
useAuthedImageSrc,
|
|
1605
1604
|
useImageEdgeColor,
|
|
1605
|
+
useIsomorphicLayoutEffect,
|
|
1606
1606
|
useOgPlaceholderUrl
|
|
1607
|
-
} from "./chunk-
|
|
1607
|
+
} from "./chunk-7IINE3MK.js";
|
|
1608
1608
|
import {
|
|
1609
1609
|
FigmaIcon,
|
|
1610
1610
|
ImageIcon,
|
package/dist/tailwind.config.cjs
CHANGED
|
@@ -475,12 +475,25 @@ var config = {
|
|
|
475
475
|
"fade-in": {
|
|
476
476
|
from: { opacity: "0" },
|
|
477
477
|
to: { opacity: "1" }
|
|
478
|
+
},
|
|
479
|
+
// Chat streaming affordances. Defined here, not in an inline <style>
|
|
480
|
+
// the component renders: those tags were rewritten on every render,
|
|
481
|
+
// i.e. every streamed chunk, and each rewrite made WebKit restyle and
|
|
482
|
+
// relayout the whole document.
|
|
483
|
+
"cursor-blink": {
|
|
484
|
+
"50%": { opacity: "0" }
|
|
485
|
+
},
|
|
486
|
+
"dot-pulse": {
|
|
487
|
+
"0%, 80%, 100%": { transform: "scale(1)", opacity: "0.7" },
|
|
488
|
+
"40%": { transform: "scale(1.5)", opacity: "1" }
|
|
478
489
|
}
|
|
479
490
|
},
|
|
480
491
|
animation: {
|
|
481
492
|
"accordion-down": "accordion-down 0.2s ease-out",
|
|
482
493
|
"accordion-up": "accordion-up 0.2s ease-out",
|
|
483
|
-
"fade-in": "fade-in 0.3s ease-out"
|
|
494
|
+
"fade-in": "fade-in 0.3s ease-out",
|
|
495
|
+
"cursor-blink": "cursor-blink 1s steps(1) infinite",
|
|
496
|
+
"dot-pulse": "dot-pulse 1.4s ease-in-out infinite"
|
|
484
497
|
}
|
|
485
498
|
}
|
|
486
499
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/tailwindcss/lib/util/createPlugin.js","../node_modules/tailwindcss/lib/public/create-plugin.js","../node_modules/tailwindcss/plugin.js","../tailwind.config.ts"],"names":["plugin","config","tailwindcssAnimate","containerQueries"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,mDAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,CAAO,cAAA,CAAe,SAAS,YAAA,EAAc;AAAA,MACzC,KAAA,EAAO;AAAA,KACV,CAAA;AACD,IAAA,MAAA,CAAO,cAAA,CAAe,SAAS,SAAA,EAAW;AAAA,MACtC,UAAA,EAAY,IAAA;AAAA,MACZ,KAAK,WAAW;AACZ,QAAA,OAAO,QAAA;AAAA,MACX;AAAA,KACH,CAAA;AACD,IAAA,SAAS,YAAA,CAAaA,SAAQC,OAAAA,EAAQ;AAClC,MAAA,OAAO;AAAA,QACH,OAAA,EAASD,OAAAA;AAAA,QACT,MAAA,EAAAC;AAAA,OACJ;AAAA,IACJ;AACA,IAAA,YAAA,CAAa,cAAc,SAAS,cAAA,EAAgB,cAAA,GAAiB,OAAK,EAAC,CAAA,EAAI;AAC3E,MAAA,MAAM,eAAA,GAAkB,SAAS,OAAA,EAAS;AACtC,QAAA,OAAO;AAAA,UACH,SAAA,EAAW,OAAA;AAAA,UACX,OAAA,EAAS,eAAe,OAAO,CAAA;AAAA,UAC/B,MAAA,EAAQ,eAAe,OAAO;AAAA,SAClC;AAAA,MACJ,CAAA;AACA,MAAA,eAAA,CAAgB,mBAAA,GAAsB,IAAA;AAGtC,MAAA,eAAA,CAAgB,gBAAA,GAAmB,cAAA;AACnC,MAAA,eAAA,CAAgB,gBAAA,GAAmB,cAAA;AACnC,MAAA,OAAO,eAAA;AAAA,IACX,CAAA;AACA,IAAA,IAAM,QAAA,GAAW,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/BjB,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,sDAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,CAAO,cAAA,CAAe,SAAS,YAAA,EAAc;AAAA,MACzC,KAAA,EAAO;AAAA,KACV,CAAA;AACD,IAAA,MAAA,CAAO,cAAA,CAAe,SAAS,SAAA,EAAW;AAAA,MACtC,UAAA,EAAY,IAAA;AAAA,MACZ,KAAK,WAAW;AACZ,QAAA,OAAO,QAAA;AAAA,MACX;AAAA,KACH,CAAA;AACD,IAAA,IAAM,aAAA,4CAAuD,oBAAA,EAA+B,CAAA;AAC5F,IAAA,SAAS,yBAAyB,GAAA,EAAK;AACnC,MAAA,OAAO,GAAA,IAAO,GAAA,CAAI,UAAA,GAAa,GAAA,GAAM;AAAA,QACjC,OAAA,EAAS;AAAA,OACb;AAAA,IACJ;AACA,IAAA,IAAM,WAAW,aAAA,CAAc,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChB/B,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,oCAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,qBAAA,EAAA;AACnB,IAAA,MAAA,CAAO,WAAW,YAAA,CAAa,UAAA,GAAa,eAAe,EAAE,OAAA,EAAS,cAAa,EAAG,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACEtF,IAAA,aAAA,GAAmB,OAAA,CAAA,cAAA,EAAA,CAAA;AAEnB,IAAM,0BAAsB,aAAA,CAAAD,OAAAA,EAAO,CAAC,EAAE,cAAa,KAAM;AACvD,EAAA,YAAA,CAAa;AAAA,IACX,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,2BAAA;AAAA,MACV,UAAA,EAAY,sCAAA;AAAA,MACZ,aAAA,EAAe;AAAA,KACjB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,+BAAA;AAAA,MACV,UAAA,EAAY,qCAAA;AAAA,MACZ,aAAA,EAAe;AAAA,KACjB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,0BAAA;AAAA,MACV,UAAA,EAAY,gCAAA;AAAA,MACZ,aAAA,EAAe;AAAA,KACjB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,0BAAA;AAAA,MACV,UAAA,EAAY;AAAA,KACd;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,6BAAA;AAAA,MACV,UAAA,EAAY,mCAAA;AAAA,MACZ,aAAA,EAAe,WAAA;AAAA,MACf,aAAA,EAAe;AAAA,KACjB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,6BAAA;AAAA,MACV,UAAA,EAAY;AAAA,KACd;AAAA;AAAA;AAAA;AAAA,IAIA,YAAA,EAAc;AAAA,MACZ,UAAA,EAAY,4BAAA;AAAA,MACZ,UAAA,EAAY,2BAAA;AAAA,MACZ,QAAA,EAAU,6BAAA;AAAA,MACV,UAAA,EAAY;AAAA,KACd;AAAA;AAAA;AAAA;AAAA,IAIA,gBAAA,EAAkB;AAAA,MAChB,UAAA,EAAY,4BAAA;AAAA,MACZ,UAAA,EAAY,yBAAA;AAAA,MACZ,QAAA,EAAU,6BAAA;AAAA,MACV,UAAA,EAAY,mCAAA;AAAA,MACZ,aAAA,EAAe,MAAA;AAAA,MACf,aAAA,EAAe;AAAA,KACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAA,EAAe;AAAA,MACb,QAAA,EAAU,wBAAA;AAAA,MACV,UAAA,EAAY;AAAA;AACd,GACD,CAAA;AACH,CAAC,CAAA;AAUD,IAAM,cAAA,GAAiB,CAAC,KAAA,KAAkB,CAAA,mBAAA,EAAsB,KAAK,CAAA,yCAAA,CAAA;AAGrE,IAAM,gBAAA,GAAmB,CAAC,IAAA,KACxB,MAAA,CAAO,WAAA;AAAA,EACL,MAAA,CAAO,QAAQ,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAAA,IACzC,GAAA;AAAA,IACA,OAAO,KAAA,KAAU,QAAA,GAAW,eAAe,KAAK,CAAA,GAAI,iBAAiB,KAAK;AAAA,GAC3E;AACH,CAAA;AAEF,IAAM,MAAA,GAAiB;AAAA,EACrB,OAAA,EAAS,CAAC,4BAA4B,CAAA;AAAA,EACtC,QAAA,EAAU;AAAA;AAAA,IAER,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,SAAA,EAAW;AAAA,MACT,MAAA,EAAQ,IAAA;AAAA,MACR,OAAA,EAAS,MAAA;AAAA,MACT,OAAA,EAAS;AAAA,QACP,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ;AAAA;AAAA,QAEN,MAAA,EAAQ,oBAAA;AAAA,QACR,KAAA,EAAO,mBAAA;AAAA,QACP,IAAA,EAAM,kBAAA;AAAA,QACN,UAAA,EAAY,wBAAA;AAAA,QACZ,UAAA,EAAY,wBAAA;AAAA,QACZ,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,qBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,SAAA,EAAW;AAAA,UACT,OAAA,EAAS,uBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,WAAA,EAAa;AAAA,UACX,OAAA,EAAS,yBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,mBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,OAAA,EAAS,oBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,qBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,OAAA,EAAS,kBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,KAAK,gBAAA,CAAiB;AAAA;AAAA,UAEpB,EAAA,EAAI,iBAAA;AAAA,UACJ,IAAA,EAAM,sBAAA;AAAA,UACN,OAAA,EAAS,yBAAA;AAAA,UACT,QAAA,EAAU,0BAAA;AAAA,UACV,UAAA,EAAY,uBAAA;AAAA,UACZ,WAAA,EAAa,wBAAA;AAAA,UACb,YAAA,EAAc,yBAAA;AAAA,UACd,kBAAA,EAAoB,+BAAA;AAAA,UACpB,mBAAA,EAAqB,gCAAA;AAAA;AAAA,UAErB,aAAA,EAAe,0BAAA;AAAA,UACf,YAAA,EAAc,uBAAA;AAAA,UACd,OAAA,EAAS,sBAAA;AAAA;AAAA,UAGT,MAAA,EAAQ;AAAA,YACN,OAAA,EAAS,6BAAA;AAAA,YACT,KAAA,EAAO,2BAAA;AAAA,YACP,MAAA,EAAQ,4BAAA;AAAA,YACR,KAAA,EAAO;AAAA,WACT;AAAA;AAAA,UAGA,IAAA,EAAM;AAAA,YACJ,OAAA,EAAS,2BAAA;AAAA,YACT,SAAA,EAAW,6BAAA;AAAA,YACX,QAAA,EAAU,4BAAA;AAAA,YACV,KAAA,EAAO,yBAAA;AAAA,YACP,MAAA,EAAQ,0BAAA;AAAA,YACR,QAAA,EAAU,4BAAA;AAAA,YACV,WAAA,EAAa,6BAAA;AAAA,YACb,SAAA,EAAW;AAAA,WACb;AAAA;AAAA,UAGA,MAAA,EAAQ;AAAA,YACN,OAAA,EAAS,6BAAA;AAAA,YACT,KAAA,EAAO,2BAAA;AAAA,YACP,MAAA,EAAQ,4BAAA;AAAA,YACR,SAAA,EAAW,+BAAA;AAAA,YACX,iBAAA,EAAmB,qCAAA;AAAA,YACnB,kBAAA,EAAoB,sCAAA;AAAA,YACpB,KAAA,EAAO,2BAAA;AAAA,YACP,QAAA,EAAU;AAAA,WACZ;AAAA;AAAA,UAGA,OAAA,EAAS;AAAA,YACP,OAAA,EAAS,sBAAA;AAAA,YACT,KAAA,EAAO,4BAAA;AAAA,YACP,MAAA,EAAQ,6BAAA;AAAA,YACR,SAAA,EAAW,gCAAA;AAAA,YACX,iBAAA,EAAmB,sCAAA;AAAA,YACnB,kBAAA,EAAoB;AAAA,WACtB;AAAA,UACA,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,oBAAA;AAAA,YACT,KAAA,EAAO,0BAAA;AAAA,YACP,MAAA,EAAQ,2BAAA;AAAA,YACR,SAAA,EAAW,8BAAA;AAAA,YACX,iBAAA,EAAmB,oCAAA;AAAA,YACnB,kBAAA,EAAoB;AAAA,WACtB;AAAA,UACA,OAAA,EAAS;AAAA,YACP,OAAA,EAAS,sBAAA;AAAA,YACT,KAAA,EAAO,4BAAA;AAAA,YACP,MAAA,EAAQ,6BAAA;AAAA,YACR,SAAA,EAAW,gCAAA;AAAA,YACX,iBAAA,EAAmB,sCAAA;AAAA,YACnB,kBAAA,EAAoB;AAAA,WACtB;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,OAAA,EAAS,mBAAA;AAAA,YACT,KAAA,EAAO,yBAAA;AAAA,YACP,MAAA,EAAQ;AAAA,WACV;AAAA;AAAA,UAGA,QAAA,EAAU,uBAAA;AAAA,UACV,KAAA,EAAO,yBAAA;AAAA,UACP,eAAA,EAAiB,4BAAA;AAAA;AAAA,UAGjB,IAAA,EAAM;AAAA,YACJ,OAAA,EAAS,mBAAA;AAAA,YACT,KAAA,EAAO,yBAAA;AAAA,YACP,OAAA,EAAS;AAAA,WACX;AAAA;AAAA,UAGA,QAAA,EAAU;AAAA,YACR,IAAA,EAAM;AAAA,cACJ,OAAA,EAAS,+BAAA;AAAA,cACT,KAAA,EAAO,gCAAA;AAAA,cACP,SAAA,EAAW,oCAAA;AAAA,cACX,iBAAA,EAAmB,0CAAA;AAAA,cACnB,kBAAA,EAAoB;AAAA,aACtB;AAAA,YACA,IAAA,EAAM;AAAA,cACJ,OAAA,EAAS,+BAAA;AAAA,cACT,KAAA,EAAO,gCAAA;AAAA,cACP,SAAA,EAAW,oCAAA;AAAA,cACX,iBAAA,EAAmB,0CAAA;AAAA,cACnB,kBAAA,EAAoB;AAAA;AACtB,WACF;AAAA,UACA,aAAA,EAAe;AAAA,YACb,OAAA,EAAS,6BAAA;AAAA,YACT,KAAA,EAAO,8BAAA;AAAA,YACP,MAAA,EAAQ,+BAAA;AAAA,YACR,SAAA,EAAW,kCAAA;AAAA,YACX,iBAAA,EAAmB,wCAAA;AAAA,YACnB,kBAAA,EAAoB,yCAAA;AAAA,YACpB,KAAA,EAAO,8BAAA;AAAA,YACP,aAAA,EAAe,oCAAA;AAAA,YACf,cAAA,EAAgB;AAAA,WAClB;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,SAAA,EAAW;AAAA,YACT,WAAA,EAAa,gCAAA;AAAA,YACb,iBAAA,EAAmB,sCAAA;AAAA,YACnB,kBAAA,EAAoB,uCAAA;AAAA,YACpB,qBAAA,EAAuB,0CAAA;AAAA,YACvB,2BAAA,EAA6B,gDAAA;AAAA,YAC7B,4BAAA,EAA8B,iDAAA;AAAA,YAC9B,gBAAA,EAAkB,qCAAA;AAAA,YAClB,sBAAA,EAAwB,2CAAA;AAAA,YACxB,uBAAA,EAAyB,4CAAA;AAAA,YACzB,0BAAA,EAA4B,+CAAA;AAAA,YAC5B,gCAAA,EAAkC,qDAAA;AAAA,YAClC,iCAAA,EAAmC,sDAAA;AAAA,YACnC,eAAA,EAAiB,oCAAA;AAAA,YACjB,qBAAA,EAAuB,0CAAA;AAAA,YACvB,sBAAA,EAAwB,2CAAA;AAAA,YACxB,yBAAA,EAA2B,8CAAA;AAAA,YAC3B,+BAAA,EAAiC,oDAAA;AAAA,YACjC,gCAAA,EAAkC;AAAA,WACpC;AAAA;AAAA,UAGA,OAAA,EAAS;AAAA,SACV;AAAA,OACH;AAAA;AAAA,MAEA,OAAA,EAAS;AAAA,QACP,EAAA,EAAI,OAAA;AAAA;AAAA,QACJ,EAAA,EAAI,QAAA;AAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AAAA,OACN;AAAA,MAEA,YAAA,EAAc;AAAA,QACZ,EAAA,EAAI,eAAA;AAAA;AAAA,QACJ,EAAA,EAAI,2BAAA;AAAA;AAAA,QACJ,EAAA,EAAI,2BAAA;AAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AAAA,OACN;AAAA,MAEA,QAAA,EAAU;AAAA,QACR,oBAAA,EAAsB;AAAA,OACxB;AAAA,MAEA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,CAAC,yBAAyB,CAAA;AAAA,QAChC,IAAA,EAAM,CAAC,4BAA4B,CAAA;AAAA,QACnC,IAAA,EAAM,CAAC,yBAAyB,CAAA;AAAA,QAChC,OAAA,EAAS,CAAC,4BAA4B;AAAA,OACxC;AAAA;AAAA;AAAA;AAAA,MAKA,QAAA,EAAU;AAAA;AAAA,QAER,aAAa,CAAC,2BAAA,EAA6B,EAAE,UAAA,EAAY,wCAAwC,CAAA;AAAA,QACjG,aAAa,CAAC,+BAAA,EAAiC,EAAE,UAAA,EAAY,uCAAuC,CAAA;AAAA,QACpG,aAAa,CAAC,0BAAA,EAA4B,EAAE,UAAA,EAAY,kCAAkC,CAAA;AAAA,QAC1F,aAAa,CAAC,0BAAA,EAA4B,EAAE,UAAA,EAAY,kCAAkC,CAAA;AAAA,QAC1F,aAAa,CAAC,6BAAA,EAA+B,EAAE,UAAA,EAAY,qCAAqC,CAAA;AAAA,QAChG,aAAa,CAAC,6BAAA,EAA+B,EAAE,UAAA,EAAY,qCAAqC;AAAA,OAClG;AAAA;AAAA;AAAA;AAAA,MAKA,SAAA,EAAW;AAAA,QACT,IAAA,EAAM,oBAAA;AAAA,QACN,YAAA,EAAc,0BAAA;AAAA,QACd,KAAA,EAAO,qBAAA;AAAA,QACP,QAAA,EAAU,wBAAA;AAAA,QACV,OAAA,EAAS,uBAAA;AAAA,QACT,KAAA,EAAO,qBAAA;AAAA,QACP,MAAA,EAAQ,sBAAA;AAAA,QACR,WAAA,EAAa;AAAA,OACf;AAAA;AAAA;AAAA;AAAA,MAKA,kBAAA,EAAoB;AAAA,QAClB,IAAA,EAAM,sBAAA;AAAA,QACN,MAAA,EAAQ,wBAAA;AAAA,QACR,IAAA,EAAM,sBAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,wBAAA,EAA0B;AAAA,QACxB,MAAA,EAAQ,oBAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACX;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,EAAQ;AAAA,QACN,QAAA,EAAU,mBAAA;AAAA,QACV,MAAA,EAAQ,iBAAA;AAAA,QACR,KAAA,EAAO,gBAAA;AAAA,QACP,gBAAA,EAAkB,yBAAA;AAAA,QAClB,KAAA,EAAO,gBAAA;AAAA,QACP,OAAA,EAAS,kBAAA;AAAA,QACT,OAAA,EAAS,kBAAA;AAAA,QACT,YAAA,EAAc,uBAAA;AAAA,QACd,KAAA,EAAO;AAAA,OACT;AAAA;AAAA;AAAA;AAAA,MAKA,SAAA,EAAW;AAAA,QACT,gBAAA,EAAkB;AAAA,UAChB,IAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAI;AAAA,UACpB,EAAA,EAAI,EAAE,MAAA,EAAQ,uCAAA;AAAwC,SACxD;AAAA,QACA,cAAA,EAAgB;AAAA,UACd,IAAA,EAAM,EAAE,MAAA,EAAQ,uCAAA,EAAwC;AAAA,UACxD,EAAA,EAAI,EAAE,MAAA,EAAQ,GAAA;AAAI,SACpB;AAAA,QACA,SAAA,EAAW;AAAA,UACT,IAAA,EAAM,EAAE,OAAA,EAAS,GAAA,EAAI;AAAA,UACrB,EAAA,EAAI,EAAE,OAAA,EAAS,GAAA;AAAI;AACrB,OACF;AAAA,MACA,SAAA,EAAW;AAAA,QACT,gBAAA,EAAkB,8BAAA;AAAA,QAClB,cAAA,EAAgB,4BAAA;AAAA,QAChB,SAAA,EAAW;AAAA;AACb;AACF,GACF;AAAA,EACA,OAAA,EAAS,CAACE,mCAAA,EAAoB,mBAAA,EAAqBC,iCAAgB;AACrE,CAAA;AAEA,IAAO,uBAAA,GAAQ","file":"tailwind.config.cjs","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import containerQueries from '@tailwindcss/container-queries';\nimport type { Config } from 'tailwindcss';\nimport tailwindcssAnimate from 'tailwindcss-animate';\nimport plugin from 'tailwindcss/plugin';\n\nconst odsTypographyPlugin = plugin(({ addUtilities }) => {\n addUtilities({\n '.text-h1': {\n fontFamily: 'var(--font-h1-family)',\n fontWeight: 'var(--font-h1-weight)',\n fontSize: 'var(--font-size-h1-title)',\n lineHeight: 'var(--font-line-space-h1-main-title)',\n letterSpacing: '-0.02em',\n },\n '.text-h2': {\n fontFamily: 'var(--font-h2-family)',\n fontWeight: 'var(--font-h2-weight)',\n fontSize: 'var(--font-size-h2-sub-title)',\n lineHeight: 'var(--font-line-space-h2-sub-title)',\n letterSpacing: '-0.02em',\n },\n '.text-h3': {\n fontFamily: 'var(--font-h3-family)',\n fontWeight: 'var(--font-h3-weight)',\n fontSize: 'var(--font-size-h3-body)',\n lineHeight: 'var(--font-line-space-h3-body)',\n letterSpacing: '-0.02em',\n },\n '.text-h4': {\n fontFamily: 'var(--font-h4-family)',\n fontWeight: 'var(--font-h4-weight)',\n fontSize: 'var(--font-size-h4-body)',\n lineHeight: 'var(--font-line-space-h4-body)',\n },\n '.text-h5': {\n fontFamily: 'var(--font-h5-family)',\n fontWeight: 'var(--font-h5-weight)',\n fontSize: 'var(--font-size-h5-caption)',\n lineHeight: 'var(--font-line-space-h5-caption)',\n textTransform: 'uppercase',\n letterSpacing: '-0.02em',\n },\n '.text-h6': {\n fontFamily: 'var(--font-h6-family)',\n fontWeight: 'var(--font-h6-weight)',\n fontSize: 'var(--font-size-h6-caption)',\n lineHeight: 'var(--font-line-space-h6-caption)',\n },\n // Monospace body/code text (commands, ids, paths, code blocks): Azeret Mono\n // at the h6 responsive scale, no transform, neutral letter-spacing (unlike\n // text-h5's uppercase -0.02em label styling).\n '.text-code': {\n fontFamily: 'var(--font-family-heading)',\n fontWeight: 'var(--font-weight-medium)',\n fontSize: 'var(--font-size-h6-caption)',\n lineHeight: 'var(--font-line-space-h6-caption)',\n },\n // BRAND WORDMARKS ONLY — the platform name beside a logo in a header or\n // footer. Azeret Mono bold at the h5-caption scale, which is exactly what\n // every hand-written wordmark override spelled before this composite.\n '.text-wordmark': {\n fontFamily: 'var(--font-family-heading)',\n fontWeight: 'var(--font-weight-bold)',\n fontSize: 'var(--font-size-h5-caption)',\n lineHeight: 'var(--font-line-space-h5-caption)',\n textTransform: 'none',\n letterSpacing: '0',\n },\n // Badge / stamp SCALE — size only, deliberately NOT a composite: it\n // carries no family, weight or casing, so it composes with whatever the\n // badge already sets (h5 tokens on StatusBadge, DM Sans on Badge). Use it\n // for badges and chips instead of a raw `text-[10px]`; it is a component\n // token, not a step in the h1-h6 scale.\n '.text-badge': {\n fontSize: 'var(--font-size-badge)',\n lineHeight: 'var(--font-line-space-badge)',\n },\n });\n});\n\n/**\n * Make Tailwind opacity modifiers (`bg-ods-error/10`, `hover:bg-ods-accent/90`, …)\n * actually work on var()-based ODS tokens. Without `<alpha-value>` in the color\n * definition Tailwind v3 silently generates NOTHING for `ods-*\\/N` classes — the\n * element loses that declaration entirely. `color-mix` keeps un-suffixed classes\n * visually identical (a 100% mix is the color itself) while letting the modifier\n * scale the alpha.\n */\nconst withAlphaValue = (color: string) => `color-mix(in srgb, ${color} calc(<alpha-value> * 100%), transparent)`;\n\ntype ColorTree = { [key: string]: string | ColorTree };\nconst withAlphaSupport = (tree: ColorTree): ColorTree =>\n Object.fromEntries(\n Object.entries(tree).map(([key, value]) => [\n key,\n typeof value === 'string' ? withAlphaValue(value) : withAlphaSupport(value),\n ]),\n );\n\nconst config: Config = {\n content: ['./src/**/*.{js,ts,jsx,tsx}'],\n safelist: [\n // Dynamically generated classes for table hide/show functionality\n 'hidden',\n 'md:hidden',\n 'lg:hidden',\n 'md:flex',\n 'lg:flex',\n ],\n theme: {\n container: {\n center: true,\n padding: '2rem',\n screens: {\n '2xl': '1400px',\n },\n },\n extend: {\n colors: {\n // Shadcn/ui base colors (keep for compatibility)\n border: 'hsl(var(--border))',\n input: 'hsl(var(--input))',\n ring: 'hsl(var(--ring))',\n background: 'hsl(var(--background))',\n foreground: 'hsl(var(--foreground))',\n primary: {\n DEFAULT: 'hsl(var(--primary))',\n foreground: 'hsl(var(--primary-foreground))',\n },\n secondary: {\n DEFAULT: 'hsl(var(--secondary))',\n foreground: 'hsl(var(--secondary-foreground))',\n },\n destructive: {\n DEFAULT: 'hsl(var(--destructive))',\n foreground: 'hsl(var(--destructive-foreground))',\n },\n muted: {\n DEFAULT: 'hsl(var(--muted))',\n foreground: 'hsl(var(--muted-foreground))',\n },\n accent: {\n DEFAULT: 'hsl(var(--accent))',\n foreground: 'hsl(var(--accent-foreground))',\n },\n popover: {\n DEFAULT: 'hsl(var(--popover))',\n foreground: 'hsl(var(--popover-foreground))',\n },\n card: {\n DEFAULT: 'hsl(var(--card))',\n foreground: 'hsl(var(--card-foreground))',\n },\n\n // =================================================\n // ODS (Open Design System) COLORS\n // =================================================\n // Single nested structure: generates bg-ods-*, text-ods-*, border-ods-* utilities\n ods: withAlphaSupport({\n // Backgrounds\n bg: 'var(--color-bg)',\n card: 'var(--color-bg-card)',\n overlay: 'var(--color-bg-overlay)',\n skeleton: 'var(--color-bg-skeleton)',\n 'bg-hover': 'var(--color-bg-hover)',\n 'bg-active': 'var(--color-bg-active)',\n 'bg-surface': 'var(--color-bg-surface)',\n 'bg-surface-hover': 'var(--color-bg-surface-hover)',\n 'bg-surface-active': 'var(--color-bg-surface-active)',\n // Light surface on a dark UI — the semantic token existed with no utility.\n 'bg-inverted': 'var(--color-bg-inverted)',\n 'card-hover': 'var(--color-bg-hover)',\n divider: 'var(--color-divider)',\n\n // Borders\n border: {\n DEFAULT: 'var(--color-border-default)',\n hover: 'var(--color-border-hover)',\n active: 'var(--color-border-active)',\n focus: 'var(--color-border-focus)',\n },\n\n // Text\n text: {\n primary: 'var(--color-text-primary)',\n secondary: 'var(--color-text-secondary)',\n tertiary: 'var(--color-text-tertiary)',\n muted: 'var(--color-text-muted)',\n subtle: 'var(--color-text-subtle)',\n disabled: 'var(--color-text-disabled)',\n 'on-accent': 'var(--color-text-on-accent)',\n 'on-dark': 'var(--color-text-on-dark)',\n },\n\n // Accent\n accent: {\n DEFAULT: 'var(--color-accent-primary)',\n hover: 'var(--color-accent-hover)',\n active: 'var(--color-accent-active)',\n secondary: 'var(--color-accent-secondary)',\n 'secondary-hover': 'var(--color-accent-secondary-hover)',\n 'secondary-active': 'var(--color-accent-secondary-active)',\n focus: 'var(--color-accent-focus)',\n disabled: 'var(--color-accent-disabled)',\n },\n\n // Status\n success: {\n DEFAULT: 'var(--color-success)',\n hover: 'var(--color-success-hover)',\n active: 'var(--color-success-active)',\n secondary: 'var(--color-success-secondary)',\n 'secondary-hover': 'var(--color-success-secondary-hover)',\n 'secondary-active': 'var(--color-success-secondary-active)',\n },\n error: {\n DEFAULT: 'var(--color-error)',\n hover: 'var(--color-error-hover)',\n active: 'var(--color-error-active)',\n secondary: 'var(--color-error-secondary)',\n 'secondary-hover': 'var(--color-error-secondary-hover)',\n 'secondary-active': 'var(--color-error-secondary-active)',\n },\n warning: {\n DEFAULT: 'var(--color-warning)',\n hover: 'var(--color-warning-hover)',\n active: 'var(--color-warning-active)',\n secondary: 'var(--color-warning-secondary)',\n 'secondary-hover': 'var(--color-warning-secondary-hover)',\n 'secondary-active': 'var(--color-warning-secondary-active)',\n },\n info: {\n DEFAULT: 'var(--color-info)',\n hover: 'var(--color-info-hover)',\n active: 'var(--color-info-active)',\n },\n\n // Interactive states\n disabled: 'var(--color-disabled)',\n focus: 'var(--color-focus-ring)',\n 'focus-visible': 'var(--color-focus-visible)',\n\n // Links\n link: {\n DEFAULT: 'var(--color-link)',\n hover: 'var(--color-link-hover)',\n visited: 'var(--color-link-visited)',\n },\n\n // Brand colors (theme-independent)\n flamingo: {\n pink: {\n DEFAULT: 'var(--ods-flamingo-pink-base)',\n hover: 'var(--ods-flamingo-pink-hover)',\n secondary: 'var(--ods-flamingo-pink-secondary)',\n 'secondary-hover': 'var(--ods-flamingo-pink-secondary-hover)',\n 'secondary-active': 'var(--ods-flamingo-pink-secondary-action)',\n },\n cyan: {\n DEFAULT: 'var(--ods-flamingo-cyan-base)',\n hover: 'var(--ods-flamingo-cyan-hover)',\n secondary: 'var(--ods-flamingo-cyan-secondary)',\n 'secondary-hover': 'var(--ods-flamingo-cyan-secondary-hover)',\n 'secondary-active': 'var(--ods-flamingo-cyan-secondary-action)',\n },\n },\n 'open-yellow': {\n DEFAULT: 'var(--ods-open-yellow-base)',\n hover: 'var(--ods-open-yellow-hover)',\n action: 'var(--ods-open-yellow-action)',\n secondary: 'var(--ods-open-yellow-secondary)',\n 'secondary-hover': 'var(--ods-open-yellow-secondary-hover)',\n 'secondary-action': 'var(--ods-open-yellow-secondary-action)',\n light: 'var(--ods-open-yellow-light)',\n 'light-hover': 'var(--ods-open-yellow-light-hover)',\n 'light-action': 'var(--ods-open-yellow-light-action)',\n },\n\n // Attention tokens (ods-colors.css). Components reference these BY\n // NAME (error-state.tsx: `border-ods-attention-red-error` etc.) —\n // without these mappings Tailwind silently generates NOTHING for\n // the class and the component renders colorless in every consumer.\n attention: {\n 'red-error': 'var(--ods-attention-red-error)',\n 'red-error-hover': 'var(--ods-attention-red-error-hover)',\n 'red-error-action': 'var(--ods-attention-red-error-action)',\n 'red-error-secondary': 'var(--ods-attention-red-error-secondary)',\n 'red-error-secondary-hover': 'var(--ods-attention-red-error-secondary-hover)',\n 'red-error-secondary-action': 'var(--ods-attention-red-error-secondary-action)',\n 'yellow-warning': 'var(--ods-attention-yellow-warning)',\n 'yellow-warning-hover': 'var(--ods-attention-yellow-warning-hover)',\n 'yellow-warning-action': 'var(--ods-attention-yellow-warning-action)',\n 'yellow-warning-secondary': 'var(--ods-attention-yellow-warning-secondary)',\n 'yellow-warning-secondary-hover': 'var(--ods-attention-yellow-warning-secondary-hover)',\n 'yellow-warning-secondary-action': 'var(--ods-attention-yellow-warning-secondary-action)',\n 'green-success': 'var(--ods-attention-green-success)',\n 'green-success-hover': 'var(--ods-attention-green-success-hover)',\n 'green-success-action': 'var(--ods-attention-green-success-action)',\n 'green-success-secondary': 'var(--ods-attention-green-success-secondary)',\n 'green-success-secondary-hover': 'var(--ods-attention-green-success-secondary-hover)',\n 'green-success-secondary-action': 'var(--ods-attention-green-success-secondary-action)',\n },\n\n // Adaptive platform color\n current: 'var(--ods-current)',\n }),\n },\n // Custom breakpoints (aligned with ODS responsive tokens from Figma)\n screens: {\n md: '800px', // Tablet: 50rem\n lg: '1280px', // Desktop: 80rem\n xl: '1440px', // Large desktop: 90rem\n },\n\n borderRadius: {\n lg: 'var(--radius)', // 8px\n md: 'calc(var(--radius) - 2px)', // 6px\n sm: 'calc(var(--radius) - 4px)', // 4px\n xs: 'calc(var(--radius) - 6px)', // 2px\n },\n\n maxWidth: {\n 'ods-content-narrow': '600px',\n },\n\n fontFamily: {\n sans: ['var(--font-family-body)'],\n mono: ['var(--font-family-heading)'],\n body: ['var(--font-family-body)'],\n heading: ['var(--font-family-heading)'],\n },\n\n // =================================================\n // TYPOGRAPHY\n // =================================================\n fontSize: {\n // Responsive heading sizes (from ods-responsive-tokens.css)\n 'heading-1': ['var(--font-size-h1-title)', { lineHeight: 'var(--font-line-space-h1-main-title)' }],\n 'heading-2': ['var(--font-size-h2-sub-title)', { lineHeight: 'var(--font-line-space-h2-sub-title)' }],\n 'heading-3': ['var(--font-size-h3-body)', { lineHeight: 'var(--font-line-space-h3-body)' }],\n 'heading-4': ['var(--font-size-h4-body)', { lineHeight: 'var(--font-line-space-h4-body)' }],\n 'heading-5': ['var(--font-size-h5-caption)', { lineHeight: 'var(--font-line-space-h5-caption)' }],\n 'heading-6': ['var(--font-size-h6-caption)', { lineHeight: 'var(--font-line-space-h6-caption)' }],\n },\n\n // =================================================\n // SHADOWS\n // =================================================\n boxShadow: {\n card: 'var(--shadow-card)',\n 'card-hover': 'var(--shadow-card-hover)',\n modal: 'var(--shadow-modal)',\n dropdown: 'var(--shadow-dropdown)',\n tooltip: 'var(--shadow-tooltip)',\n focus: 'var(--shadow-focus)',\n accent: 'var(--shadow-accent)',\n 'accent-lg': 'var(--shadow-accent-lg)',\n },\n\n // =================================================\n // TRANSITIONS\n // =================================================\n transitionDuration: {\n fast: 'var(--duration-fast)',\n normal: 'var(--duration-normal)',\n slow: 'var(--duration-slow)',\n slower: 'var(--duration-slower)',\n },\n transitionTimingFunction: {\n bounce: 'var(--ease-bounce)',\n elastic: 'var(--ease-elastic)',\n },\n\n // =================================================\n // Z-INDEX\n // =================================================\n zIndex: {\n dropdown: 'var(--z-dropdown)',\n sticky: 'var(--z-sticky)',\n fixed: 'var(--z-fixed)',\n 'modal-backdrop': 'var(--z-modal-backdrop)',\n modal: 'var(--z-modal)',\n popover: 'var(--z-popover)',\n tooltip: 'var(--z-tooltip)',\n notification: 'var(--z-notification)',\n debug: 'var(--z-debug)',\n },\n\n // =================================================\n // ANIMATIONS\n // =================================================\n keyframes: {\n 'accordion-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-accordion-content-height)' },\n },\n 'accordion-up': {\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: '0' },\n },\n 'fade-in': {\n from: { opacity: '0' },\n to: { opacity: '1' },\n },\n },\n animation: {\n 'accordion-down': 'accordion-down 0.2s ease-out',\n 'accordion-up': 'accordion-up 0.2s ease-out',\n 'fade-in': 'fade-in 0.3s ease-out',\n },\n },\n },\n plugins: [tailwindcssAnimate, odsTypographyPlugin, containerQueries],\n};\n\nexport default config;\n"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/tailwindcss/lib/util/createPlugin.js","../node_modules/tailwindcss/lib/public/create-plugin.js","../node_modules/tailwindcss/plugin.js","../tailwind.config.ts"],"names":["plugin","config","tailwindcssAnimate","containerQueries"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,mDAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,CAAO,cAAA,CAAe,SAAS,YAAA,EAAc;AAAA,MACzC,KAAA,EAAO;AAAA,KACV,CAAA;AACD,IAAA,MAAA,CAAO,cAAA,CAAe,SAAS,SAAA,EAAW;AAAA,MACtC,UAAA,EAAY,IAAA;AAAA,MACZ,KAAK,WAAW;AACZ,QAAA,OAAO,QAAA;AAAA,MACX;AAAA,KACH,CAAA;AACD,IAAA,SAAS,YAAA,CAAaA,SAAQC,OAAAA,EAAQ;AAClC,MAAA,OAAO;AAAA,QACH,OAAA,EAASD,OAAAA;AAAA,QACT,MAAA,EAAAC;AAAA,OACJ;AAAA,IACJ;AACA,IAAA,YAAA,CAAa,cAAc,SAAS,cAAA,EAAgB,cAAA,GAAiB,OAAK,EAAC,CAAA,EAAI;AAC3E,MAAA,MAAM,eAAA,GAAkB,SAAS,OAAA,EAAS;AACtC,QAAA,OAAO;AAAA,UACH,SAAA,EAAW,OAAA;AAAA,UACX,OAAA,EAAS,eAAe,OAAO,CAAA;AAAA,UAC/B,MAAA,EAAQ,eAAe,OAAO;AAAA,SAClC;AAAA,MACJ,CAAA;AACA,MAAA,eAAA,CAAgB,mBAAA,GAAsB,IAAA;AAGtC,MAAA,eAAA,CAAgB,gBAAA,GAAmB,cAAA;AACnC,MAAA,eAAA,CAAgB,gBAAA,GAAmB,cAAA;AACnC,MAAA,OAAO,eAAA;AAAA,IACX,CAAA;AACA,IAAA,IAAM,QAAA,GAAW,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/BjB,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,sDAAA,CAAA,OAAA,EAAA;AACA,IAAA,MAAA,CAAO,cAAA,CAAe,SAAS,YAAA,EAAc;AAAA,MACzC,KAAA,EAAO;AAAA,KACV,CAAA;AACD,IAAA,MAAA,CAAO,cAAA,CAAe,SAAS,SAAA,EAAW;AAAA,MACtC,UAAA,EAAY,IAAA;AAAA,MACZ,KAAK,WAAW;AACZ,QAAA,OAAO,QAAA;AAAA,MACX;AAAA,KACH,CAAA;AACD,IAAA,IAAM,aAAA,4CAAuD,oBAAA,EAA+B,CAAA;AAC5F,IAAA,SAAS,yBAAyB,GAAA,EAAK;AACnC,MAAA,OAAO,GAAA,IAAO,GAAA,CAAI,UAAA,GAAa,GAAA,GAAM;AAAA,QACjC,OAAA,EAAS;AAAA,OACb;AAAA,IACJ;AACA,IAAA,IAAM,WAAW,aAAA,CAAc,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChB/B,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,oCAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,qBAAA,EAAA;AACnB,IAAA,MAAA,CAAO,WAAW,YAAA,CAAa,UAAA,GAAa,eAAe,EAAE,OAAA,EAAS,cAAa,EAAG,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACEtF,IAAA,aAAA,GAAmB,OAAA,CAAA,cAAA,EAAA,CAAA;AAEnB,IAAM,0BAAsB,aAAA,CAAAD,OAAAA,EAAO,CAAC,EAAE,cAAa,KAAM;AACvD,EAAA,YAAA,CAAa;AAAA,IACX,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,2BAAA;AAAA,MACV,UAAA,EAAY,sCAAA;AAAA,MACZ,aAAA,EAAe;AAAA,KACjB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,+BAAA;AAAA,MACV,UAAA,EAAY,qCAAA;AAAA,MACZ,aAAA,EAAe;AAAA,KACjB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,0BAAA;AAAA,MACV,UAAA,EAAY,gCAAA;AAAA,MACZ,aAAA,EAAe;AAAA,KACjB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,0BAAA;AAAA,MACV,UAAA,EAAY;AAAA,KACd;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,6BAAA;AAAA,MACV,UAAA,EAAY,mCAAA;AAAA,MACZ,aAAA,EAAe,WAAA;AAAA,MACf,aAAA,EAAe;AAAA,KACjB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAY,uBAAA;AAAA,MACZ,QAAA,EAAU,6BAAA;AAAA,MACV,UAAA,EAAY;AAAA,KACd;AAAA;AAAA;AAAA;AAAA,IAIA,YAAA,EAAc;AAAA,MACZ,UAAA,EAAY,4BAAA;AAAA,MACZ,UAAA,EAAY,2BAAA;AAAA,MACZ,QAAA,EAAU,6BAAA;AAAA,MACV,UAAA,EAAY;AAAA,KACd;AAAA;AAAA;AAAA;AAAA,IAIA,gBAAA,EAAkB;AAAA,MAChB,UAAA,EAAY,4BAAA;AAAA,MACZ,UAAA,EAAY,yBAAA;AAAA,MACZ,QAAA,EAAU,6BAAA;AAAA,MACV,UAAA,EAAY,mCAAA;AAAA,MACZ,aAAA,EAAe,MAAA;AAAA,MACf,aAAA,EAAe;AAAA,KACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAA,EAAe;AAAA,MACb,QAAA,EAAU,wBAAA;AAAA,MACV,UAAA,EAAY;AAAA;AACd,GACD,CAAA;AACH,CAAC,CAAA;AAUD,IAAM,cAAA,GAAiB,CAAC,KAAA,KAAkB,CAAA,mBAAA,EAAsB,KAAK,CAAA,yCAAA,CAAA;AAGrE,IAAM,gBAAA,GAAmB,CAAC,IAAA,KACxB,MAAA,CAAO,WAAA;AAAA,EACL,MAAA,CAAO,QAAQ,IAAI,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAAA,IACzC,GAAA;AAAA,IACA,OAAO,KAAA,KAAU,QAAA,GAAW,eAAe,KAAK,CAAA,GAAI,iBAAiB,KAAK;AAAA,GAC3E;AACH,CAAA;AAEF,IAAM,MAAA,GAAiB;AAAA,EACrB,OAAA,EAAS,CAAC,4BAA4B,CAAA;AAAA,EACtC,QAAA,EAAU;AAAA;AAAA,IAER,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,SAAA,EAAW;AAAA,MACT,MAAA,EAAQ,IAAA;AAAA,MACR,OAAA,EAAS,MAAA;AAAA,MACT,OAAA,EAAS;AAAA,QACP,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ;AAAA;AAAA,QAEN,MAAA,EAAQ,oBAAA;AAAA,QACR,KAAA,EAAO,mBAAA;AAAA,QACP,IAAA,EAAM,kBAAA;AAAA,QACN,UAAA,EAAY,wBAAA;AAAA,QACZ,UAAA,EAAY,wBAAA;AAAA,QACZ,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,qBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,SAAA,EAAW;AAAA,UACT,OAAA,EAAS,uBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,WAAA,EAAa;AAAA,UACX,OAAA,EAAS,yBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,mBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,OAAA,EAAS,oBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,OAAA,EAAS;AAAA,UACP,OAAA,EAAS,qBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,OAAA,EAAS,kBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,KAAK,gBAAA,CAAiB;AAAA;AAAA,UAEpB,EAAA,EAAI,iBAAA;AAAA,UACJ,IAAA,EAAM,sBAAA;AAAA,UACN,OAAA,EAAS,yBAAA;AAAA,UACT,QAAA,EAAU,0BAAA;AAAA,UACV,UAAA,EAAY,uBAAA;AAAA,UACZ,WAAA,EAAa,wBAAA;AAAA,UACb,YAAA,EAAc,yBAAA;AAAA,UACd,kBAAA,EAAoB,+BAAA;AAAA,UACpB,mBAAA,EAAqB,gCAAA;AAAA;AAAA,UAErB,aAAA,EAAe,0BAAA;AAAA,UACf,YAAA,EAAc,uBAAA;AAAA,UACd,OAAA,EAAS,sBAAA;AAAA;AAAA,UAGT,MAAA,EAAQ;AAAA,YACN,OAAA,EAAS,6BAAA;AAAA,YACT,KAAA,EAAO,2BAAA;AAAA,YACP,MAAA,EAAQ,4BAAA;AAAA,YACR,KAAA,EAAO;AAAA,WACT;AAAA;AAAA,UAGA,IAAA,EAAM;AAAA,YACJ,OAAA,EAAS,2BAAA;AAAA,YACT,SAAA,EAAW,6BAAA;AAAA,YACX,QAAA,EAAU,4BAAA;AAAA,YACV,KAAA,EAAO,yBAAA;AAAA,YACP,MAAA,EAAQ,0BAAA;AAAA,YACR,QAAA,EAAU,4BAAA;AAAA,YACV,WAAA,EAAa,6BAAA;AAAA,YACb,SAAA,EAAW;AAAA,WACb;AAAA;AAAA,UAGA,MAAA,EAAQ;AAAA,YACN,OAAA,EAAS,6BAAA;AAAA,YACT,KAAA,EAAO,2BAAA;AAAA,YACP,MAAA,EAAQ,4BAAA;AAAA,YACR,SAAA,EAAW,+BAAA;AAAA,YACX,iBAAA,EAAmB,qCAAA;AAAA,YACnB,kBAAA,EAAoB,sCAAA;AAAA,YACpB,KAAA,EAAO,2BAAA;AAAA,YACP,QAAA,EAAU;AAAA,WACZ;AAAA;AAAA,UAGA,OAAA,EAAS;AAAA,YACP,OAAA,EAAS,sBAAA;AAAA,YACT,KAAA,EAAO,4BAAA;AAAA,YACP,MAAA,EAAQ,6BAAA;AAAA,YACR,SAAA,EAAW,gCAAA;AAAA,YACX,iBAAA,EAAmB,sCAAA;AAAA,YACnB,kBAAA,EAAoB;AAAA,WACtB;AAAA,UACA,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,oBAAA;AAAA,YACT,KAAA,EAAO,0BAAA;AAAA,YACP,MAAA,EAAQ,2BAAA;AAAA,YACR,SAAA,EAAW,8BAAA;AAAA,YACX,iBAAA,EAAmB,oCAAA;AAAA,YACnB,kBAAA,EAAoB;AAAA,WACtB;AAAA,UACA,OAAA,EAAS;AAAA,YACP,OAAA,EAAS,sBAAA;AAAA,YACT,KAAA,EAAO,4BAAA;AAAA,YACP,MAAA,EAAQ,6BAAA;AAAA,YACR,SAAA,EAAW,gCAAA;AAAA,YACX,iBAAA,EAAmB,sCAAA;AAAA,YACnB,kBAAA,EAAoB;AAAA,WACtB;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,OAAA,EAAS,mBAAA;AAAA,YACT,KAAA,EAAO,yBAAA;AAAA,YACP,MAAA,EAAQ;AAAA,WACV;AAAA;AAAA,UAGA,QAAA,EAAU,uBAAA;AAAA,UACV,KAAA,EAAO,yBAAA;AAAA,UACP,eAAA,EAAiB,4BAAA;AAAA;AAAA,UAGjB,IAAA,EAAM;AAAA,YACJ,OAAA,EAAS,mBAAA;AAAA,YACT,KAAA,EAAO,yBAAA;AAAA,YACP,OAAA,EAAS;AAAA,WACX;AAAA;AAAA,UAGA,QAAA,EAAU;AAAA,YACR,IAAA,EAAM;AAAA,cACJ,OAAA,EAAS,+BAAA;AAAA,cACT,KAAA,EAAO,gCAAA;AAAA,cACP,SAAA,EAAW,oCAAA;AAAA,cACX,iBAAA,EAAmB,0CAAA;AAAA,cACnB,kBAAA,EAAoB;AAAA,aACtB;AAAA,YACA,IAAA,EAAM;AAAA,cACJ,OAAA,EAAS,+BAAA;AAAA,cACT,KAAA,EAAO,gCAAA;AAAA,cACP,SAAA,EAAW,oCAAA;AAAA,cACX,iBAAA,EAAmB,0CAAA;AAAA,cACnB,kBAAA,EAAoB;AAAA;AACtB,WACF;AAAA,UACA,aAAA,EAAe;AAAA,YACb,OAAA,EAAS,6BAAA;AAAA,YACT,KAAA,EAAO,8BAAA;AAAA,YACP,MAAA,EAAQ,+BAAA;AAAA,YACR,SAAA,EAAW,kCAAA;AAAA,YACX,iBAAA,EAAmB,wCAAA;AAAA,YACnB,kBAAA,EAAoB,yCAAA;AAAA,YACpB,KAAA,EAAO,8BAAA;AAAA,YACP,aAAA,EAAe,oCAAA;AAAA,YACf,cAAA,EAAgB;AAAA,WAClB;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,SAAA,EAAW;AAAA,YACT,WAAA,EAAa,gCAAA;AAAA,YACb,iBAAA,EAAmB,sCAAA;AAAA,YACnB,kBAAA,EAAoB,uCAAA;AAAA,YACpB,qBAAA,EAAuB,0CAAA;AAAA,YACvB,2BAAA,EAA6B,gDAAA;AAAA,YAC7B,4BAAA,EAA8B,iDAAA;AAAA,YAC9B,gBAAA,EAAkB,qCAAA;AAAA,YAClB,sBAAA,EAAwB,2CAAA;AAAA,YACxB,uBAAA,EAAyB,4CAAA;AAAA,YACzB,0BAAA,EAA4B,+CAAA;AAAA,YAC5B,gCAAA,EAAkC,qDAAA;AAAA,YAClC,iCAAA,EAAmC,sDAAA;AAAA,YACnC,eAAA,EAAiB,oCAAA;AAAA,YACjB,qBAAA,EAAuB,0CAAA;AAAA,YACvB,sBAAA,EAAwB,2CAAA;AAAA,YACxB,yBAAA,EAA2B,8CAAA;AAAA,YAC3B,+BAAA,EAAiC,oDAAA;AAAA,YACjC,gCAAA,EAAkC;AAAA,WACpC;AAAA;AAAA,UAGA,OAAA,EAAS;AAAA,SACV;AAAA,OACH;AAAA;AAAA,MAEA,OAAA,EAAS;AAAA,QACP,EAAA,EAAI,OAAA;AAAA;AAAA,QACJ,EAAA,EAAI,QAAA;AAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AAAA,OACN;AAAA,MAEA,YAAA,EAAc;AAAA,QACZ,EAAA,EAAI,eAAA;AAAA;AAAA,QACJ,EAAA,EAAI,2BAAA;AAAA;AAAA,QACJ,EAAA,EAAI,2BAAA;AAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AAAA,OACN;AAAA,MAEA,QAAA,EAAU;AAAA,QACR,oBAAA,EAAsB;AAAA,OACxB;AAAA,MAEA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,CAAC,yBAAyB,CAAA;AAAA,QAChC,IAAA,EAAM,CAAC,4BAA4B,CAAA;AAAA,QACnC,IAAA,EAAM,CAAC,yBAAyB,CAAA;AAAA,QAChC,OAAA,EAAS,CAAC,4BAA4B;AAAA,OACxC;AAAA;AAAA;AAAA;AAAA,MAKA,QAAA,EAAU;AAAA;AAAA,QAER,aAAa,CAAC,2BAAA,EAA6B,EAAE,UAAA,EAAY,wCAAwC,CAAA;AAAA,QACjG,aAAa,CAAC,+BAAA,EAAiC,EAAE,UAAA,EAAY,uCAAuC,CAAA;AAAA,QACpG,aAAa,CAAC,0BAAA,EAA4B,EAAE,UAAA,EAAY,kCAAkC,CAAA;AAAA,QAC1F,aAAa,CAAC,0BAAA,EAA4B,EAAE,UAAA,EAAY,kCAAkC,CAAA;AAAA,QAC1F,aAAa,CAAC,6BAAA,EAA+B,EAAE,UAAA,EAAY,qCAAqC,CAAA;AAAA,QAChG,aAAa,CAAC,6BAAA,EAA+B,EAAE,UAAA,EAAY,qCAAqC;AAAA,OAClG;AAAA;AAAA;AAAA;AAAA,MAKA,SAAA,EAAW;AAAA,QACT,IAAA,EAAM,oBAAA;AAAA,QACN,YAAA,EAAc,0BAAA;AAAA,QACd,KAAA,EAAO,qBAAA;AAAA,QACP,QAAA,EAAU,wBAAA;AAAA,QACV,OAAA,EAAS,uBAAA;AAAA,QACT,KAAA,EAAO,qBAAA;AAAA,QACP,MAAA,EAAQ,sBAAA;AAAA,QACR,WAAA,EAAa;AAAA,OACf;AAAA;AAAA;AAAA;AAAA,MAKA,kBAAA,EAAoB;AAAA,QAClB,IAAA,EAAM,sBAAA;AAAA,QACN,MAAA,EAAQ,wBAAA;AAAA,QACR,IAAA,EAAM,sBAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,wBAAA,EAA0B;AAAA,QACxB,MAAA,EAAQ,oBAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACX;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,EAAQ;AAAA,QACN,QAAA,EAAU,mBAAA;AAAA,QACV,MAAA,EAAQ,iBAAA;AAAA,QACR,KAAA,EAAO,gBAAA;AAAA,QACP,gBAAA,EAAkB,yBAAA;AAAA,QAClB,KAAA,EAAO,gBAAA;AAAA,QACP,OAAA,EAAS,kBAAA;AAAA,QACT,OAAA,EAAS,kBAAA;AAAA,QACT,YAAA,EAAc,uBAAA;AAAA,QACd,KAAA,EAAO;AAAA,OACT;AAAA;AAAA;AAAA;AAAA,MAKA,SAAA,EAAW;AAAA,QACT,gBAAA,EAAkB;AAAA,UAChB,IAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAI;AAAA,UACpB,EAAA,EAAI,EAAE,MAAA,EAAQ,uCAAA;AAAwC,SACxD;AAAA,QACA,cAAA,EAAgB;AAAA,UACd,IAAA,EAAM,EAAE,MAAA,EAAQ,uCAAA,EAAwC;AAAA,UACxD,EAAA,EAAI,EAAE,MAAA,EAAQ,GAAA;AAAI,SACpB;AAAA,QACA,SAAA,EAAW;AAAA,UACT,IAAA,EAAM,EAAE,OAAA,EAAS,GAAA,EAAI;AAAA,UACrB,EAAA,EAAI,EAAE,OAAA,EAAS,GAAA;AAAI,SACrB;AAAA;AAAA;AAAA;AAAA;AAAA,QAKA,cAAA,EAAgB;AAAA,UACd,KAAA,EAAO,EAAE,OAAA,EAAS,GAAA;AAAI,SACxB;AAAA,QACA,WAAA,EAAa;AAAA,UACX,eAAA,EAAiB,EAAE,SAAA,EAAW,UAAA,EAAY,SAAS,KAAA,EAAM;AAAA,UACzD,KAAA,EAAO,EAAE,SAAA,EAAW,YAAA,EAAc,SAAS,GAAA;AAAI;AACjD,OACF;AAAA,MACA,SAAA,EAAW;AAAA,QACT,gBAAA,EAAkB,8BAAA;AAAA,QAClB,cAAA,EAAgB,4BAAA;AAAA,QAChB,SAAA,EAAW,uBAAA;AAAA,QACX,cAAA,EAAgB,mCAAA;AAAA,QAChB,WAAA,EAAa;AAAA;AACf;AACF,GACF;AAAA,EACA,OAAA,EAAS,CAACE,mCAAA,EAAoB,mBAAA,EAAqBC,iCAAgB;AACrE,CAAA;AAEA,IAAO,uBAAA,GAAQ","file":"tailwind.config.cjs","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import containerQueries from '@tailwindcss/container-queries';\nimport type { Config } from 'tailwindcss';\nimport tailwindcssAnimate from 'tailwindcss-animate';\nimport plugin from 'tailwindcss/plugin';\n\nconst odsTypographyPlugin = plugin(({ addUtilities }) => {\n addUtilities({\n '.text-h1': {\n fontFamily: 'var(--font-h1-family)',\n fontWeight: 'var(--font-h1-weight)',\n fontSize: 'var(--font-size-h1-title)',\n lineHeight: 'var(--font-line-space-h1-main-title)',\n letterSpacing: '-0.02em',\n },\n '.text-h2': {\n fontFamily: 'var(--font-h2-family)',\n fontWeight: 'var(--font-h2-weight)',\n fontSize: 'var(--font-size-h2-sub-title)',\n lineHeight: 'var(--font-line-space-h2-sub-title)',\n letterSpacing: '-0.02em',\n },\n '.text-h3': {\n fontFamily: 'var(--font-h3-family)',\n fontWeight: 'var(--font-h3-weight)',\n fontSize: 'var(--font-size-h3-body)',\n lineHeight: 'var(--font-line-space-h3-body)',\n letterSpacing: '-0.02em',\n },\n '.text-h4': {\n fontFamily: 'var(--font-h4-family)',\n fontWeight: 'var(--font-h4-weight)',\n fontSize: 'var(--font-size-h4-body)',\n lineHeight: 'var(--font-line-space-h4-body)',\n },\n '.text-h5': {\n fontFamily: 'var(--font-h5-family)',\n fontWeight: 'var(--font-h5-weight)',\n fontSize: 'var(--font-size-h5-caption)',\n lineHeight: 'var(--font-line-space-h5-caption)',\n textTransform: 'uppercase',\n letterSpacing: '-0.02em',\n },\n '.text-h6': {\n fontFamily: 'var(--font-h6-family)',\n fontWeight: 'var(--font-h6-weight)',\n fontSize: 'var(--font-size-h6-caption)',\n lineHeight: 'var(--font-line-space-h6-caption)',\n },\n // Monospace body/code text (commands, ids, paths, code blocks): Azeret Mono\n // at the h6 responsive scale, no transform, neutral letter-spacing (unlike\n // text-h5's uppercase -0.02em label styling).\n '.text-code': {\n fontFamily: 'var(--font-family-heading)',\n fontWeight: 'var(--font-weight-medium)',\n fontSize: 'var(--font-size-h6-caption)',\n lineHeight: 'var(--font-line-space-h6-caption)',\n },\n // BRAND WORDMARKS ONLY — the platform name beside a logo in a header or\n // footer. Azeret Mono bold at the h5-caption scale, which is exactly what\n // every hand-written wordmark override spelled before this composite.\n '.text-wordmark': {\n fontFamily: 'var(--font-family-heading)',\n fontWeight: 'var(--font-weight-bold)',\n fontSize: 'var(--font-size-h5-caption)',\n lineHeight: 'var(--font-line-space-h5-caption)',\n textTransform: 'none',\n letterSpacing: '0',\n },\n // Badge / stamp SCALE — size only, deliberately NOT a composite: it\n // carries no family, weight or casing, so it composes with whatever the\n // badge already sets (h5 tokens on StatusBadge, DM Sans on Badge). Use it\n // for badges and chips instead of a raw `text-[10px]`; it is a component\n // token, not a step in the h1-h6 scale.\n '.text-badge': {\n fontSize: 'var(--font-size-badge)',\n lineHeight: 'var(--font-line-space-badge)',\n },\n });\n});\n\n/**\n * Make Tailwind opacity modifiers (`bg-ods-error/10`, `hover:bg-ods-accent/90`, …)\n * actually work on var()-based ODS tokens. Without `<alpha-value>` in the color\n * definition Tailwind v3 silently generates NOTHING for `ods-*\\/N` classes — the\n * element loses that declaration entirely. `color-mix` keeps un-suffixed classes\n * visually identical (a 100% mix is the color itself) while letting the modifier\n * scale the alpha.\n */\nconst withAlphaValue = (color: string) => `color-mix(in srgb, ${color} calc(<alpha-value> * 100%), transparent)`;\n\ntype ColorTree = { [key: string]: string | ColorTree };\nconst withAlphaSupport = (tree: ColorTree): ColorTree =>\n Object.fromEntries(\n Object.entries(tree).map(([key, value]) => [\n key,\n typeof value === 'string' ? withAlphaValue(value) : withAlphaSupport(value),\n ]),\n );\n\nconst config: Config = {\n content: ['./src/**/*.{js,ts,jsx,tsx}'],\n safelist: [\n // Dynamically generated classes for table hide/show functionality\n 'hidden',\n 'md:hidden',\n 'lg:hidden',\n 'md:flex',\n 'lg:flex',\n ],\n theme: {\n container: {\n center: true,\n padding: '2rem',\n screens: {\n '2xl': '1400px',\n },\n },\n extend: {\n colors: {\n // Shadcn/ui base colors (keep for compatibility)\n border: 'hsl(var(--border))',\n input: 'hsl(var(--input))',\n ring: 'hsl(var(--ring))',\n background: 'hsl(var(--background))',\n foreground: 'hsl(var(--foreground))',\n primary: {\n DEFAULT: 'hsl(var(--primary))',\n foreground: 'hsl(var(--primary-foreground))',\n },\n secondary: {\n DEFAULT: 'hsl(var(--secondary))',\n foreground: 'hsl(var(--secondary-foreground))',\n },\n destructive: {\n DEFAULT: 'hsl(var(--destructive))',\n foreground: 'hsl(var(--destructive-foreground))',\n },\n muted: {\n DEFAULT: 'hsl(var(--muted))',\n foreground: 'hsl(var(--muted-foreground))',\n },\n accent: {\n DEFAULT: 'hsl(var(--accent))',\n foreground: 'hsl(var(--accent-foreground))',\n },\n popover: {\n DEFAULT: 'hsl(var(--popover))',\n foreground: 'hsl(var(--popover-foreground))',\n },\n card: {\n DEFAULT: 'hsl(var(--card))',\n foreground: 'hsl(var(--card-foreground))',\n },\n\n // =================================================\n // ODS (Open Design System) COLORS\n // =================================================\n // Single nested structure: generates bg-ods-*, text-ods-*, border-ods-* utilities\n ods: withAlphaSupport({\n // Backgrounds\n bg: 'var(--color-bg)',\n card: 'var(--color-bg-card)',\n overlay: 'var(--color-bg-overlay)',\n skeleton: 'var(--color-bg-skeleton)',\n 'bg-hover': 'var(--color-bg-hover)',\n 'bg-active': 'var(--color-bg-active)',\n 'bg-surface': 'var(--color-bg-surface)',\n 'bg-surface-hover': 'var(--color-bg-surface-hover)',\n 'bg-surface-active': 'var(--color-bg-surface-active)',\n // Light surface on a dark UI — the semantic token existed with no utility.\n 'bg-inverted': 'var(--color-bg-inverted)',\n 'card-hover': 'var(--color-bg-hover)',\n divider: 'var(--color-divider)',\n\n // Borders\n border: {\n DEFAULT: 'var(--color-border-default)',\n hover: 'var(--color-border-hover)',\n active: 'var(--color-border-active)',\n focus: 'var(--color-border-focus)',\n },\n\n // Text\n text: {\n primary: 'var(--color-text-primary)',\n secondary: 'var(--color-text-secondary)',\n tertiary: 'var(--color-text-tertiary)',\n muted: 'var(--color-text-muted)',\n subtle: 'var(--color-text-subtle)',\n disabled: 'var(--color-text-disabled)',\n 'on-accent': 'var(--color-text-on-accent)',\n 'on-dark': 'var(--color-text-on-dark)',\n },\n\n // Accent\n accent: {\n DEFAULT: 'var(--color-accent-primary)',\n hover: 'var(--color-accent-hover)',\n active: 'var(--color-accent-active)',\n secondary: 'var(--color-accent-secondary)',\n 'secondary-hover': 'var(--color-accent-secondary-hover)',\n 'secondary-active': 'var(--color-accent-secondary-active)',\n focus: 'var(--color-accent-focus)',\n disabled: 'var(--color-accent-disabled)',\n },\n\n // Status\n success: {\n DEFAULT: 'var(--color-success)',\n hover: 'var(--color-success-hover)',\n active: 'var(--color-success-active)',\n secondary: 'var(--color-success-secondary)',\n 'secondary-hover': 'var(--color-success-secondary-hover)',\n 'secondary-active': 'var(--color-success-secondary-active)',\n },\n error: {\n DEFAULT: 'var(--color-error)',\n hover: 'var(--color-error-hover)',\n active: 'var(--color-error-active)',\n secondary: 'var(--color-error-secondary)',\n 'secondary-hover': 'var(--color-error-secondary-hover)',\n 'secondary-active': 'var(--color-error-secondary-active)',\n },\n warning: {\n DEFAULT: 'var(--color-warning)',\n hover: 'var(--color-warning-hover)',\n active: 'var(--color-warning-active)',\n secondary: 'var(--color-warning-secondary)',\n 'secondary-hover': 'var(--color-warning-secondary-hover)',\n 'secondary-active': 'var(--color-warning-secondary-active)',\n },\n info: {\n DEFAULT: 'var(--color-info)',\n hover: 'var(--color-info-hover)',\n active: 'var(--color-info-active)',\n },\n\n // Interactive states\n disabled: 'var(--color-disabled)',\n focus: 'var(--color-focus-ring)',\n 'focus-visible': 'var(--color-focus-visible)',\n\n // Links\n link: {\n DEFAULT: 'var(--color-link)',\n hover: 'var(--color-link-hover)',\n visited: 'var(--color-link-visited)',\n },\n\n // Brand colors (theme-independent)\n flamingo: {\n pink: {\n DEFAULT: 'var(--ods-flamingo-pink-base)',\n hover: 'var(--ods-flamingo-pink-hover)',\n secondary: 'var(--ods-flamingo-pink-secondary)',\n 'secondary-hover': 'var(--ods-flamingo-pink-secondary-hover)',\n 'secondary-active': 'var(--ods-flamingo-pink-secondary-action)',\n },\n cyan: {\n DEFAULT: 'var(--ods-flamingo-cyan-base)',\n hover: 'var(--ods-flamingo-cyan-hover)',\n secondary: 'var(--ods-flamingo-cyan-secondary)',\n 'secondary-hover': 'var(--ods-flamingo-cyan-secondary-hover)',\n 'secondary-active': 'var(--ods-flamingo-cyan-secondary-action)',\n },\n },\n 'open-yellow': {\n DEFAULT: 'var(--ods-open-yellow-base)',\n hover: 'var(--ods-open-yellow-hover)',\n action: 'var(--ods-open-yellow-action)',\n secondary: 'var(--ods-open-yellow-secondary)',\n 'secondary-hover': 'var(--ods-open-yellow-secondary-hover)',\n 'secondary-action': 'var(--ods-open-yellow-secondary-action)',\n light: 'var(--ods-open-yellow-light)',\n 'light-hover': 'var(--ods-open-yellow-light-hover)',\n 'light-action': 'var(--ods-open-yellow-light-action)',\n },\n\n // Attention tokens (ods-colors.css). Components reference these BY\n // NAME (error-state.tsx: `border-ods-attention-red-error` etc.) —\n // without these mappings Tailwind silently generates NOTHING for\n // the class and the component renders colorless in every consumer.\n attention: {\n 'red-error': 'var(--ods-attention-red-error)',\n 'red-error-hover': 'var(--ods-attention-red-error-hover)',\n 'red-error-action': 'var(--ods-attention-red-error-action)',\n 'red-error-secondary': 'var(--ods-attention-red-error-secondary)',\n 'red-error-secondary-hover': 'var(--ods-attention-red-error-secondary-hover)',\n 'red-error-secondary-action': 'var(--ods-attention-red-error-secondary-action)',\n 'yellow-warning': 'var(--ods-attention-yellow-warning)',\n 'yellow-warning-hover': 'var(--ods-attention-yellow-warning-hover)',\n 'yellow-warning-action': 'var(--ods-attention-yellow-warning-action)',\n 'yellow-warning-secondary': 'var(--ods-attention-yellow-warning-secondary)',\n 'yellow-warning-secondary-hover': 'var(--ods-attention-yellow-warning-secondary-hover)',\n 'yellow-warning-secondary-action': 'var(--ods-attention-yellow-warning-secondary-action)',\n 'green-success': 'var(--ods-attention-green-success)',\n 'green-success-hover': 'var(--ods-attention-green-success-hover)',\n 'green-success-action': 'var(--ods-attention-green-success-action)',\n 'green-success-secondary': 'var(--ods-attention-green-success-secondary)',\n 'green-success-secondary-hover': 'var(--ods-attention-green-success-secondary-hover)',\n 'green-success-secondary-action': 'var(--ods-attention-green-success-secondary-action)',\n },\n\n // Adaptive platform color\n current: 'var(--ods-current)',\n }),\n },\n // Custom breakpoints (aligned with ODS responsive tokens from Figma)\n screens: {\n md: '800px', // Tablet: 50rem\n lg: '1280px', // Desktop: 80rem\n xl: '1440px', // Large desktop: 90rem\n },\n\n borderRadius: {\n lg: 'var(--radius)', // 8px\n md: 'calc(var(--radius) - 2px)', // 6px\n sm: 'calc(var(--radius) - 4px)', // 4px\n xs: 'calc(var(--radius) - 6px)', // 2px\n },\n\n maxWidth: {\n 'ods-content-narrow': '600px',\n },\n\n fontFamily: {\n sans: ['var(--font-family-body)'],\n mono: ['var(--font-family-heading)'],\n body: ['var(--font-family-body)'],\n heading: ['var(--font-family-heading)'],\n },\n\n // =================================================\n // TYPOGRAPHY\n // =================================================\n fontSize: {\n // Responsive heading sizes (from ods-responsive-tokens.css)\n 'heading-1': ['var(--font-size-h1-title)', { lineHeight: 'var(--font-line-space-h1-main-title)' }],\n 'heading-2': ['var(--font-size-h2-sub-title)', { lineHeight: 'var(--font-line-space-h2-sub-title)' }],\n 'heading-3': ['var(--font-size-h3-body)', { lineHeight: 'var(--font-line-space-h3-body)' }],\n 'heading-4': ['var(--font-size-h4-body)', { lineHeight: 'var(--font-line-space-h4-body)' }],\n 'heading-5': ['var(--font-size-h5-caption)', { lineHeight: 'var(--font-line-space-h5-caption)' }],\n 'heading-6': ['var(--font-size-h6-caption)', { lineHeight: 'var(--font-line-space-h6-caption)' }],\n },\n\n // =================================================\n // SHADOWS\n // =================================================\n boxShadow: {\n card: 'var(--shadow-card)',\n 'card-hover': 'var(--shadow-card-hover)',\n modal: 'var(--shadow-modal)',\n dropdown: 'var(--shadow-dropdown)',\n tooltip: 'var(--shadow-tooltip)',\n focus: 'var(--shadow-focus)',\n accent: 'var(--shadow-accent)',\n 'accent-lg': 'var(--shadow-accent-lg)',\n },\n\n // =================================================\n // TRANSITIONS\n // =================================================\n transitionDuration: {\n fast: 'var(--duration-fast)',\n normal: 'var(--duration-normal)',\n slow: 'var(--duration-slow)',\n slower: 'var(--duration-slower)',\n },\n transitionTimingFunction: {\n bounce: 'var(--ease-bounce)',\n elastic: 'var(--ease-elastic)',\n },\n\n // =================================================\n // Z-INDEX\n // =================================================\n zIndex: {\n dropdown: 'var(--z-dropdown)',\n sticky: 'var(--z-sticky)',\n fixed: 'var(--z-fixed)',\n 'modal-backdrop': 'var(--z-modal-backdrop)',\n modal: 'var(--z-modal)',\n popover: 'var(--z-popover)',\n tooltip: 'var(--z-tooltip)',\n notification: 'var(--z-notification)',\n debug: 'var(--z-debug)',\n },\n\n // =================================================\n // ANIMATIONS\n // =================================================\n keyframes: {\n 'accordion-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-accordion-content-height)' },\n },\n 'accordion-up': {\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: '0' },\n },\n 'fade-in': {\n from: { opacity: '0' },\n to: { opacity: '1' },\n },\n // Chat streaming affordances. Defined here, not in an inline <style>\n // the component renders: those tags were rewritten on every render,\n // i.e. every streamed chunk, and each rewrite made WebKit restyle and\n // relayout the whole document.\n 'cursor-blink': {\n '50%': { opacity: '0' },\n },\n 'dot-pulse': {\n '0%, 80%, 100%': { transform: 'scale(1)', opacity: '0.7' },\n '40%': { transform: 'scale(1.5)', opacity: '1' },\n },\n },\n animation: {\n 'accordion-down': 'accordion-down 0.2s ease-out',\n 'accordion-up': 'accordion-up 0.2s ease-out',\n 'fade-in': 'fade-in 0.3s ease-out',\n 'cursor-blink': 'cursor-blink 1s steps(1) infinite',\n 'dot-pulse': 'dot-pulse 1.4s ease-in-out infinite',\n },\n },\n },\n plugins: [tailwindcssAnimate, odsTypographyPlugin, containerQueries],\n};\n\nexport default config;\n"]}
|
package/dist/tailwind.config.js
CHANGED
|
@@ -468,12 +468,25 @@ var config = {
|
|
|
468
468
|
"fade-in": {
|
|
469
469
|
from: { opacity: "0" },
|
|
470
470
|
to: { opacity: "1" }
|
|
471
|
+
},
|
|
472
|
+
// Chat streaming affordances. Defined here, not in an inline <style>
|
|
473
|
+
// the component renders: those tags were rewritten on every render,
|
|
474
|
+
// i.e. every streamed chunk, and each rewrite made WebKit restyle and
|
|
475
|
+
// relayout the whole document.
|
|
476
|
+
"cursor-blink": {
|
|
477
|
+
"50%": { opacity: "0" }
|
|
478
|
+
},
|
|
479
|
+
"dot-pulse": {
|
|
480
|
+
"0%, 80%, 100%": { transform: "scale(1)", opacity: "0.7" },
|
|
481
|
+
"40%": { transform: "scale(1.5)", opacity: "1" }
|
|
471
482
|
}
|
|
472
483
|
},
|
|
473
484
|
animation: {
|
|
474
485
|
"accordion-down": "accordion-down 0.2s ease-out",
|
|
475
486
|
"accordion-up": "accordion-up 0.2s ease-out",
|
|
476
|
-
"fade-in": "fade-in 0.3s ease-out"
|
|
487
|
+
"fade-in": "fade-in 0.3s ease-out",
|
|
488
|
+
"cursor-blink": "cursor-blink 1s steps(1) infinite",
|
|
489
|
+
"dot-pulse": "dot-pulse 1.4s ease-in-out infinite"
|
|
477
490
|
}
|
|
478
491
|
}
|
|
479
492
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/tailwindcss/lib/util/createPlugin.js","../node_modules/tailwindcss/lib/public/create-plugin.js","../node_modules/tailwindcss/plugin.js","../tailwind.config.ts"],"names":["plugin","config"],"mappings":"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","file":"tailwind.config.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import containerQueries from '@tailwindcss/container-queries';\nimport type { Config } from 'tailwindcss';\nimport tailwindcssAnimate from 'tailwindcss-animate';\nimport plugin from 'tailwindcss/plugin';\n\nconst odsTypographyPlugin = plugin(({ addUtilities }) => {\n addUtilities({\n '.text-h1': {\n fontFamily: 'var(--font-h1-family)',\n fontWeight: 'var(--font-h1-weight)',\n fontSize: 'var(--font-size-h1-title)',\n lineHeight: 'var(--font-line-space-h1-main-title)',\n letterSpacing: '-0.02em',\n },\n '.text-h2': {\n fontFamily: 'var(--font-h2-family)',\n fontWeight: 'var(--font-h2-weight)',\n fontSize: 'var(--font-size-h2-sub-title)',\n lineHeight: 'var(--font-line-space-h2-sub-title)',\n letterSpacing: '-0.02em',\n },\n '.text-h3': {\n fontFamily: 'var(--font-h3-family)',\n fontWeight: 'var(--font-h3-weight)',\n fontSize: 'var(--font-size-h3-body)',\n lineHeight: 'var(--font-line-space-h3-body)',\n letterSpacing: '-0.02em',\n },\n '.text-h4': {\n fontFamily: 'var(--font-h4-family)',\n fontWeight: 'var(--font-h4-weight)',\n fontSize: 'var(--font-size-h4-body)',\n lineHeight: 'var(--font-line-space-h4-body)',\n },\n '.text-h5': {\n fontFamily: 'var(--font-h5-family)',\n fontWeight: 'var(--font-h5-weight)',\n fontSize: 'var(--font-size-h5-caption)',\n lineHeight: 'var(--font-line-space-h5-caption)',\n textTransform: 'uppercase',\n letterSpacing: '-0.02em',\n },\n '.text-h6': {\n fontFamily: 'var(--font-h6-family)',\n fontWeight: 'var(--font-h6-weight)',\n fontSize: 'var(--font-size-h6-caption)',\n lineHeight: 'var(--font-line-space-h6-caption)',\n },\n // Monospace body/code text (commands, ids, paths, code blocks): Azeret Mono\n // at the h6 responsive scale, no transform, neutral letter-spacing (unlike\n // text-h5's uppercase -0.02em label styling).\n '.text-code': {\n fontFamily: 'var(--font-family-heading)',\n fontWeight: 'var(--font-weight-medium)',\n fontSize: 'var(--font-size-h6-caption)',\n lineHeight: 'var(--font-line-space-h6-caption)',\n },\n // BRAND WORDMARKS ONLY — the platform name beside a logo in a header or\n // footer. Azeret Mono bold at the h5-caption scale, which is exactly what\n // every hand-written wordmark override spelled before this composite.\n '.text-wordmark': {\n fontFamily: 'var(--font-family-heading)',\n fontWeight: 'var(--font-weight-bold)',\n fontSize: 'var(--font-size-h5-caption)',\n lineHeight: 'var(--font-line-space-h5-caption)',\n textTransform: 'none',\n letterSpacing: '0',\n },\n // Badge / stamp SCALE — size only, deliberately NOT a composite: it\n // carries no family, weight or casing, so it composes with whatever the\n // badge already sets (h5 tokens on StatusBadge, DM Sans on Badge). Use it\n // for badges and chips instead of a raw `text-[10px]`; it is a component\n // token, not a step in the h1-h6 scale.\n '.text-badge': {\n fontSize: 'var(--font-size-badge)',\n lineHeight: 'var(--font-line-space-badge)',\n },\n });\n});\n\n/**\n * Make Tailwind opacity modifiers (`bg-ods-error/10`, `hover:bg-ods-accent/90`, …)\n * actually work on var()-based ODS tokens. Without `<alpha-value>` in the color\n * definition Tailwind v3 silently generates NOTHING for `ods-*\\/N` classes — the\n * element loses that declaration entirely. `color-mix` keeps un-suffixed classes\n * visually identical (a 100% mix is the color itself) while letting the modifier\n * scale the alpha.\n */\nconst withAlphaValue = (color: string) => `color-mix(in srgb, ${color} calc(<alpha-value> * 100%), transparent)`;\n\ntype ColorTree = { [key: string]: string | ColorTree };\nconst withAlphaSupport = (tree: ColorTree): ColorTree =>\n Object.fromEntries(\n Object.entries(tree).map(([key, value]) => [\n key,\n typeof value === 'string' ? withAlphaValue(value) : withAlphaSupport(value),\n ]),\n );\n\nconst config: Config = {\n content: ['./src/**/*.{js,ts,jsx,tsx}'],\n safelist: [\n // Dynamically generated classes for table hide/show functionality\n 'hidden',\n 'md:hidden',\n 'lg:hidden',\n 'md:flex',\n 'lg:flex',\n ],\n theme: {\n container: {\n center: true,\n padding: '2rem',\n screens: {\n '2xl': '1400px',\n },\n },\n extend: {\n colors: {\n // Shadcn/ui base colors (keep for compatibility)\n border: 'hsl(var(--border))',\n input: 'hsl(var(--input))',\n ring: 'hsl(var(--ring))',\n background: 'hsl(var(--background))',\n foreground: 'hsl(var(--foreground))',\n primary: {\n DEFAULT: 'hsl(var(--primary))',\n foreground: 'hsl(var(--primary-foreground))',\n },\n secondary: {\n DEFAULT: 'hsl(var(--secondary))',\n foreground: 'hsl(var(--secondary-foreground))',\n },\n destructive: {\n DEFAULT: 'hsl(var(--destructive))',\n foreground: 'hsl(var(--destructive-foreground))',\n },\n muted: {\n DEFAULT: 'hsl(var(--muted))',\n foreground: 'hsl(var(--muted-foreground))',\n },\n accent: {\n DEFAULT: 'hsl(var(--accent))',\n foreground: 'hsl(var(--accent-foreground))',\n },\n popover: {\n DEFAULT: 'hsl(var(--popover))',\n foreground: 'hsl(var(--popover-foreground))',\n },\n card: {\n DEFAULT: 'hsl(var(--card))',\n foreground: 'hsl(var(--card-foreground))',\n },\n\n // =================================================\n // ODS (Open Design System) COLORS\n // =================================================\n // Single nested structure: generates bg-ods-*, text-ods-*, border-ods-* utilities\n ods: withAlphaSupport({\n // Backgrounds\n bg: 'var(--color-bg)',\n card: 'var(--color-bg-card)',\n overlay: 'var(--color-bg-overlay)',\n skeleton: 'var(--color-bg-skeleton)',\n 'bg-hover': 'var(--color-bg-hover)',\n 'bg-active': 'var(--color-bg-active)',\n 'bg-surface': 'var(--color-bg-surface)',\n 'bg-surface-hover': 'var(--color-bg-surface-hover)',\n 'bg-surface-active': 'var(--color-bg-surface-active)',\n // Light surface on a dark UI — the semantic token existed with no utility.\n 'bg-inverted': 'var(--color-bg-inverted)',\n 'card-hover': 'var(--color-bg-hover)',\n divider: 'var(--color-divider)',\n\n // Borders\n border: {\n DEFAULT: 'var(--color-border-default)',\n hover: 'var(--color-border-hover)',\n active: 'var(--color-border-active)',\n focus: 'var(--color-border-focus)',\n },\n\n // Text\n text: {\n primary: 'var(--color-text-primary)',\n secondary: 'var(--color-text-secondary)',\n tertiary: 'var(--color-text-tertiary)',\n muted: 'var(--color-text-muted)',\n subtle: 'var(--color-text-subtle)',\n disabled: 'var(--color-text-disabled)',\n 'on-accent': 'var(--color-text-on-accent)',\n 'on-dark': 'var(--color-text-on-dark)',\n },\n\n // Accent\n accent: {\n DEFAULT: 'var(--color-accent-primary)',\n hover: 'var(--color-accent-hover)',\n active: 'var(--color-accent-active)',\n secondary: 'var(--color-accent-secondary)',\n 'secondary-hover': 'var(--color-accent-secondary-hover)',\n 'secondary-active': 'var(--color-accent-secondary-active)',\n focus: 'var(--color-accent-focus)',\n disabled: 'var(--color-accent-disabled)',\n },\n\n // Status\n success: {\n DEFAULT: 'var(--color-success)',\n hover: 'var(--color-success-hover)',\n active: 'var(--color-success-active)',\n secondary: 'var(--color-success-secondary)',\n 'secondary-hover': 'var(--color-success-secondary-hover)',\n 'secondary-active': 'var(--color-success-secondary-active)',\n },\n error: {\n DEFAULT: 'var(--color-error)',\n hover: 'var(--color-error-hover)',\n active: 'var(--color-error-active)',\n secondary: 'var(--color-error-secondary)',\n 'secondary-hover': 'var(--color-error-secondary-hover)',\n 'secondary-active': 'var(--color-error-secondary-active)',\n },\n warning: {\n DEFAULT: 'var(--color-warning)',\n hover: 'var(--color-warning-hover)',\n active: 'var(--color-warning-active)',\n secondary: 'var(--color-warning-secondary)',\n 'secondary-hover': 'var(--color-warning-secondary-hover)',\n 'secondary-active': 'var(--color-warning-secondary-active)',\n },\n info: {\n DEFAULT: 'var(--color-info)',\n hover: 'var(--color-info-hover)',\n active: 'var(--color-info-active)',\n },\n\n // Interactive states\n disabled: 'var(--color-disabled)',\n focus: 'var(--color-focus-ring)',\n 'focus-visible': 'var(--color-focus-visible)',\n\n // Links\n link: {\n DEFAULT: 'var(--color-link)',\n hover: 'var(--color-link-hover)',\n visited: 'var(--color-link-visited)',\n },\n\n // Brand colors (theme-independent)\n flamingo: {\n pink: {\n DEFAULT: 'var(--ods-flamingo-pink-base)',\n hover: 'var(--ods-flamingo-pink-hover)',\n secondary: 'var(--ods-flamingo-pink-secondary)',\n 'secondary-hover': 'var(--ods-flamingo-pink-secondary-hover)',\n 'secondary-active': 'var(--ods-flamingo-pink-secondary-action)',\n },\n cyan: {\n DEFAULT: 'var(--ods-flamingo-cyan-base)',\n hover: 'var(--ods-flamingo-cyan-hover)',\n secondary: 'var(--ods-flamingo-cyan-secondary)',\n 'secondary-hover': 'var(--ods-flamingo-cyan-secondary-hover)',\n 'secondary-active': 'var(--ods-flamingo-cyan-secondary-action)',\n },\n },\n 'open-yellow': {\n DEFAULT: 'var(--ods-open-yellow-base)',\n hover: 'var(--ods-open-yellow-hover)',\n action: 'var(--ods-open-yellow-action)',\n secondary: 'var(--ods-open-yellow-secondary)',\n 'secondary-hover': 'var(--ods-open-yellow-secondary-hover)',\n 'secondary-action': 'var(--ods-open-yellow-secondary-action)',\n light: 'var(--ods-open-yellow-light)',\n 'light-hover': 'var(--ods-open-yellow-light-hover)',\n 'light-action': 'var(--ods-open-yellow-light-action)',\n },\n\n // Attention tokens (ods-colors.css). Components reference these BY\n // NAME (error-state.tsx: `border-ods-attention-red-error` etc.) —\n // without these mappings Tailwind silently generates NOTHING for\n // the class and the component renders colorless in every consumer.\n attention: {\n 'red-error': 'var(--ods-attention-red-error)',\n 'red-error-hover': 'var(--ods-attention-red-error-hover)',\n 'red-error-action': 'var(--ods-attention-red-error-action)',\n 'red-error-secondary': 'var(--ods-attention-red-error-secondary)',\n 'red-error-secondary-hover': 'var(--ods-attention-red-error-secondary-hover)',\n 'red-error-secondary-action': 'var(--ods-attention-red-error-secondary-action)',\n 'yellow-warning': 'var(--ods-attention-yellow-warning)',\n 'yellow-warning-hover': 'var(--ods-attention-yellow-warning-hover)',\n 'yellow-warning-action': 'var(--ods-attention-yellow-warning-action)',\n 'yellow-warning-secondary': 'var(--ods-attention-yellow-warning-secondary)',\n 'yellow-warning-secondary-hover': 'var(--ods-attention-yellow-warning-secondary-hover)',\n 'yellow-warning-secondary-action': 'var(--ods-attention-yellow-warning-secondary-action)',\n 'green-success': 'var(--ods-attention-green-success)',\n 'green-success-hover': 'var(--ods-attention-green-success-hover)',\n 'green-success-action': 'var(--ods-attention-green-success-action)',\n 'green-success-secondary': 'var(--ods-attention-green-success-secondary)',\n 'green-success-secondary-hover': 'var(--ods-attention-green-success-secondary-hover)',\n 'green-success-secondary-action': 'var(--ods-attention-green-success-secondary-action)',\n },\n\n // Adaptive platform color\n current: 'var(--ods-current)',\n }),\n },\n // Custom breakpoints (aligned with ODS responsive tokens from Figma)\n screens: {\n md: '800px', // Tablet: 50rem\n lg: '1280px', // Desktop: 80rem\n xl: '1440px', // Large desktop: 90rem\n },\n\n borderRadius: {\n lg: 'var(--radius)', // 8px\n md: 'calc(var(--radius) - 2px)', // 6px\n sm: 'calc(var(--radius) - 4px)', // 4px\n xs: 'calc(var(--radius) - 6px)', // 2px\n },\n\n maxWidth: {\n 'ods-content-narrow': '600px',\n },\n\n fontFamily: {\n sans: ['var(--font-family-body)'],\n mono: ['var(--font-family-heading)'],\n body: ['var(--font-family-body)'],\n heading: ['var(--font-family-heading)'],\n },\n\n // =================================================\n // TYPOGRAPHY\n // =================================================\n fontSize: {\n // Responsive heading sizes (from ods-responsive-tokens.css)\n 'heading-1': ['var(--font-size-h1-title)', { lineHeight: 'var(--font-line-space-h1-main-title)' }],\n 'heading-2': ['var(--font-size-h2-sub-title)', { lineHeight: 'var(--font-line-space-h2-sub-title)' }],\n 'heading-3': ['var(--font-size-h3-body)', { lineHeight: 'var(--font-line-space-h3-body)' }],\n 'heading-4': ['var(--font-size-h4-body)', { lineHeight: 'var(--font-line-space-h4-body)' }],\n 'heading-5': ['var(--font-size-h5-caption)', { lineHeight: 'var(--font-line-space-h5-caption)' }],\n 'heading-6': ['var(--font-size-h6-caption)', { lineHeight: 'var(--font-line-space-h6-caption)' }],\n },\n\n // =================================================\n // SHADOWS\n // =================================================\n boxShadow: {\n card: 'var(--shadow-card)',\n 'card-hover': 'var(--shadow-card-hover)',\n modal: 'var(--shadow-modal)',\n dropdown: 'var(--shadow-dropdown)',\n tooltip: 'var(--shadow-tooltip)',\n focus: 'var(--shadow-focus)',\n accent: 'var(--shadow-accent)',\n 'accent-lg': 'var(--shadow-accent-lg)',\n },\n\n // =================================================\n // TRANSITIONS\n // =================================================\n transitionDuration: {\n fast: 'var(--duration-fast)',\n normal: 'var(--duration-normal)',\n slow: 'var(--duration-slow)',\n slower: 'var(--duration-slower)',\n },\n transitionTimingFunction: {\n bounce: 'var(--ease-bounce)',\n elastic: 'var(--ease-elastic)',\n },\n\n // =================================================\n // Z-INDEX\n // =================================================\n zIndex: {\n dropdown: 'var(--z-dropdown)',\n sticky: 'var(--z-sticky)',\n fixed: 'var(--z-fixed)',\n 'modal-backdrop': 'var(--z-modal-backdrop)',\n modal: 'var(--z-modal)',\n popover: 'var(--z-popover)',\n tooltip: 'var(--z-tooltip)',\n notification: 'var(--z-notification)',\n debug: 'var(--z-debug)',\n },\n\n // =================================================\n // ANIMATIONS\n // =================================================\n keyframes: {\n 'accordion-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-accordion-content-height)' },\n },\n 'accordion-up': {\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: '0' },\n },\n 'fade-in': {\n from: { opacity: '0' },\n to: { opacity: '1' },\n },\n },\n animation: {\n 'accordion-down': 'accordion-down 0.2s ease-out',\n 'accordion-up': 'accordion-up 0.2s ease-out',\n 'fade-in': 'fade-in 0.3s ease-out',\n },\n },\n },\n plugins: [tailwindcssAnimate, odsTypographyPlugin, containerQueries],\n};\n\nexport default config;\n"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/tailwindcss/lib/util/createPlugin.js","../node_modules/tailwindcss/lib/public/create-plugin.js","../node_modules/tailwindcss/plugin.js","../tailwind.config.ts"],"names":["plugin","config"],"mappings":"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","file":"tailwind.config.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction createPlugin(plugin, config) {\n return {\n handler: plugin,\n config\n };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n const optionsFunction = function(options) {\n return {\n __options: options,\n handler: pluginFunction(options),\n config: configFunction(options)\n };\n };\n optionsFunction.__isOptionsFunction = true;\n // Expose plugin dependencies so that `object-hash` returns a different\n // value if anything here changes, to ensure a rebuild is triggered.\n optionsFunction.__pluginFunction = pluginFunction;\n optionsFunction.__configFunction = configFunction;\n return optionsFunction;\n};\nconst _default = createPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _createPlugin = /*#__PURE__*/ _interop_require_default(require(\"../util/createPlugin\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nconst _default = _createPlugin.default;\n","let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n","import containerQueries from '@tailwindcss/container-queries';\nimport type { Config } from 'tailwindcss';\nimport tailwindcssAnimate from 'tailwindcss-animate';\nimport plugin from 'tailwindcss/plugin';\n\nconst odsTypographyPlugin = plugin(({ addUtilities }) => {\n addUtilities({\n '.text-h1': {\n fontFamily: 'var(--font-h1-family)',\n fontWeight: 'var(--font-h1-weight)',\n fontSize: 'var(--font-size-h1-title)',\n lineHeight: 'var(--font-line-space-h1-main-title)',\n letterSpacing: '-0.02em',\n },\n '.text-h2': {\n fontFamily: 'var(--font-h2-family)',\n fontWeight: 'var(--font-h2-weight)',\n fontSize: 'var(--font-size-h2-sub-title)',\n lineHeight: 'var(--font-line-space-h2-sub-title)',\n letterSpacing: '-0.02em',\n },\n '.text-h3': {\n fontFamily: 'var(--font-h3-family)',\n fontWeight: 'var(--font-h3-weight)',\n fontSize: 'var(--font-size-h3-body)',\n lineHeight: 'var(--font-line-space-h3-body)',\n letterSpacing: '-0.02em',\n },\n '.text-h4': {\n fontFamily: 'var(--font-h4-family)',\n fontWeight: 'var(--font-h4-weight)',\n fontSize: 'var(--font-size-h4-body)',\n lineHeight: 'var(--font-line-space-h4-body)',\n },\n '.text-h5': {\n fontFamily: 'var(--font-h5-family)',\n fontWeight: 'var(--font-h5-weight)',\n fontSize: 'var(--font-size-h5-caption)',\n lineHeight: 'var(--font-line-space-h5-caption)',\n textTransform: 'uppercase',\n letterSpacing: '-0.02em',\n },\n '.text-h6': {\n fontFamily: 'var(--font-h6-family)',\n fontWeight: 'var(--font-h6-weight)',\n fontSize: 'var(--font-size-h6-caption)',\n lineHeight: 'var(--font-line-space-h6-caption)',\n },\n // Monospace body/code text (commands, ids, paths, code blocks): Azeret Mono\n // at the h6 responsive scale, no transform, neutral letter-spacing (unlike\n // text-h5's uppercase -0.02em label styling).\n '.text-code': {\n fontFamily: 'var(--font-family-heading)',\n fontWeight: 'var(--font-weight-medium)',\n fontSize: 'var(--font-size-h6-caption)',\n lineHeight: 'var(--font-line-space-h6-caption)',\n },\n // BRAND WORDMARKS ONLY — the platform name beside a logo in a header or\n // footer. Azeret Mono bold at the h5-caption scale, which is exactly what\n // every hand-written wordmark override spelled before this composite.\n '.text-wordmark': {\n fontFamily: 'var(--font-family-heading)',\n fontWeight: 'var(--font-weight-bold)',\n fontSize: 'var(--font-size-h5-caption)',\n lineHeight: 'var(--font-line-space-h5-caption)',\n textTransform: 'none',\n letterSpacing: '0',\n },\n // Badge / stamp SCALE — size only, deliberately NOT a composite: it\n // carries no family, weight or casing, so it composes with whatever the\n // badge already sets (h5 tokens on StatusBadge, DM Sans on Badge). Use it\n // for badges and chips instead of a raw `text-[10px]`; it is a component\n // token, not a step in the h1-h6 scale.\n '.text-badge': {\n fontSize: 'var(--font-size-badge)',\n lineHeight: 'var(--font-line-space-badge)',\n },\n });\n});\n\n/**\n * Make Tailwind opacity modifiers (`bg-ods-error/10`, `hover:bg-ods-accent/90`, …)\n * actually work on var()-based ODS tokens. Without `<alpha-value>` in the color\n * definition Tailwind v3 silently generates NOTHING for `ods-*\\/N` classes — the\n * element loses that declaration entirely. `color-mix` keeps un-suffixed classes\n * visually identical (a 100% mix is the color itself) while letting the modifier\n * scale the alpha.\n */\nconst withAlphaValue = (color: string) => `color-mix(in srgb, ${color} calc(<alpha-value> * 100%), transparent)`;\n\ntype ColorTree = { [key: string]: string | ColorTree };\nconst withAlphaSupport = (tree: ColorTree): ColorTree =>\n Object.fromEntries(\n Object.entries(tree).map(([key, value]) => [\n key,\n typeof value === 'string' ? withAlphaValue(value) : withAlphaSupport(value),\n ]),\n );\n\nconst config: Config = {\n content: ['./src/**/*.{js,ts,jsx,tsx}'],\n safelist: [\n // Dynamically generated classes for table hide/show functionality\n 'hidden',\n 'md:hidden',\n 'lg:hidden',\n 'md:flex',\n 'lg:flex',\n ],\n theme: {\n container: {\n center: true,\n padding: '2rem',\n screens: {\n '2xl': '1400px',\n },\n },\n extend: {\n colors: {\n // Shadcn/ui base colors (keep for compatibility)\n border: 'hsl(var(--border))',\n input: 'hsl(var(--input))',\n ring: 'hsl(var(--ring))',\n background: 'hsl(var(--background))',\n foreground: 'hsl(var(--foreground))',\n primary: {\n DEFAULT: 'hsl(var(--primary))',\n foreground: 'hsl(var(--primary-foreground))',\n },\n secondary: {\n DEFAULT: 'hsl(var(--secondary))',\n foreground: 'hsl(var(--secondary-foreground))',\n },\n destructive: {\n DEFAULT: 'hsl(var(--destructive))',\n foreground: 'hsl(var(--destructive-foreground))',\n },\n muted: {\n DEFAULT: 'hsl(var(--muted))',\n foreground: 'hsl(var(--muted-foreground))',\n },\n accent: {\n DEFAULT: 'hsl(var(--accent))',\n foreground: 'hsl(var(--accent-foreground))',\n },\n popover: {\n DEFAULT: 'hsl(var(--popover))',\n foreground: 'hsl(var(--popover-foreground))',\n },\n card: {\n DEFAULT: 'hsl(var(--card))',\n foreground: 'hsl(var(--card-foreground))',\n },\n\n // =================================================\n // ODS (Open Design System) COLORS\n // =================================================\n // Single nested structure: generates bg-ods-*, text-ods-*, border-ods-* utilities\n ods: withAlphaSupport({\n // Backgrounds\n bg: 'var(--color-bg)',\n card: 'var(--color-bg-card)',\n overlay: 'var(--color-bg-overlay)',\n skeleton: 'var(--color-bg-skeleton)',\n 'bg-hover': 'var(--color-bg-hover)',\n 'bg-active': 'var(--color-bg-active)',\n 'bg-surface': 'var(--color-bg-surface)',\n 'bg-surface-hover': 'var(--color-bg-surface-hover)',\n 'bg-surface-active': 'var(--color-bg-surface-active)',\n // Light surface on a dark UI — the semantic token existed with no utility.\n 'bg-inverted': 'var(--color-bg-inverted)',\n 'card-hover': 'var(--color-bg-hover)',\n divider: 'var(--color-divider)',\n\n // Borders\n border: {\n DEFAULT: 'var(--color-border-default)',\n hover: 'var(--color-border-hover)',\n active: 'var(--color-border-active)',\n focus: 'var(--color-border-focus)',\n },\n\n // Text\n text: {\n primary: 'var(--color-text-primary)',\n secondary: 'var(--color-text-secondary)',\n tertiary: 'var(--color-text-tertiary)',\n muted: 'var(--color-text-muted)',\n subtle: 'var(--color-text-subtle)',\n disabled: 'var(--color-text-disabled)',\n 'on-accent': 'var(--color-text-on-accent)',\n 'on-dark': 'var(--color-text-on-dark)',\n },\n\n // Accent\n accent: {\n DEFAULT: 'var(--color-accent-primary)',\n hover: 'var(--color-accent-hover)',\n active: 'var(--color-accent-active)',\n secondary: 'var(--color-accent-secondary)',\n 'secondary-hover': 'var(--color-accent-secondary-hover)',\n 'secondary-active': 'var(--color-accent-secondary-active)',\n focus: 'var(--color-accent-focus)',\n disabled: 'var(--color-accent-disabled)',\n },\n\n // Status\n success: {\n DEFAULT: 'var(--color-success)',\n hover: 'var(--color-success-hover)',\n active: 'var(--color-success-active)',\n secondary: 'var(--color-success-secondary)',\n 'secondary-hover': 'var(--color-success-secondary-hover)',\n 'secondary-active': 'var(--color-success-secondary-active)',\n },\n error: {\n DEFAULT: 'var(--color-error)',\n hover: 'var(--color-error-hover)',\n active: 'var(--color-error-active)',\n secondary: 'var(--color-error-secondary)',\n 'secondary-hover': 'var(--color-error-secondary-hover)',\n 'secondary-active': 'var(--color-error-secondary-active)',\n },\n warning: {\n DEFAULT: 'var(--color-warning)',\n hover: 'var(--color-warning-hover)',\n active: 'var(--color-warning-active)',\n secondary: 'var(--color-warning-secondary)',\n 'secondary-hover': 'var(--color-warning-secondary-hover)',\n 'secondary-active': 'var(--color-warning-secondary-active)',\n },\n info: {\n DEFAULT: 'var(--color-info)',\n hover: 'var(--color-info-hover)',\n active: 'var(--color-info-active)',\n },\n\n // Interactive states\n disabled: 'var(--color-disabled)',\n focus: 'var(--color-focus-ring)',\n 'focus-visible': 'var(--color-focus-visible)',\n\n // Links\n link: {\n DEFAULT: 'var(--color-link)',\n hover: 'var(--color-link-hover)',\n visited: 'var(--color-link-visited)',\n },\n\n // Brand colors (theme-independent)\n flamingo: {\n pink: {\n DEFAULT: 'var(--ods-flamingo-pink-base)',\n hover: 'var(--ods-flamingo-pink-hover)',\n secondary: 'var(--ods-flamingo-pink-secondary)',\n 'secondary-hover': 'var(--ods-flamingo-pink-secondary-hover)',\n 'secondary-active': 'var(--ods-flamingo-pink-secondary-action)',\n },\n cyan: {\n DEFAULT: 'var(--ods-flamingo-cyan-base)',\n hover: 'var(--ods-flamingo-cyan-hover)',\n secondary: 'var(--ods-flamingo-cyan-secondary)',\n 'secondary-hover': 'var(--ods-flamingo-cyan-secondary-hover)',\n 'secondary-active': 'var(--ods-flamingo-cyan-secondary-action)',\n },\n },\n 'open-yellow': {\n DEFAULT: 'var(--ods-open-yellow-base)',\n hover: 'var(--ods-open-yellow-hover)',\n action: 'var(--ods-open-yellow-action)',\n secondary: 'var(--ods-open-yellow-secondary)',\n 'secondary-hover': 'var(--ods-open-yellow-secondary-hover)',\n 'secondary-action': 'var(--ods-open-yellow-secondary-action)',\n light: 'var(--ods-open-yellow-light)',\n 'light-hover': 'var(--ods-open-yellow-light-hover)',\n 'light-action': 'var(--ods-open-yellow-light-action)',\n },\n\n // Attention tokens (ods-colors.css). Components reference these BY\n // NAME (error-state.tsx: `border-ods-attention-red-error` etc.) —\n // without these mappings Tailwind silently generates NOTHING for\n // the class and the component renders colorless in every consumer.\n attention: {\n 'red-error': 'var(--ods-attention-red-error)',\n 'red-error-hover': 'var(--ods-attention-red-error-hover)',\n 'red-error-action': 'var(--ods-attention-red-error-action)',\n 'red-error-secondary': 'var(--ods-attention-red-error-secondary)',\n 'red-error-secondary-hover': 'var(--ods-attention-red-error-secondary-hover)',\n 'red-error-secondary-action': 'var(--ods-attention-red-error-secondary-action)',\n 'yellow-warning': 'var(--ods-attention-yellow-warning)',\n 'yellow-warning-hover': 'var(--ods-attention-yellow-warning-hover)',\n 'yellow-warning-action': 'var(--ods-attention-yellow-warning-action)',\n 'yellow-warning-secondary': 'var(--ods-attention-yellow-warning-secondary)',\n 'yellow-warning-secondary-hover': 'var(--ods-attention-yellow-warning-secondary-hover)',\n 'yellow-warning-secondary-action': 'var(--ods-attention-yellow-warning-secondary-action)',\n 'green-success': 'var(--ods-attention-green-success)',\n 'green-success-hover': 'var(--ods-attention-green-success-hover)',\n 'green-success-action': 'var(--ods-attention-green-success-action)',\n 'green-success-secondary': 'var(--ods-attention-green-success-secondary)',\n 'green-success-secondary-hover': 'var(--ods-attention-green-success-secondary-hover)',\n 'green-success-secondary-action': 'var(--ods-attention-green-success-secondary-action)',\n },\n\n // Adaptive platform color\n current: 'var(--ods-current)',\n }),\n },\n // Custom breakpoints (aligned with ODS responsive tokens from Figma)\n screens: {\n md: '800px', // Tablet: 50rem\n lg: '1280px', // Desktop: 80rem\n xl: '1440px', // Large desktop: 90rem\n },\n\n borderRadius: {\n lg: 'var(--radius)', // 8px\n md: 'calc(var(--radius) - 2px)', // 6px\n sm: 'calc(var(--radius) - 4px)', // 4px\n xs: 'calc(var(--radius) - 6px)', // 2px\n },\n\n maxWidth: {\n 'ods-content-narrow': '600px',\n },\n\n fontFamily: {\n sans: ['var(--font-family-body)'],\n mono: ['var(--font-family-heading)'],\n body: ['var(--font-family-body)'],\n heading: ['var(--font-family-heading)'],\n },\n\n // =================================================\n // TYPOGRAPHY\n // =================================================\n fontSize: {\n // Responsive heading sizes (from ods-responsive-tokens.css)\n 'heading-1': ['var(--font-size-h1-title)', { lineHeight: 'var(--font-line-space-h1-main-title)' }],\n 'heading-2': ['var(--font-size-h2-sub-title)', { lineHeight: 'var(--font-line-space-h2-sub-title)' }],\n 'heading-3': ['var(--font-size-h3-body)', { lineHeight: 'var(--font-line-space-h3-body)' }],\n 'heading-4': ['var(--font-size-h4-body)', { lineHeight: 'var(--font-line-space-h4-body)' }],\n 'heading-5': ['var(--font-size-h5-caption)', { lineHeight: 'var(--font-line-space-h5-caption)' }],\n 'heading-6': ['var(--font-size-h6-caption)', { lineHeight: 'var(--font-line-space-h6-caption)' }],\n },\n\n // =================================================\n // SHADOWS\n // =================================================\n boxShadow: {\n card: 'var(--shadow-card)',\n 'card-hover': 'var(--shadow-card-hover)',\n modal: 'var(--shadow-modal)',\n dropdown: 'var(--shadow-dropdown)',\n tooltip: 'var(--shadow-tooltip)',\n focus: 'var(--shadow-focus)',\n accent: 'var(--shadow-accent)',\n 'accent-lg': 'var(--shadow-accent-lg)',\n },\n\n // =================================================\n // TRANSITIONS\n // =================================================\n transitionDuration: {\n fast: 'var(--duration-fast)',\n normal: 'var(--duration-normal)',\n slow: 'var(--duration-slow)',\n slower: 'var(--duration-slower)',\n },\n transitionTimingFunction: {\n bounce: 'var(--ease-bounce)',\n elastic: 'var(--ease-elastic)',\n },\n\n // =================================================\n // Z-INDEX\n // =================================================\n zIndex: {\n dropdown: 'var(--z-dropdown)',\n sticky: 'var(--z-sticky)',\n fixed: 'var(--z-fixed)',\n 'modal-backdrop': 'var(--z-modal-backdrop)',\n modal: 'var(--z-modal)',\n popover: 'var(--z-popover)',\n tooltip: 'var(--z-tooltip)',\n notification: 'var(--z-notification)',\n debug: 'var(--z-debug)',\n },\n\n // =================================================\n // ANIMATIONS\n // =================================================\n keyframes: {\n 'accordion-down': {\n from: { height: '0' },\n to: { height: 'var(--radix-accordion-content-height)' },\n },\n 'accordion-up': {\n from: { height: 'var(--radix-accordion-content-height)' },\n to: { height: '0' },\n },\n 'fade-in': {\n from: { opacity: '0' },\n to: { opacity: '1' },\n },\n // Chat streaming affordances. Defined here, not in an inline <style>\n // the component renders: those tags were rewritten on every render,\n // i.e. every streamed chunk, and each rewrite made WebKit restyle and\n // relayout the whole document.\n 'cursor-blink': {\n '50%': { opacity: '0' },\n },\n 'dot-pulse': {\n '0%, 80%, 100%': { transform: 'scale(1)', opacity: '0.7' },\n '40%': { transform: 'scale(1.5)', opacity: '1' },\n },\n },\n animation: {\n 'accordion-down': 'accordion-down 0.2s ease-out',\n 'accordion-up': 'accordion-up 0.2s ease-out',\n 'fade-in': 'fade-in 0.3s ease-out',\n 'cursor-blink': 'cursor-blink 1s steps(1) infinite',\n 'dot-pulse': 'dot-pulse 1.4s ease-in-out infinite',\n },\n },\n },\n plugins: [tailwindcssAnimate, odsTypographyPlugin, containerQueries],\n};\n\nexport default config;\n"]}
|
package/eslint-config/README.md
CHANGED
|
@@ -71,6 +71,19 @@ Two rules are deliberately **absent** from the base and belong in a repo's local
|
|
|
71
71
|
- `@typescript-eslint/naming-convention` — Biome's equivalent produced 1 715 findings in
|
|
72
72
|
multi-platform-hub alone and was never enforced.
|
|
73
73
|
|
|
74
|
+
## WebKit performance rules
|
|
75
|
+
|
|
76
|
+
`base` carries two rules from `./webview-performance.js` for patterns that are cheap in Chrome and
|
|
77
|
+
expensive in WebKit (Safari, and the WKWebView the desktop and iOS shells run in). They are not
|
|
78
|
+
applied to tests or stories.
|
|
79
|
+
|
|
80
|
+
- `flamingo/no-inline-style-element`: no `<style>` element in JSX. React rewrites its text on
|
|
81
|
+
re-render, and each rewrite makes WebKit restyle and relayout the whole document.
|
|
82
|
+
- `flamingo/no-whole-store-subscription`: a `use…Store` hook called with no selector, or with
|
|
83
|
+
`s => s`, re-renders on every write to the store. The rule goes by the name, so a `use…Store`
|
|
84
|
+
hook that is not a zustand subscription (a context getter, say) is a false positive: carry it in
|
|
85
|
+
a named `files:` block.
|
|
86
|
+
|
|
74
87
|
## Why not ESLint 10
|
|
75
88
|
|
|
76
89
|
ESLint 10 is out, and `eslint@9` is marked deprecated on npm. It still does not work here:
|
package/eslint-config/base.js
CHANGED
|
@@ -6,6 +6,7 @@ import globals from 'globals';
|
|
|
6
6
|
import tseslint from 'typescript-eslint';
|
|
7
7
|
|
|
8
8
|
import { ignores } from './ignores.js';
|
|
9
|
+
import { webviewPerformancePlugin } from './webview-performance.js';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Promote every `warn` in a third-party config to `error`.
|
|
@@ -291,6 +292,20 @@ export const base = [
|
|
|
291
292
|
languageOptions: { parserOptions: { jsxPragma: null } },
|
|
292
293
|
},
|
|
293
294
|
|
|
295
|
+
// Patterns measured to be cheap in Chrome and expensive in WebKit (Safari and
|
|
296
|
+
// the desktop/iOS shells' WKWebView) — see ./webview-performance.js. Tests and
|
|
297
|
+
// stories are not render paths users sit on.
|
|
298
|
+
{
|
|
299
|
+
name: 'flamingo/base/webview-performance',
|
|
300
|
+
files: ['**/*.{js,mjs,jsx,ts,mts,tsx}'],
|
|
301
|
+
ignores: ['**/*.{test,spec}.{js,mjs,jsx,ts,mts,tsx}', '**/__tests__/**', '**/*.stories.{js,jsx,ts,tsx,mdx}'],
|
|
302
|
+
plugins: { flamingo: webviewPerformancePlugin },
|
|
303
|
+
rules: {
|
|
304
|
+
'flamingo/no-inline-style-element': 'error',
|
|
305
|
+
'flamingo/no-whole-store-subscription': 'error',
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
|
|
294
309
|
// Type declaration files describe other people's shapes; most of the base
|
|
295
310
|
// rules are noise there.
|
|
296
311
|
{
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rules for render-path patterns that cost little in Chrome and a lot in
|
|
3
|
+
* WebKit (Safari, and the WKWebView the desktop and iOS shells run in). Each
|
|
4
|
+
* one was measured on the Mingo chat in 2026-10 (openframe-oss-lib#2513); the
|
|
5
|
+
* numbers are in the rule messages so a finding explains itself.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/** A `<style>` element in JSX: its text is replaced whenever React re-renders
|
|
9
|
+
* it, and every replacement makes WebKit restyle and relayout the document. */
|
|
10
|
+
const noInlineStyleElement = {
|
|
11
|
+
meta: {
|
|
12
|
+
type: 'problem',
|
|
13
|
+
docs: { description: 'Disallow <style> elements rendered from components' },
|
|
14
|
+
schema: [],
|
|
15
|
+
messages: {
|
|
16
|
+
inlineStyle:
|
|
17
|
+
'Do not render a <style> element: React rewrites it on re-render and each rewrite makes WebKit ' +
|
|
18
|
+
'restyle and relayout the whole document (Mingo streaming: 15ms -> 1ms per chunk once removed). ' +
|
|
19
|
+
'Put keyframes in the Tailwind preset and other CSS in a stylesheet.',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
create(context) {
|
|
23
|
+
return {
|
|
24
|
+
JSXOpeningElement(node) {
|
|
25
|
+
if (node.name.type === 'JSXIdentifier' && node.name.name === 'style') {
|
|
26
|
+
context.report({ node, messageId: 'inlineStyle' });
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/** zustand-style store hooks are `use<Name>Store`. */
|
|
34
|
+
const STORE_HOOK = /^use[A-Z]\w*Store$/;
|
|
35
|
+
|
|
36
|
+
/** `useXStore()` / `useXStore(s => s)`: the component re-renders on every
|
|
37
|
+
* write to any field of the store, not just the ones it reads. */
|
|
38
|
+
const noWholeStoreSubscription = {
|
|
39
|
+
meta: {
|
|
40
|
+
type: 'problem',
|
|
41
|
+
docs: { description: 'Require a selector when subscribing to a store hook' },
|
|
42
|
+
schema: [],
|
|
43
|
+
messages: {
|
|
44
|
+
wholeStore:
|
|
45
|
+
'{{name}} without a field selector subscribes to the whole store, so every write to any field re-renders this component ' +
|
|
46
|
+
'(Mingo chat: 4 renders per streamed frame -> 1 with selectors). Select the fields you read: ' +
|
|
47
|
+
'{{name}}(s => s.field), or useShallow(s => ({ ... })) for several.',
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
create(context) {
|
|
51
|
+
return {
|
|
52
|
+
CallExpression(node) {
|
|
53
|
+
if (node.callee.type !== 'Identifier' || !STORE_HOOK.test(node.callee.name)) return;
|
|
54
|
+
const [selector] = node.arguments;
|
|
55
|
+
const identity =
|
|
56
|
+
selector?.type === 'ArrowFunctionExpression' &&
|
|
57
|
+
selector.params.length === 1 &&
|
|
58
|
+
selector.params[0].type === 'Identifier' &&
|
|
59
|
+
selector.body.type === 'Identifier' &&
|
|
60
|
+
selector.body.name === selector.params[0].name;
|
|
61
|
+
if (!selector || identity) {
|
|
62
|
+
context.report({ node, messageId: 'wholeStore', data: { name: node.callee.name } });
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export const webviewPerformancePlugin = {
|
|
70
|
+
meta: { name: 'flamingo-webview-performance' },
|
|
71
|
+
rules: {
|
|
72
|
+
'no-inline-style-element': noInlineStyleElement,
|
|
73
|
+
'no-whole-store-subscription': noWholeStoreSubscription,
|
|
74
|
+
},
|
|
75
|
+
};
|
package/package.json
CHANGED