@fluixi-ui/skin-material 0.2.1-alpha.1 → 0.3.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/material.css +687 -30
- package/material.css.js +8 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ Import the stylesheet after the tokens + preset, then activate with
|
|
|
10
10
|
`data-ui="material"` on a root (or any subtree):
|
|
11
11
|
|
|
12
12
|
```ts
|
|
13
|
-
import '@fluixi-ui/
|
|
13
|
+
import '@fluixi-ui/styles/all.css';
|
|
14
14
|
import '@fluixi-ui/skin-material/styles.css';
|
|
15
15
|
|
|
16
16
|
document.documentElement.dataset.ui = 'material';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.d.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/modules/index.d.ts","../src/ripple.ts"],"fileIdsList":[[60],[61]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"0d9eba127f45527253640d90a7d4a726b704f73691a93b973d0d33f48dda7ae6","signature":"7c757d2e0b0b1a3d2ddb39a712eb3977f7254339a09517a89855feb72a69c854","impliedFormat":99}],"root":[62],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":false,"importHelpers":true,"module":199,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUnusedLocals":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./tsconfig.lib.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[61,1],[62,2]],"latestChangedDtsFile":"./ripple.d.ts","version":"5.8.3"}
|
|
1
|
+
{"version":"7.0.2","root":[62],"packageJsons":["../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/modules/package.json","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/package.json","../package.json"],"fileNames":["lib.es5.d.ts","lib.es2015.d.ts","lib.es2016.d.ts","lib.es2017.d.ts","lib.es2018.d.ts","lib.es2019.d.ts","lib.es2020.d.ts","lib.es2021.d.ts","lib.es2022.d.ts","lib.dom.d.ts","lib.dom.iterable.d.ts","lib.es2015.core.d.ts","lib.es2015.collection.d.ts","lib.es2015.generator.d.ts","lib.es2015.iterable.d.ts","lib.es2015.promise.d.ts","lib.es2015.proxy.d.ts","lib.es2015.reflect.d.ts","lib.es2015.symbol.d.ts","lib.es2015.symbol.wellknown.d.ts","lib.es2016.array.include.d.ts","lib.es2016.intl.d.ts","lib.es2017.arraybuffer.d.ts","lib.es2017.date.d.ts","lib.es2017.object.d.ts","lib.es2017.sharedmemory.d.ts","lib.es2017.string.d.ts","lib.es2017.intl.d.ts","lib.es2017.typedarrays.d.ts","lib.es2018.asyncgenerator.d.ts","lib.es2018.asynciterable.d.ts","lib.es2018.intl.d.ts","lib.es2018.promise.d.ts","lib.es2018.regexp.d.ts","lib.es2019.array.d.ts","lib.es2019.object.d.ts","lib.es2019.string.d.ts","lib.es2019.symbol.d.ts","lib.es2019.intl.d.ts","lib.es2020.bigint.d.ts","lib.es2020.date.d.ts","lib.es2020.promise.d.ts","lib.es2020.sharedmemory.d.ts","lib.es2020.string.d.ts","lib.es2020.symbol.wellknown.d.ts","lib.es2020.intl.d.ts","lib.es2020.number.d.ts","lib.es2021.promise.d.ts","lib.es2021.string.d.ts","lib.es2021.weakref.d.ts","lib.es2021.intl.d.ts","lib.es2022.array.d.ts","lib.es2022.error.d.ts","lib.es2022.intl.d.ts","lib.es2022.object.d.ts","lib.es2022.string.d.ts","lib.es2022.regexp.d.ts","lib.decorators.d.ts","lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.d.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/modules/index.d.ts","../src/ripple.ts"],"fileInfos":[{"version":"16934abaab7026ac114da441aabea1a0","affectsGlobalScope":true,"impliedNodeFormat":1},"d4306fb2e47f74835e8674ffac07d76f","e437c5c1302869326c3bb93da85bbbcf","e4324975a566567b21d350615f1fc6ac","333b1b9a2a9ac3b8497dba5c63b5ba50","6cffacd662b6eb5fa7a36aa2ea366bfa","b4c34f9c23304dbef2d23698637ed638","e5cb86a5fc491796ecd1d2dd348d208f","feb6c6fb19cdb246a5d8acb36a6901c7",{"version":"aae8996e8b5684814785a42cbbefcd79","affectsGlobalScope":true,"impliedNodeFormat":1},"abad6dd56cc8caf095c165df8124d237",{"version":"926204c28cd3d073865348473ae28d2e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f25e42c801b2cb3cf2b39792006a9beb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6344b55f26a4e81d9608777dbfb877dd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3c0ed28e53d3695b363e256ec1c023fd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4c2761daba7f17141c25baa0821ac5da","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b87656acabd63e69379ff6ffcfe52fc7","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"597469522da047a5af5222cc6989f405","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1708ea4d34dc37fadadc63ca01127e80","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"55d97a8c6fbf34a30450a7b1e5f7a298","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0ee05eb59426d33e374226d8dcfa708b","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e347c14030993906efcfbb88915b6a05","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b0231263857c9b6a03641acdc9280ceb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3b15c4a83b598cacb4067676e6f0abed","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b417d97b7934cef63b1889abec0bbfbf","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"09a6cf4032ebba60ce22a501e663f881","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2b056277dd138e8f5650fc04e20eaa8d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e22cc07e3f3cc242ba52fa3f8ea1fc58","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2c45da767a1bfbb220848df1bc4029e4","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b44c3e0fbaf2130cdcf6ac38b120ffa1","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b612fb5cf8e5d964b92063a75207632a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"02705151a5e1551b9162a9ed8ab763f7","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"41025e398be9215d32e4337335da8f0b","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"52684c2b1f353a5538e4f275182a54cd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6dedb6a4f90d1df3a6fbe5693e44886c","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ca3f36fe3562c07e0f0d71c2bebd3f6d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"409974d6129befbb8226ddd1c6558568","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4d9cfde2a1ae1b4925f1f9bc10848e5d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7e1daecc66dd564144e3bb1a0266b5fd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a8e1d9bb35fd0637f2f9fd2b2a54f2ec","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4f168501772a6543182765bfd5f2fbfe","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a19c80aad1b2162103496f5ba293a732","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b69afa63cd5d059851c78adb2856ee09","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ae2fc5d954e9b0f5feee3d481b953c27","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1cfd3091a071d8b6feec15277643bafe","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1da2c1f258970fd3cc91184f69e91a9d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a0d87491913d843139e0c993650a3235","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4ef72aa378127e7b7abba915b0110b1e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3ec74c6a7d4463f0254db3a74cf75646","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"84c2bdfa470d075526cce6322d81b0b6","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0b3844c2b8c73e4e1ab91431411cad11","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4fc71cf4a15b8d99675a31df77f26e07","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d1b49564ddaeca3df5b6dbae925d2242","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6a25be566d60ccfc2d6e8b7bfdeefa83","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8a20e27646985dfd58c57ca6566553dd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9969f02ad3cdcbf4f709405cda44167f","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9c9be4792a7a4f42c15ae7360bf28779","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f64453cbf9671f28158677fa5c43967a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"33f317af5428801f944a478d2c1e38e5","affectsGlobalScope":true,"impliedNodeFormat":1},"68565f078f6cbaa18bac7ac1aee706a4",{"version":"6df9988546b1b8e15cb137c4ed46c629","impliedNodeFormat":99},{"version":"f345248cecf5c3fd86cfdae2c36e22ec","signature":"afb3872baff7c967f924f4320cf948bc","impliedNodeFormat":99}],"fileIdsList":[[60]],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"declarationMap":true,"importHelpers":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noEmitOnError":true,"noUnusedLocals":true,"noImplicitOverride":true,"noUncheckedSideEffectImports":false,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./tsconfig.lib.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[61,1]],"latestChangedDtsFile":"./ripple.d.ts"}
|
package/material.css
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* geometry, filled text fields, emphasized motion, Roboto. (True click-origin
|
|
11
11
|
* ripple needs JS; the state layer stands in for it here.)
|
|
12
12
|
*/
|
|
13
|
-
@layer flx.tokens, flx.components, flx.skin;
|
|
13
|
+
@layer flx.reset, flx.base, flx.tokens, flx.components, flx.skin, flx.fx;
|
|
14
14
|
|
|
15
15
|
/* Self-hosted Roboto (variable, latin subset) — no CDN / privacy dependency. */
|
|
16
16
|
@font-face {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
/* ---- Button: pill shape, state layer, filled/tonal/outlined/text ---------- */
|
|
43
|
-
[data-ui='material'] :where([data-variant]) {
|
|
43
|
+
[data-ui='material'] :where([data-variant]:not([data-badge])) {
|
|
44
44
|
position: relative;
|
|
45
45
|
overflow: hidden;
|
|
46
46
|
border-radius: 9999px;
|
|
@@ -56,44 +56,41 @@
|
|
|
56
56
|
/* The Material "state layer": a currentColor overlay that fades in on interaction.
|
|
57
57
|
On a filled button currentColor is the on-primary ink (white) → a subtle
|
|
58
58
|
lightening; on outlined/text/tonal it's the primary colour. */
|
|
59
|
-
[data-ui='material'] :where([data-variant])::before {
|
|
59
|
+
[data-ui='material'] :where([data-variant]:not([data-badge]))::before {
|
|
60
60
|
content: '';
|
|
61
61
|
position: absolute;
|
|
62
62
|
inset: 0;
|
|
63
|
+
/* Follow the button's own shape so the hover layer is rounded even where the
|
|
64
|
+
button isn't clipping (e.g. a glow button, which overflows). */
|
|
65
|
+
border-radius: inherit;
|
|
63
66
|
background: currentColor;
|
|
64
67
|
opacity: 0;
|
|
65
68
|
pointer-events: none;
|
|
66
69
|
transition: opacity var(--flx-ui-duration-fast) var(--flx-ui-ease-standard);
|
|
67
70
|
}
|
|
68
|
-
[data-ui='material'] :where([data-variant]:hover)::before { opacity: 0.08; }
|
|
69
|
-
[data-ui='material'] :where([data-variant]:focus-visible)::before { opacity: 0.12; }
|
|
70
|
-
[data-ui='material'] :where([data-variant]:active)::before { opacity: 0.16; }
|
|
71
|
-
[data-ui='material'] :where([data-variant]:focus-visible) { box-shadow: none; outline: none; }
|
|
72
|
-
[data-ui='material'] :where([data-variant][disabled], [data-variant]:disabled) {
|
|
71
|
+
[data-ui='material'] :where([data-variant]:not([data-badge]):hover)::before { opacity: 0.08; }
|
|
72
|
+
[data-ui='material'] :where([data-variant]:not([data-badge]):focus-visible)::before { opacity: 0.12; }
|
|
73
|
+
[data-ui='material'] :where([data-variant]:not([data-badge]):active)::before { opacity: 0.16; }
|
|
74
|
+
[data-ui='material'] :where([data-variant]:not([data-badge]):focus-visible) { box-shadow: none; outline: none; }
|
|
75
|
+
[data-ui='material'] :where([data-variant]:not([data-badge])[disabled], [data-variant]:not([data-badge]):disabled) {
|
|
73
76
|
box-shadow: none;
|
|
74
77
|
opacity: 0.38;
|
|
75
78
|
}
|
|
76
79
|
|
|
77
80
|
/* Filled (solid) = the classic contained button: rests on elevation, lifts
|
|
78
81
|
further on hover. Elevation is per-variant — outlined/text/tonal stay flat. */
|
|
79
|
-
[data-ui='material'] :where([data-variant='solid']) { box-shadow: var(--flx-ui-shadow-sm); }
|
|
80
|
-
[data-ui='material'] :where([data-variant='solid']:hover) { box-shadow: var(--flx-ui-shadow-md); }
|
|
81
|
-
[data-ui='material'] :where([data-variant='solid']:active) { box-shadow: var(--flx-ui-shadow-sm); }
|
|
82
|
+
[data-ui='material'] :where([data-variant='solid']:not([data-badge])) { box-shadow: var(--flx-ui-shadow-sm); }
|
|
83
|
+
[data-ui='material'] :where([data-variant='solid']:not([data-badge]):hover) { box-shadow: var(--flx-ui-shadow-md); }
|
|
84
|
+
[data-ui='material'] :where([data-variant='solid']:not([data-badge]):active) { box-shadow: var(--flx-ui-shadow-sm); }
|
|
82
85
|
/* Tonal (soft): secondary-container feel. */
|
|
83
|
-
[data-ui='material'] :where([data-variant='soft']) { background: var(--flx-ui-color-primary-subtle); color: var(--flx-ui-color-primary-active); }
|
|
86
|
+
[data-ui='material'] :where([data-variant='soft']:not([data-badge])) { background: var(--flx-ui-color-primary-subtle); color: var(--flx-ui-color-primary-active); }
|
|
84
87
|
/* Outlined: 1px hairline, no fill. */
|
|
85
|
-
[data-ui='material'] :where([data-variant='outline']) { border: 1px solid var(--flx-ui-color-border-strong); }
|
|
88
|
+
[data-ui='material'] :where([data-variant='outline']:not([data-badge])) { border: 1px solid var(--flx-ui-color-border-strong); }
|
|
89
|
+
[data-ui='material'] :where([data-variant='outline']:not([data-badge]):hover:not([data-disabled])) { border-color: var(--flx-ui-color-primary-hover); }
|
|
86
90
|
/* Text: tighter padding, no border. */
|
|
87
|
-
[data-ui='material'] :where([data-variant='ghost']) { padding: 0 12px; }
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
not buttons): restore size, keep the pill, drop the state layer. */
|
|
91
|
-
[data-ui='material'] :where(.flx-ui-badge[data-variant]) {
|
|
92
|
-
height: auto;
|
|
93
|
-
padding: 2px 10px;
|
|
94
|
-
box-shadow: none;
|
|
95
|
-
}
|
|
96
|
-
[data-ui='material'] :where(.flx-ui-badge[data-variant])::before { content: none; }
|
|
91
|
+
[data-ui='material'] :where([data-variant='ghost']:not([data-badge])) { padding: 0 12px; }
|
|
92
|
+
/* Badges carry [data-variant] too, but every button rule above excludes
|
|
93
|
+
[data-badge], so a badge is never treated as a button — no guard needed. */
|
|
97
94
|
|
|
98
95
|
/* ---- Switch: M3 geometry (52×32 track, growing thumb) --------------------- */
|
|
99
96
|
[data-ui='material'] :where([role='switch']) {
|
|
@@ -129,9 +126,26 @@
|
|
|
129
126
|
border-width: 2px;
|
|
130
127
|
border-radius: 2px;
|
|
131
128
|
}
|
|
129
|
+
/* The check (rotated border) and indeterminate bar are flex items; the tighter
|
|
130
|
+
2px-border box lets flex shrink them to a sliver on the main axis. Pin them. */
|
|
131
|
+
[data-ui='material'] :where([role='checkbox'][data-state='checked'])::after,
|
|
132
|
+
[data-ui='material'] :where([role='checkbox'][data-state='indeterminate'])::after {
|
|
133
|
+
flex: none;
|
|
134
|
+
}
|
|
135
|
+
[data-ui='material'] :where([role='checkbox'][data-state='checked'])::after {
|
|
136
|
+
width: 4px;
|
|
137
|
+
height: 8px;
|
|
138
|
+
margin-top: -3px;
|
|
139
|
+
}
|
|
140
|
+
/* Multi-select listbox/select indicator box → match the material checkbox. */
|
|
141
|
+
[data-ui='material'] :where([data-select-item-indicator]) {
|
|
142
|
+
box-sizing: border-box;
|
|
143
|
+
border-width: 2px;
|
|
144
|
+
border-radius: 2px;
|
|
145
|
+
}
|
|
132
146
|
|
|
133
147
|
/* ---- Slider: M3 filled thumb -------------------------------------------- */
|
|
134
|
-
[data-ui='material'] :where([role='slider']) {
|
|
148
|
+
[data-ui='material'] :where([data-slider] [role='slider']) {
|
|
135
149
|
width: 20px;
|
|
136
150
|
height: 20px;
|
|
137
151
|
background: var(--flx-ui-color-primary);
|
|
@@ -146,18 +160,48 @@
|
|
|
146
160
|
border-top-right-radius: 3px;
|
|
147
161
|
}
|
|
148
162
|
|
|
149
|
-
/* ----
|
|
150
|
-
|
|
163
|
+
/* ---- Text field / select / combobox appearance --------------------------
|
|
164
|
+
Baseline (no data-field-variant) and the explicit `filled` variant → M3
|
|
165
|
+
filled underline; `outlined` → M3 outlined box. 4px M3 radius (the tokens'
|
|
166
|
+
radius-md is 12px here). */
|
|
167
|
+
[data-ui='material'] :where(
|
|
168
|
+
[data-input]:not([data-field-variant]),
|
|
169
|
+
[data-combobox-control]:not([data-field-variant]),
|
|
170
|
+
button[role='combobox']:not([data-field-variant]),
|
|
171
|
+
[data-field-variant='filled']) {
|
|
151
172
|
background: var(--flx-ui-color-bg-muted);
|
|
152
|
-
border:
|
|
173
|
+
border: 1px solid transparent;
|
|
153
174
|
border-bottom: 1px solid var(--flx-ui-color-border-strong);
|
|
154
175
|
border-radius: 4px 4px 0 0;
|
|
155
176
|
}
|
|
156
|
-
[data-ui='material'] :where(
|
|
177
|
+
[data-ui='material'] :where(
|
|
178
|
+
[data-input]:not([data-field-variant]):focus,
|
|
179
|
+
[data-combobox-control]:not([data-field-variant]):focus-within,
|
|
180
|
+
button[role='combobox']:not([data-field-variant]):focus-visible,
|
|
181
|
+
button[role='combobox']:not([data-field-variant])[data-state='open'],
|
|
182
|
+
[data-field-variant='filled']:focus,
|
|
183
|
+
[data-field-variant='filled']:focus-visible,
|
|
184
|
+
[data-field-variant='filled']:focus-within) {
|
|
157
185
|
border-bottom: 2px solid var(--flx-ui-color-primary);
|
|
158
186
|
box-shadow: none;
|
|
159
187
|
outline: none;
|
|
160
188
|
}
|
|
189
|
+
/* Outlined → M3 outlined box (4px), 2px primary border on focus. */
|
|
190
|
+
[data-ui='material'] :where([data-field-variant='outlined']) {
|
|
191
|
+
background: transparent;
|
|
192
|
+
border: 1px solid var(--flx-ui-color-border-strong);
|
|
193
|
+
border-radius: 4px;
|
|
194
|
+
}
|
|
195
|
+
[data-ui='material'] :where([data-field-variant='outlined']:focus, [data-field-variant='outlined']:focus-visible, [data-field-variant='outlined']:focus-within) {
|
|
196
|
+
border: 2px solid var(--flx-ui-color-primary);
|
|
197
|
+
box-shadow: none;
|
|
198
|
+
outline: none;
|
|
199
|
+
}
|
|
200
|
+
/* The combobox's inner input must stay bare — the wrapper carries the field. */
|
|
201
|
+
[data-ui='material'] :where([data-combobox-control] [role='combobox']) {
|
|
202
|
+
background: transparent;
|
|
203
|
+
border: none;
|
|
204
|
+
}
|
|
161
205
|
|
|
162
206
|
/* ---- Menus & lists: full-bleed M3 rows, roomier padding ------------------- */
|
|
163
207
|
[data-ui='material'] :where([role='menuitem'], [role='option']) {
|
|
@@ -212,15 +256,299 @@
|
|
|
212
256
|
opacity: 0.4;
|
|
213
257
|
}
|
|
214
258
|
|
|
259
|
+
/* ---- Surface & Card: M3 elevation (softer than the raw shadow tokens, which
|
|
260
|
+
are tuned for pop-overs; on a plain container they read too heavy) ------- */
|
|
261
|
+
[data-ui='material'] :where([data-surface]) {
|
|
262
|
+
border-radius: 12px;
|
|
263
|
+
}
|
|
264
|
+
[data-ui='material'] :where([data-surface][data-elevation='0']) {
|
|
265
|
+
box-shadow: none;
|
|
266
|
+
}
|
|
267
|
+
[data-ui='material'] :where([data-surface][data-elevation='1']),
|
|
268
|
+
[data-ui='material'] :where([data-card]) {
|
|
269
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.14), 0 1px 3px rgba(0, 0, 0, 0.08);
|
|
270
|
+
}
|
|
271
|
+
[data-ui='material'] :where([data-surface][data-elevation='2']) {
|
|
272
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.13), 0 2px 6px rgba(0, 0, 0, 0.1);
|
|
273
|
+
}
|
|
274
|
+
[data-ui='material'] :where([data-surface][data-elevation='3']) {
|
|
275
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.1);
|
|
276
|
+
}
|
|
277
|
+
[data-ui='material'] :where([data-surface][data-elevation='4']) {
|
|
278
|
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.14), 0 6px 12px rgba(0, 0, 0, 0.1);
|
|
279
|
+
}
|
|
280
|
+
[data-ui='material'] :where([data-card]) {
|
|
281
|
+
border-radius: 12px;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/* ---- Calendar: M3 date grid — circular days, outlined "today", state-layer
|
|
285
|
+
nav, and a tonal band across a selected range. ------------------------- */
|
|
286
|
+
[data-ui='material'] :where([data-calendar-day]) {
|
|
287
|
+
border-radius: 9999px;
|
|
288
|
+
font-weight: 500;
|
|
289
|
+
}
|
|
290
|
+
[data-ui='material'] :where([data-calendar-day]:hover:not([data-disabled]):not([data-selected])) {
|
|
291
|
+
background: color-mix(in oklab, var(--flx-ui-color-primary) 10%, transparent);
|
|
292
|
+
color: inherit;
|
|
293
|
+
}
|
|
294
|
+
[data-ui='material'] :where([data-calendar-day][data-today]:not([data-selected])) {
|
|
295
|
+
border: 1px solid var(--flx-ui-color-primary);
|
|
296
|
+
color: var(--flx-ui-color-primary);
|
|
297
|
+
}
|
|
298
|
+
[data-ui='material'] :where([data-calendar-nav]) {
|
|
299
|
+
border: none;
|
|
300
|
+
border-radius: 9999px;
|
|
301
|
+
}
|
|
302
|
+
[data-ui='material'] :where([data-calendar-nav]:hover:not([disabled])) {
|
|
303
|
+
background: color-mix(in oklab, currentColor 8%, transparent);
|
|
304
|
+
}
|
|
305
|
+
/* Range: circular ends, a flat secondary-container band through the middle. */
|
|
306
|
+
[data-ui='material'] :where([data-range] [data-calendar-day][data-selected]) {
|
|
307
|
+
border-radius: 0;
|
|
308
|
+
background: var(--flx-ui-color-primary-subtle);
|
|
309
|
+
color: var(--flx-ui-color-primary-active);
|
|
310
|
+
}
|
|
311
|
+
[data-ui='material'] :where([data-range] [data-calendar-day][data-selection-start]) {
|
|
312
|
+
border-radius: 9999px 0 0 9999px;
|
|
313
|
+
}
|
|
314
|
+
[data-ui='material'] :where([data-range] [data-calendar-day][data-selection-end]) {
|
|
315
|
+
border-radius: 0 9999px 9999px 0;
|
|
316
|
+
}
|
|
317
|
+
[data-ui='material'] :where([data-range] [data-calendar-day][data-selection-start][data-selection-end]) {
|
|
318
|
+
border-radius: 9999px;
|
|
319
|
+
}
|
|
320
|
+
[data-ui='material'] :where([data-calendar-day][data-selection-start], [data-calendar-day][data-selection-end]) {
|
|
321
|
+
background: var(--flx-ui-color-primary);
|
|
322
|
+
color: var(--flx-ui-color-primary-fg);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/* ---- Date field & date picker: filled segmented control + M3 date-picker
|
|
326
|
+
surface, matching the filled text-field language above. ---------------- */
|
|
327
|
+
/* The field frame carries the filled fill + underline; the segment input nested
|
|
328
|
+
inside the picker control stays transparent so the underline isn't doubled. */
|
|
329
|
+
[data-ui='material'] :where([data-date-field-input], [data-date-picker-control]) {
|
|
330
|
+
background: var(--flx-ui-color-bg-muted);
|
|
331
|
+
border: none;
|
|
332
|
+
border-bottom: 1px solid var(--flx-ui-color-border-strong);
|
|
333
|
+
border-radius: 4px 4px 0 0;
|
|
334
|
+
}
|
|
335
|
+
[data-ui='material'] :where([data-date-field-input]:focus-within, [data-date-picker-control]:focus-within) {
|
|
336
|
+
border-bottom: 2px solid var(--flx-ui-color-primary);
|
|
337
|
+
box-shadow: none;
|
|
338
|
+
outline: none;
|
|
339
|
+
}
|
|
340
|
+
[data-ui='material'] :where([data-date-picker-input]) {
|
|
341
|
+
background: transparent;
|
|
342
|
+
border: none;
|
|
343
|
+
}
|
|
344
|
+
[data-ui='material'] :where([data-date-picker-content]) {
|
|
345
|
+
border-radius: 16px;
|
|
346
|
+
box-shadow: 0 4px 8px 3px rgba(0, 0, 0, 0.12), 0 1px 3px rgba(0, 0, 0, 0.2);
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/* ---- Accordion: flat M3 list — no outer frame, dividers between items, a
|
|
350
|
+
state-layer on the header rather than a filled hover. ------------------ */
|
|
351
|
+
[data-ui='material'] :where([data-accordion]) {
|
|
352
|
+
border: none;
|
|
353
|
+
border-radius: 0;
|
|
354
|
+
}
|
|
355
|
+
[data-ui='material'] :where([data-accordion-item]:not(:last-child)) {
|
|
356
|
+
border-bottom: 1px solid var(--flx-ui-color-border);
|
|
357
|
+
}
|
|
358
|
+
[data-ui='material'] :where([data-accordion-trigger]) {
|
|
359
|
+
padding: 16px var(--flx-ui-space-4);
|
|
360
|
+
font-weight: 500;
|
|
361
|
+
}
|
|
362
|
+
[data-ui='material'] :where([data-accordion-trigger]:hover:not([data-disabled])) {
|
|
363
|
+
background: color-mix(in oklab, var(--flx-ui-color-fg) 6%, transparent);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/* ---- Radio: M3 20px target ---------------------------------------------- */
|
|
367
|
+
[data-ui='material'] :where([role='radio']) {
|
|
368
|
+
width: 20px;
|
|
369
|
+
height: 20px;
|
|
370
|
+
border-width: 2px;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/* ---- Toggle / segmented button: selected = secondary-container ----------- */
|
|
374
|
+
[data-ui='material'] :where([aria-pressed][data-state='on']) {
|
|
375
|
+
background: var(--flx-ui-color-primary-subtle);
|
|
376
|
+
border-color: transparent;
|
|
377
|
+
color: var(--flx-ui-color-primary-active);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/* ---- Number field: filled control row to match the text fields ---------- */
|
|
381
|
+
[data-ui='material'] :where([data-number-field-input-row]) {
|
|
382
|
+
background: var(--flx-ui-color-bg-muted);
|
|
383
|
+
border: none;
|
|
384
|
+
border-bottom: 1px solid var(--flx-ui-color-border-strong);
|
|
385
|
+
border-radius: 4px 4px 0 0;
|
|
386
|
+
}
|
|
387
|
+
[data-ui='material'] :where([data-number-field-input-row]:focus-within) {
|
|
388
|
+
border-bottom: 2px solid var(--flx-ui-color-primary);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/* ---- Linear progress: 4dp fully-rounded track, tonal remainder ---------- */
|
|
392
|
+
[data-ui='material'] :where([role='progressbar']:not([data-circular])) {
|
|
393
|
+
height: 4px;
|
|
394
|
+
border-radius: 9999px;
|
|
395
|
+
background: var(--flx-ui-color-primary-subtle);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/* ---- Sidenav: M3 navigation drawer — full-pill items, state-layer hover,
|
|
399
|
+
secondary-container active, elevated menu flyout. --------------------- */
|
|
400
|
+
[data-ui='material'] :where([data-sidenav-link], [data-sidenav-sub-trigger]) {
|
|
401
|
+
border-radius: 9999px;
|
|
402
|
+
font-weight: 500;
|
|
403
|
+
}
|
|
404
|
+
[data-ui='material'] :where([data-sidenav-link]:hover:not([data-active]),
|
|
405
|
+
[data-sidenav-sub-trigger]:hover:not([data-active])) {
|
|
406
|
+
background: color-mix(in oklab, var(--flx-ui-color-fg) 8%, transparent);
|
|
407
|
+
color: inherit;
|
|
408
|
+
}
|
|
409
|
+
[data-ui='material'] :where([data-sidenav-link][data-active],
|
|
410
|
+
[data-sidenav-sub-trigger][data-active]) {
|
|
411
|
+
background: var(--flx-ui-color-primary-subtle);
|
|
412
|
+
color: var(--flx-ui-color-primary-active);
|
|
413
|
+
font-weight: 600;
|
|
414
|
+
}
|
|
415
|
+
[data-ui='material'] :where([data-sidenav-trigger]) {
|
|
416
|
+
border-radius: 9999px;
|
|
417
|
+
}
|
|
418
|
+
/* Flyout: an elevated M3 menu surface; its rows keep the pill treatment. */
|
|
419
|
+
[data-ui='material'] :where([data-sidenav-sub-content][data-flyout]) {
|
|
420
|
+
border-radius: 12px;
|
|
421
|
+
box-shadow: var(--flx-ui-shadow-lg);
|
|
422
|
+
padding: var(--flx-ui-space-2);
|
|
423
|
+
}
|
|
424
|
+
[data-ui='material'] :where([data-sidenav][data-mobile]) {
|
|
425
|
+
border-radius: 0 16px 16px 0;
|
|
426
|
+
}
|
|
427
|
+
[data-ui='material'] :where([data-sidenav][data-mobile][data-side='right']) {
|
|
428
|
+
border-radius: 16px 0 0 16px;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
/* ---- Pagination: circular pages, filled current ------------------------- */
|
|
432
|
+
[data-ui='material'] :where([data-pagination-page], [data-pagination-prev], [data-pagination-next]) {
|
|
433
|
+
border-radius: 9999px;
|
|
434
|
+
}
|
|
435
|
+
[data-ui='material'] :where([data-pagination-page]:hover:not([data-current])) {
|
|
436
|
+
background: color-mix(in oklab, var(--flx-ui-color-fg) 8%, transparent);
|
|
437
|
+
}
|
|
438
|
+
[data-ui='material'] :where([data-pagination-page][data-current]) {
|
|
439
|
+
background: var(--flx-ui-color-primary);
|
|
440
|
+
color: var(--flx-ui-color-primary-fg);
|
|
441
|
+
border-color: transparent;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/* ---- Stepper: circular numbered indicators ------------------------------ */
|
|
445
|
+
[data-ui='material'] :where([data-stepper-indicator]) {
|
|
446
|
+
border-radius: 9999px;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
/* ---- Breadcrumb: state-layer link affordance ---------------------------- */
|
|
450
|
+
/* Padded pill targets so the state-layer has room to breathe (M3). */
|
|
451
|
+
[data-ui='material'] :where([data-breadcrumb-link]) {
|
|
452
|
+
padding: 2px 8px;
|
|
453
|
+
margin: 0 -2px;
|
|
454
|
+
border-radius: 999px;
|
|
455
|
+
}
|
|
456
|
+
[data-ui='material'] :where([data-breadcrumb-link]:hover) {
|
|
457
|
+
background: color-mix(in oklab, var(--flx-ui-color-fg) 8%, transparent);
|
|
458
|
+
color: var(--flx-ui-color-fg);
|
|
459
|
+
}
|
|
460
|
+
[data-ui='material'] :where([data-breadcrumb-page]) {
|
|
461
|
+
padding: 2px 8px;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/* ---- Toolbar: M3 surface + pill state-layer buttons ---------------------- */
|
|
465
|
+
[data-ui='material'] :where([role='toolbar']) {
|
|
466
|
+
border-radius: 8px;
|
|
467
|
+
gap: 2px;
|
|
468
|
+
}
|
|
469
|
+
[data-ui='material'] :where([role='toolbar'] > button:not([aria-pressed])) {
|
|
470
|
+
border-radius: 999px;
|
|
471
|
+
}
|
|
472
|
+
[data-ui='material'] :where([role='toolbar'] > button:not([aria-pressed]):hover) {
|
|
473
|
+
background: color-mix(in oklab, var(--flx-ui-color-fg) 8%, transparent);
|
|
474
|
+
color: var(--flx-ui-color-fg);
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/* ---- Navigation menu & menubar: state-layer triggers, rounded ----------- */
|
|
478
|
+
[data-ui='material'] :where([data-navigation-menu-trigger]:hover),
|
|
479
|
+
[data-ui='material'] :where([role='menubar'] > [role='menuitem']:hover) {
|
|
480
|
+
background: color-mix(in oklab, var(--flx-ui-color-fg) 8%, transparent);
|
|
481
|
+
border-radius: 8px;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
/* ---- Command & menu rows: M3 state layer over the flat rows -------------- */
|
|
485
|
+
[data-ui='material'] :where([data-command-item][data-active]) {
|
|
486
|
+
background: color-mix(in oklab, var(--flx-ui-color-fg) 8%, transparent);
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
/* ---- Table: flat M3 data table — no frame, divider-only rows, sentence-case
|
|
490
|
+
header (no all-caps), state-layer hover/selection, comfortable density -- */
|
|
491
|
+
[data-ui='material'] :where([data-table]) {
|
|
492
|
+
border: none;
|
|
493
|
+
border-radius: 0;
|
|
494
|
+
}
|
|
495
|
+
[data-ui='material'] :where([data-table-head]) {
|
|
496
|
+
background: transparent;
|
|
497
|
+
color: var(--flx-ui-color-fg-muted);
|
|
498
|
+
font-size: var(--flx-ui-font-size-sm);
|
|
499
|
+
font-weight: 500;
|
|
500
|
+
letter-spacing: normal;
|
|
501
|
+
text-transform: none;
|
|
502
|
+
padding: var(--flx-ui-space-3);
|
|
503
|
+
border-bottom: var(--flx-ui-border-width-thin) solid var(--flx-ui-color-border);
|
|
504
|
+
}
|
|
505
|
+
[data-ui='material'] :where([data-table-cell]) {
|
|
506
|
+
padding: var(--flx-ui-space-3);
|
|
507
|
+
}
|
|
508
|
+
[data-ui='material'] :where([data-table-body] > [data-table-row]:hover) {
|
|
509
|
+
background: color-mix(in oklab, var(--flx-ui-color-fg) 5%, transparent);
|
|
510
|
+
}
|
|
511
|
+
[data-ui='material'] :where([data-table-row][data-selected]),
|
|
512
|
+
[data-ui='material'] :where([data-table-row][data-selected]:hover) {
|
|
513
|
+
background: color-mix(in oklab, var(--flx-ui-color-primary) 10%, transparent);
|
|
514
|
+
}
|
|
515
|
+
/* Header is transparent now, so pinned cells need an opaque surface fill. */
|
|
516
|
+
[data-ui='material'] :where([data-table-cell][data-pinned]),
|
|
517
|
+
[data-ui='material'] :where([data-table-head][data-pinned]) {
|
|
518
|
+
background: var(--flx-ui-color-bg);
|
|
519
|
+
}
|
|
520
|
+
/* Compact density under Material. */
|
|
521
|
+
[data-ui='material'] :where([data-table][data-density='compact'] [data-table-head]),
|
|
522
|
+
[data-ui='material'] :where([data-table][data-density='compact'] [data-table-cell]) {
|
|
523
|
+
padding: var(--flx-ui-space-1) var(--flx-ui-space-2);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
/* ---- Toast: M3 snackbar shape + elevation (keeps the type accent) -------- */
|
|
527
|
+
[data-ui='material'] :where([data-toast]) {
|
|
528
|
+
border-radius: 4px;
|
|
529
|
+
box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2), 0 1px 18px rgba(0, 0, 0, 0.12);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/* ---- Alert: M3 medium radius ------------------------------------------- */
|
|
533
|
+
[data-ui='material'] :where([data-alert]) {
|
|
534
|
+
border-radius: 12px;
|
|
535
|
+
}
|
|
536
|
+
|
|
215
537
|
/* ---- Click-origin ripple (installed by the ripple primitive) ------------- */
|
|
216
|
-
[data-ui='material'] :where([data-variant], [role='menuitem'], [role='option'], [role='tab']) {
|
|
538
|
+
[data-ui='material'] :where([data-variant]:not([data-badge]), [role='menuitem'], [role='option'], [role='tab']) {
|
|
217
539
|
position: relative;
|
|
218
540
|
overflow: hidden;
|
|
219
541
|
}
|
|
542
|
+
/* A glow button draws its ring on ::after at the border edge; the ripple's
|
|
543
|
+
overflow:hidden would clip it, so let a glow button overflow. */
|
|
544
|
+
[data-ui='material'] :where([data-variant]:not([data-badge])[data-glow]) {
|
|
545
|
+
overflow: visible;
|
|
546
|
+
}
|
|
220
547
|
[data-ui='material'] .flx-mat-ripple {
|
|
221
548
|
position: absolute;
|
|
222
549
|
border-radius: 50%;
|
|
223
|
-
|
|
550
|
+
/* Overridable per-control via --flx-mat-ripple-color; defaults to the ink. */
|
|
551
|
+
background: var(--flx-mat-ripple-color, currentColor);
|
|
224
552
|
opacity: 0;
|
|
225
553
|
transform: scale(0);
|
|
226
554
|
pointer-events: none;
|
|
@@ -242,4 +570,333 @@
|
|
|
242
570
|
opacity: 0;
|
|
243
571
|
}
|
|
244
572
|
}
|
|
573
|
+
|
|
574
|
+
/* ---- Progress: M3 linear (4px, tonal track) ------------------------------- */
|
|
575
|
+
[data-ui='material'] :where([role='progressbar']:not([data-circular])) {
|
|
576
|
+
height: 4px;
|
|
577
|
+
background: var(--flx-ui-color-primary-subtle);
|
|
578
|
+
}
|
|
579
|
+
[data-ui='material'] :where([role='progressbar']:not([data-circular]))::after {
|
|
580
|
+
background: var(--flx-ui-color-primary);
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/* ---- Slider: M3 (thin tonal track, filled active range) ------------------- */
|
|
584
|
+
[data-ui='material'] :where([data-slider-track]) {
|
|
585
|
+
height: 4px;
|
|
586
|
+
background: var(--flx-ui-color-primary-subtle);
|
|
587
|
+
}
|
|
588
|
+
[data-ui='material'] :where([data-slider-range]) {
|
|
589
|
+
background: var(--flx-ui-color-primary);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
/* ---- Badge: M3 label (medium weight, subtle tracking) --------------------- */
|
|
593
|
+
[data-ui='material'] :where([data-badge]) {
|
|
594
|
+
font-weight: var(--flx-ui-font-weight-medium);
|
|
595
|
+
letter-spacing: 0.02em;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/* ---- Avatar: M3 rounded-square option stays circular; add tonal ring ------ */
|
|
599
|
+
[data-ui='material'] :where([data-avatar]) {
|
|
600
|
+
font-weight: var(--flx-ui-font-weight-medium);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/* ---- Statistic: M3 display number (tighter tracking) ---------------------- */
|
|
604
|
+
[data-ui='material'] :where([data-statistic-value]) {
|
|
605
|
+
font-weight: var(--flx-ui-font-weight-semibold);
|
|
606
|
+
letter-spacing: -0.01em;
|
|
607
|
+
}
|
|
608
|
+
[data-ui='material'] :where([data-statistic-label]) {
|
|
609
|
+
letter-spacing: 0.06em;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
/* ---- Empty: M3 icon tile (rounded-large, tonal) --------------------------- */
|
|
613
|
+
[data-ui='material'] :where([data-empty-icon]) {
|
|
614
|
+
width: 48px;
|
|
615
|
+
height: 48px;
|
|
616
|
+
border-radius: 16px;
|
|
617
|
+
background: var(--flx-ui-color-primary-subtle);
|
|
618
|
+
color: var(--flx-ui-color-primary);
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
/* ---- Timeline: M3 dot state-layer ---------------------------------------- */
|
|
622
|
+
[data-ui='material'] :where([data-timeline-indicator]:empty)::before {
|
|
623
|
+
box-shadow: 0 0 0 4px color-mix(in srgb, var(--flx-timeline-dot) 14%, transparent);
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
/* ---- Descriptions: M3 term (medium, tracked) ------------------------------ */
|
|
627
|
+
[data-ui='material'] :where([data-descriptions-term]) {
|
|
628
|
+
font-weight: var(--flx-ui-font-weight-medium);
|
|
629
|
+
letter-spacing: 0.04em;
|
|
630
|
+
text-transform: uppercase;
|
|
631
|
+
font-size: var(--flx-ui-font-size-2xs, 11px);
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
/* ---- Switch: Material (thin track, prominent thumb, ripple state-layer) ---- */
|
|
635
|
+
[data-ui='material'] :where([role='switch']) {
|
|
636
|
+
width: 34px;
|
|
637
|
+
height: 14px;
|
|
638
|
+
padding: 0;
|
|
639
|
+
border: none;
|
|
640
|
+
overflow: visible;
|
|
641
|
+
position: relative;
|
|
642
|
+
border-radius: 999px;
|
|
643
|
+
background: color-mix(in srgb, var(--flx-ui-color-fg) 26%, transparent);
|
|
644
|
+
}
|
|
645
|
+
[data-ui='material'] :where([role='switch'][data-state='checked']) {
|
|
646
|
+
background: color-mix(in srgb, var(--flx-ui-color-primary) 50%, transparent);
|
|
647
|
+
filter: none;
|
|
648
|
+
}
|
|
649
|
+
[data-ui='material'] :where([role='switch']:hover:not([data-disabled])) {
|
|
650
|
+
filter: none;
|
|
651
|
+
}
|
|
652
|
+
/* Thumb — 20px circle, larger than the 14px track so it overlaps it. */
|
|
653
|
+
[data-ui='material'] :where([role='switch'])::after {
|
|
654
|
+
content: '';
|
|
655
|
+
position: absolute;
|
|
656
|
+
top: 50%;
|
|
657
|
+
left: 0;
|
|
658
|
+
width: 20px;
|
|
659
|
+
height: 20px;
|
|
660
|
+
margin: 0;
|
|
661
|
+
border-radius: 50%;
|
|
662
|
+
background: #fff;
|
|
663
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
|
664
|
+
transform: translate(-2px, -50%);
|
|
665
|
+
transition:
|
|
666
|
+
transform var(--flx-ui-duration-normal) var(--flx-ui-ease-emphasized),
|
|
667
|
+
background var(--flx-ui-duration-fast) var(--flx-ui-ease-standard);
|
|
668
|
+
}
|
|
669
|
+
[data-ui='material'] :where([role='switch'][data-state='checked'])::after {
|
|
670
|
+
background: var(--flx-ui-color-primary);
|
|
671
|
+
transform: translate(16px, -50%);
|
|
672
|
+
}
|
|
673
|
+
/* Ripple / state-layer — a translucent disc behind the thumb, following it. */
|
|
674
|
+
[data-ui='material'] :where([role='switch'])::before {
|
|
675
|
+
content: '';
|
|
676
|
+
position: absolute;
|
|
677
|
+
top: 50%;
|
|
678
|
+
left: 0;
|
|
679
|
+
width: 40px;
|
|
680
|
+
height: 40px;
|
|
681
|
+
border-radius: 50%;
|
|
682
|
+
background: var(--flx-ui-color-fg);
|
|
683
|
+
opacity: 0;
|
|
684
|
+
pointer-events: none;
|
|
685
|
+
transform: translate(-12px, -50%) scale(0.7);
|
|
686
|
+
transition:
|
|
687
|
+
opacity var(--flx-ui-duration-fast) var(--flx-ui-ease-standard),
|
|
688
|
+
transform var(--flx-ui-duration-normal) var(--flx-ui-ease-emphasized);
|
|
689
|
+
}
|
|
690
|
+
[data-ui='material'] :where([role='switch'][data-state='checked'])::before {
|
|
691
|
+
background: var(--flx-ui-color-primary);
|
|
692
|
+
transform: translate(6px, -50%) scale(0.7);
|
|
693
|
+
}
|
|
694
|
+
[data-ui='material'] :where([role='switch']:hover:not([data-disabled]))::before {
|
|
695
|
+
opacity: 0.09;
|
|
696
|
+
transform: translate(-12px, -50%) scale(1);
|
|
697
|
+
}
|
|
698
|
+
[data-ui='material'] :where([role='switch'][data-state='checked']:hover:not([data-disabled]))::before {
|
|
699
|
+
transform: translate(6px, -50%) scale(1);
|
|
700
|
+
}
|
|
701
|
+
[data-ui='material'] :where([role='switch']:active:not([data-disabled]))::before {
|
|
702
|
+
opacity: 0.18;
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
/* ---- Slider thumb: Material filled handle + ripple state-layer ------------- */
|
|
706
|
+
[data-ui='material'] :where([data-slider] [role='slider']) {
|
|
707
|
+
background: var(--flx-ui-color-primary);
|
|
708
|
+
border-color: var(--flx-ui-color-primary);
|
|
709
|
+
}
|
|
710
|
+
[data-ui='material'] :where([data-slider] [role='slider'])::before {
|
|
711
|
+
content: '';
|
|
712
|
+
position: absolute;
|
|
713
|
+
top: 50%;
|
|
714
|
+
left: 50%;
|
|
715
|
+
width: 40px;
|
|
716
|
+
height: 40px;
|
|
717
|
+
border-radius: 50%;
|
|
718
|
+
background: var(--flx-ui-color-primary);
|
|
719
|
+
opacity: 0;
|
|
720
|
+
pointer-events: none;
|
|
721
|
+
transform: translate(-50%, -50%) scale(0.4);
|
|
722
|
+
transition:
|
|
723
|
+
opacity var(--flx-ui-duration-fast) var(--flx-ui-ease-standard),
|
|
724
|
+
transform var(--flx-ui-duration-normal) var(--flx-ui-ease-emphasized);
|
|
725
|
+
}
|
|
726
|
+
[data-ui='material'] :where([data-slider] [role='slider']:hover:not([data-disabled]))::before {
|
|
727
|
+
opacity: 0.12;
|
|
728
|
+
transform: translate(-50%, -50%) scale(1);
|
|
729
|
+
}
|
|
730
|
+
[data-ui='material'] :where([data-slider] [role='slider']:active)::before,
|
|
731
|
+
[data-ui='material'] :where([data-slider] [role='slider']:focus-visible)::before {
|
|
732
|
+
opacity: 0.2;
|
|
733
|
+
transform: translate(-50%, -50%) scale(1);
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
/* ---- Popup surfaces: one consistent M3 shape (small radius, tight elevation)
|
|
737
|
+
* Unifies every floating surface — menus, listboxes, datepicker, command,
|
|
738
|
+
* hovercard, nav-menu — which previously ranged from radius-md (12px) to
|
|
739
|
+
* radius-lg (16px) with a heavy shadow-lg. Tooltip already matches at 4px. */
|
|
740
|
+
[data-ui='material'] :where(
|
|
741
|
+
[role='menu'],
|
|
742
|
+
[role='listbox'],
|
|
743
|
+
[data-date-picker-content],
|
|
744
|
+
[data-navigation-menu-content],
|
|
745
|
+
[data-command],
|
|
746
|
+
[data-hovercard-content]
|
|
747
|
+
) {
|
|
748
|
+
border-radius: 4px;
|
|
749
|
+
box-shadow:
|
|
750
|
+
0 2px 6px rgba(0, 0, 0, 0.16),
|
|
751
|
+
0 1px 3px rgba(0, 0, 0, 0.1);
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
/* ---- Checkbox & radio: M3 state-layer ripple -------------------------------
|
|
755
|
+
* The ripple lives on ::before at z-index:-1 so it paints ABOVE the control's
|
|
756
|
+
* background but BELOW its content (the base check/dot on ::after). This leaves
|
|
757
|
+
* the base marks completely untouched — do NOT restyle ::after here, the base
|
|
758
|
+
* check is a flex-centred rotated border and the radio dot is position:absolute;
|
|
759
|
+
* inset:3px, both of which break if position/box-sizing is overridden. */
|
|
760
|
+
[data-ui='material'] :where([role='checkbox']),
|
|
761
|
+
[data-ui='material'] :where([role='radio']) {
|
|
762
|
+
position: relative;
|
|
763
|
+
overflow: visible;
|
|
764
|
+
}
|
|
765
|
+
[data-ui='material'] :where([role='checkbox'])::before,
|
|
766
|
+
[data-ui='material'] :where([role='radio'])::before {
|
|
767
|
+
content: '';
|
|
768
|
+
position: absolute;
|
|
769
|
+
z-index: -1;
|
|
770
|
+
top: 50%;
|
|
771
|
+
left: 50%;
|
|
772
|
+
width: 40px;
|
|
773
|
+
height: 40px;
|
|
774
|
+
border-radius: 50%;
|
|
775
|
+
background: var(--flx-ui-color-primary);
|
|
776
|
+
opacity: 0;
|
|
777
|
+
pointer-events: none;
|
|
778
|
+
transform: translate(-50%, -50%) scale(0.5);
|
|
779
|
+
transition:
|
|
780
|
+
opacity var(--flx-ui-duration-fast) var(--flx-ui-ease-standard),
|
|
781
|
+
transform var(--flx-ui-duration-normal) var(--flx-ui-ease-emphasized);
|
|
782
|
+
}
|
|
783
|
+
[data-ui='material'] :where([role='checkbox']:hover:not([data-disabled]))::before,
|
|
784
|
+
[data-ui='material'] :where([role='radio']:hover:not([data-disabled]))::before {
|
|
785
|
+
opacity: 0.1;
|
|
786
|
+
transform: translate(-50%, -50%) scale(1);
|
|
787
|
+
}
|
|
788
|
+
[data-ui='material'] :where([role='checkbox']:active:not([data-disabled]))::before,
|
|
789
|
+
[data-ui='material'] :where([role='radio']:active:not([data-disabled]))::before,
|
|
790
|
+
[data-ui='material'] :where([role='checkbox']:focus-visible)::before,
|
|
791
|
+
[data-ui='material'] :where([role='radio']:focus-visible)::before {
|
|
792
|
+
opacity: 0.18;
|
|
793
|
+
transform: translate(-50%, -50%) scale(1);
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
/* ---- Circular progress: 4dp tonal track, round cap (matches linear) ------ */
|
|
797
|
+
[data-ui='material'] :where([data-progress-track]) {
|
|
798
|
+
stroke: var(--flx-ui-color-primary-subtle);
|
|
799
|
+
}
|
|
800
|
+
[data-ui='material'] :where([data-progress-indicator]) {
|
|
801
|
+
stroke-linecap: round;
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
/* ---- Avatar group: tonal secondary-container overflow chip --------------- */
|
|
805
|
+
[data-ui='material'] :where([data-avatar-group-overflow]) {
|
|
806
|
+
background: var(--flx-ui-color-primary-subtle);
|
|
807
|
+
color: var(--flx-ui-color-primary-active);
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
/* ---- Rating: filled primary stars, roomier M3 spacing ------------------- */
|
|
811
|
+
[data-ui='material'] :where([data-rating]) {
|
|
812
|
+
--flx-ui-rating-gap: 4px;
|
|
813
|
+
--flx-ui-rating-color: var(--flx-ui-color-primary);
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
/* ---- PIN input: M3 filled cells with the shared underline treatment ------ */
|
|
817
|
+
[data-ui='material'] :where([data-pin-input-field]) {
|
|
818
|
+
background: var(--flx-ui-color-bg-muted);
|
|
819
|
+
border: none;
|
|
820
|
+
border-bottom: 1px solid var(--flx-ui-color-border-strong);
|
|
821
|
+
border-radius: 4px 4px 0 0;
|
|
822
|
+
}
|
|
823
|
+
[data-ui='material'] :where([data-pin-input-field]:focus, [data-pin-input-field]:focus-visible) {
|
|
824
|
+
border-bottom: 2px solid var(--flx-ui-color-primary);
|
|
825
|
+
box-shadow: none;
|
|
826
|
+
outline: none;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
/* ---- Icon button: M3 round, size-aware (overrides the fixed 40px pill) ---- */
|
|
830
|
+
[data-ui='material'] :where([data-icon-button]) {
|
|
831
|
+
padding: 0;
|
|
832
|
+
width: var(--flx-ui-size-md);
|
|
833
|
+
height: var(--flx-ui-size-md);
|
|
834
|
+
border-radius: 9999px;
|
|
835
|
+
}
|
|
836
|
+
[data-ui='material'] :where([data-icon-button][data-size='sm']) {
|
|
837
|
+
width: var(--flx-ui-size-sm);
|
|
838
|
+
height: var(--flx-ui-size-sm);
|
|
839
|
+
}
|
|
840
|
+
[data-ui='material'] :where([data-icon-button][data-size='lg']) {
|
|
841
|
+
width: var(--flx-ui-size-lg);
|
|
842
|
+
height: var(--flx-ui-size-lg);
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
/* ---- FAB: M3 primary-container, resting elevation, larger radius. Re-assert
|
|
846
|
+
the FAB geometry the fixed-40px button rule above would otherwise impose. */
|
|
847
|
+
[data-ui='material'] :where([data-fab]) {
|
|
848
|
+
width: 56px;
|
|
849
|
+
height: 56px;
|
|
850
|
+
padding: 0;
|
|
851
|
+
border-radius: 16px;
|
|
852
|
+
background: var(--flx-ui-color-primary-subtle);
|
|
853
|
+
color: var(--flx-ui-color-primary-active);
|
|
854
|
+
box-shadow: var(--flx-ui-shadow-md);
|
|
855
|
+
}
|
|
856
|
+
[data-ui='material'] :where([data-fab]:hover:not([data-disabled])) {
|
|
857
|
+
box-shadow: var(--flx-ui-shadow-lg);
|
|
858
|
+
}
|
|
859
|
+
[data-ui='material'] :where([data-fab][data-fab-size='sm']) { width: 40px; height: 40px; border-radius: 12px; }
|
|
860
|
+
[data-ui='material'] :where([data-fab][data-fab-size='lg']) { width: 64px; height: 64px; border-radius: 28px; }
|
|
861
|
+
[data-ui='material'] :where([data-fab][data-fab-extended]) {
|
|
862
|
+
width: auto;
|
|
863
|
+
height: 56px;
|
|
864
|
+
padding: 0 20px;
|
|
865
|
+
border-radius: 16px;
|
|
866
|
+
}
|
|
867
|
+
/* A solid-toned FAB keeps the primary fill instead of the tonal container. */
|
|
868
|
+
[data-ui='material'] :where([data-fab][data-variant='solid']) {
|
|
869
|
+
background: var(--flx-ui-color-primary);
|
|
870
|
+
color: var(--flx-ui-color-primary-fg);
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
/* ---- Speed dial: elevated action buttons -------------------------------- */
|
|
874
|
+
[data-ui='material'] :where([data-speed-dial-action]) {
|
|
875
|
+
box-shadow: var(--flx-ui-shadow-sm);
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
/* ---- Carousel: M3 expanding indicators + circular controls -------------- */
|
|
879
|
+
[data-ui='material'] :where([data-carousel-dot]) {
|
|
880
|
+
border-radius: var(--flx-ui-radius-full, 999px);
|
|
881
|
+
transition: width var(--flx-ui-duration-normal, 250ms) var(--flx-ui-ease-standard, ease),
|
|
882
|
+
background var(--flx-ui-duration-fast) var(--flx-ui-ease-standard);
|
|
883
|
+
}
|
|
884
|
+
/* Active indicator grows into a pill, à la M3 carousels. */
|
|
885
|
+
[data-ui='material'] :where([data-carousel-dot][data-active]) {
|
|
886
|
+
width: 24px;
|
|
887
|
+
background: var(--flx-ui-color-primary);
|
|
888
|
+
}
|
|
889
|
+
[data-ui='material'] :where([data-carousel-prev], [data-carousel-next]) {
|
|
890
|
+
display: inline-grid;
|
|
891
|
+
place-items: center;
|
|
892
|
+
inline-size: 40px;
|
|
893
|
+
block-size: 40px;
|
|
894
|
+
border: 0;
|
|
895
|
+
border-radius: var(--flx-ui-radius-full, 999px);
|
|
896
|
+
background: var(--flx-ui-color-bg-muted);
|
|
897
|
+
color: var(--flx-ui-color-fg);
|
|
898
|
+
}
|
|
899
|
+
[data-ui='material'] :where([data-carousel-prev]:hover:not([disabled]), [data-carousel-next]:hover:not([disabled])) {
|
|
900
|
+
background: color-mix(in srgb, var(--flx-ui-color-fg) 8%, var(--flx-ui-color-bg-muted));
|
|
901
|
+
}
|
|
245
902
|
}
|
package/material.css.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const href = new URL('./material.css', import.meta.url).href;
|
|
2
|
+
if (typeof document !== 'undefined' && !document.querySelector(`link[data-flx-ui="${href}"]`)) {
|
|
3
|
+
const link = document.createElement('link');
|
|
4
|
+
link.rel = 'stylesheet';
|
|
5
|
+
link.href = href;
|
|
6
|
+
link.dataset.flxUi = href;
|
|
7
|
+
document.head.appendChild(link);
|
|
8
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluixi-ui/skin-material",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0-alpha.11",
|
|
4
4
|
"description": "Material Design skin for Fluixi UI — activate with data-ui=\"material\"",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"dist",
|
|
22
22
|
"fonts",
|
|
23
23
|
"material.css",
|
|
24
|
+
"material.css.js",
|
|
24
25
|
"README.md",
|
|
25
26
|
"LICENSE"
|
|
26
27
|
],
|
|
@@ -34,6 +35,6 @@
|
|
|
34
35
|
}
|
|
35
36
|
},
|
|
36
37
|
"scripts": {
|
|
37
|
-
"build": "tsc -p tsconfig.lib.json"
|
|
38
|
+
"build": "tsc -p tsconfig.lib.json && node ../../scripts/css-loaders.mjs material.css"
|
|
38
39
|
}
|
|
39
40
|
}
|