tokenami 0.0.89 → 0.0.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +69 -55
  2. package/package.json +5 -5
package/dist/cli.js CHANGED
@@ -696,10 +696,7 @@ function createSheet(params) {
696
696
  const tokenValues = params.tokens.values;
697
697
  const composeBlocks = parseComposeBlocks(params.tokens.composeBlocks, params.config);
698
698
  const propertyConfigsByCSSProperty = getPropertyConfigs(tokenProperties, params.config);
699
- const propertyConfigs = Array.from(propertyConfigsByCSSProperty.values()).flat();
700
- const selectors = propertyConfigs.flatMap((prop) => {
701
- return getPropertyBaseSelectors(composeBlocks, prop, params.config);
702
- });
699
+ let themeTokenSelectors = [];
703
700
  const styles = {
704
701
  reset: /* @__PURE__ */ new Set(),
705
702
  atomic: {},
@@ -708,70 +705,57 @@ function createSheet(params) {
708
705
  toggles: {}
709
706
  };
710
707
  for (const [cssProperty, configs] of propertyConfigsByCSSProperty) {
711
- const isLogical = supportedLogicalProperties.has(cssProperty);
712
708
  const isInheritable = inheritedProperties.has(cssProperty);
713
- const sortedConfigs = [...configs].sort((a, b) => a.order - b.order);
714
- const variants = sortedConfigs.flatMap((config) => config.variant ? [config.variant] : []);
715
- const variantValue = unique(variants).reduce((fallback, variant) => {
716
- const hashedProperty = hashVariantProperty(variant, cssProperty);
717
- return `var(${hashedProperty}, ${fallback})`;
718
- }, "revert-layer");
709
+ const elementConfigs = configs.filter((c) => {
710
+ const selectorConfig = getPropertyConfigSelector(c.selector, params.config);
711
+ return !selectorConfig.some(isPseudoElementSelector);
712
+ });
719
713
  for (const prop of configs) {
720
- const layerIndex = getAtomicLayerIndex(cssProperty, params.config);
721
714
  const toggleKey = prop.responsive || prop.selector;
722
715
  const propertyPrefix = prop.isCustom ? CUSTOM_PROP_PREFIX : "";
723
- const baseSelectors = getPropertyBaseSelectors(composeBlocks, prop, params.config);
724
716
  const gridToggle = prop.isGrid ? getGridPropertyToggle(prop.tokenProperty) : "";
725
- if (layerIndex === -1) continue;
717
+ const selectors = getPropertySelectors(composeBlocks, prop, params.config);
718
+ themeTokenSelectors.push(...selectors.base.map(removePseudoElementSelector));
726
719
  if (prop.variant && toggleKey) {
727
720
  const responsive = getResponsiveSelectorFromConfig(prop.responsive, params.config);
728
721
  const selectorConfig = getPropertyConfigSelector(prop.selector, params.config);
729
722
  const hasChildSelector = selectorConfig.some(isChildSelector);
723
+ const propertyConfigs = selectorConfig.some(isPseudoElementSelector) ? configs.filter((c) => c.selector === prop.selector) : elementConfigs;
724
+ const declarationValue = createVariantValue(cssProperty, prop, propertyConfigs);
730
725
  const hashedProperty = hashVariantProperty(prop.variant, cssProperty);
731
726
  const basePropertyValue = getBasePropertyValue(prop.tokenProperty, prop, false);
732
727
  const toggleProperty = Tokenami2.parsedTokenProperty(prop.variant);
733
- const toggleDeclaration = `${hashedProperty}: var(${toggleProperty}) ${basePropertyValue};`;
734
- const layer = `${isLogical ? LAYERS.SELECTORS_LOGICAL : LAYERS.SELECTORS}${layerIndex}`;
735
- const customPropertyFallback = `var(${Tokenami2.tokenProperty(cssProperty)})`;
736
- const customPropertyValue = variantValue.replace("revert-layer", customPropertyFallback);
737
- const declarationValue = prop.isCustom ? customPropertyValue : variantValue;
738
728
  const declaration = `${propertyPrefix}${cssProperty}: ${declarationValue};`;
729
+ const toggleDeclaration = `${hashedProperty}: var(${toggleProperty}) ${basePropertyValue};`;
730
+ const toggleTemplate = `@layer ${prop.layer} {${SELECTOR_TAG} { ${toggleDeclaration} }}`;
731
+ const gridToggleTemplate = `@layer ${prop.layer} {${SELECTOR_TAG} { ${gridToggle} }}`;
732
+ const template = `@layer ${prop.layer} {${SELECTOR_TAG} { ${declaration} }}`;
739
733
  styles.reset.add(`${toggleProperty}: initial;`);
740
734
  styles.reset.add(`${hashedProperty}: initial;`);
741
735
  if (!isInheritable && !hasChildSelector) {
742
736
  styles.reset.add(`${prop.tokenProperty}: initial;`);
743
737
  }
744
- const template = `@layer ${layer} {${SELECTOR_TAG} { ${declaration} ${gridToggle} }}`;
745
- const toggleTemplate = `@layer ${layer} {${SELECTOR_TAG} { ${toggleDeclaration} }}`;
746
738
  styles.selectors[template] ??= /* @__PURE__ */ new Set();
747
739
  styles.selectors[toggleTemplate] ??= /* @__PURE__ */ new Set();
748
- for (const selector of baseSelectors) {
749
- styles.selectors[template].add(selector);
750
- styles.selectors[toggleTemplate].add(selector);
740
+ styles.selectors[gridToggleTemplate] ??= /* @__PURE__ */ new Set();
741
+ for (const selector of selectors.base) {
742
+ const elemSelector = removePseudoElementSelector(selector);
743
+ styles.selectors[template].add(prop.isCustom ? elemSelector : selector);
744
+ styles.selectors[toggleTemplate].add(elemSelector);
745
+ styles.selectors[gridToggleTemplate].add(elemSelector);
751
746
  }
752
- const selectors2 = getPropertySelectors(
753
- composeBlocks,
754
- prop.selector,
755
- prop.tokenProperty,
756
- params.config
757
- );
758
- for (const selector of selectors2) {
759
- const responsiveSelectors = [responsive, ...selector].filter(Boolean);
760
- const toggle = responsiveSelectors.reduceRight(
761
- (declaration2, selector2) => `${selector2} { ${declaration2} }`,
762
- `${toggleProperty}: ;`
763
- );
747
+ for (const selector of selectors.all) {
748
+ const toggle = createToggleDeclaration(responsive, selector, toggleProperty);
764
749
  styles.toggles[toggleKey] ??= /* @__PURE__ */ new Set();
765
750
  styles.toggles[toggleKey].add(toggle);
766
751
  }
767
752
  } else {
768
753
  const propertyValue = getBasePropertyValue(prop.tokenProperty, prop);
769
754
  const declaration = `${propertyPrefix}${cssProperty}: ${propertyValue};`;
770
- const layer = `${isLogical ? LAYERS.LOGICAL : LAYERS.BASE}${layerIndex}`;
755
+ const template = `@layer ${prop.layer} {${SELECTOR_TAG} { ${declaration} ${gridToggle} }}`;
771
756
  if (!isInheritable) styles.reset.add(`${prop.tokenProperty}: initial;`);
772
- const template = `@layer ${layer} {${SELECTOR_TAG} { ${declaration} ${gridToggle} }}`;
773
757
  styles.atomic[template] ??= /* @__PURE__ */ new Set();
774
- for (const selector of baseSelectors) {
758
+ for (const selector of selectors.base) {
775
759
  styles.atomic[template].add(selector);
776
760
  }
777
761
  }
@@ -794,7 +778,7 @@ function createSheet(params) {
794
778
 
795
779
  @layer tkb {
796
780
  ${generateKeyframeRules(tokenValues, params.config)}
797
- ${generateThemeTokens(tokenValues, unique(selectors), params.config)}
781
+ ${generateThemeTokens(tokenValues, unique(themeTokenSelectors), params.config)}
798
782
  * { ${Array.from(styles.reset).join(" ")} }
799
783
 
800
784
  ${Object.values(styles.toggles).flatMap((set) => Array.from(set)).join(" ")}
@@ -831,24 +815,22 @@ function parseComposeBlocks(composeBlocks, config) {
831
815
  }
832
816
  return parsedComposeBlocks;
833
817
  }
834
- function getPropertyBaseSelectors(composeBlocks, prop, config) {
818
+ function getPropertySelectors(composeBlocks, prop, config) {
835
819
  let selectors = [];
836
820
  const selectorConfig = getPropertyConfigSelector(prop.selector, config);
837
821
  const baseSelectors = getBaseSelectors(composeBlocks, prop.tokenProperty);
838
822
  const elemSelector = selectorConfig.find(isElementSelector);
839
- if (!elemSelector) {
840
- selectors.push(...baseSelectors);
841
- } else {
823
+ if (elemSelector) {
842
824
  const parsedSelectors = getParsedSelectors(prop.selector, [elemSelector], baseSelectors);
843
825
  if (elemSelector === "&") selectors.push(...parsedSelectors.flat());
844
826
  selectors.push(...parsedSelectors.flat());
827
+ } else {
828
+ selectors.push(...baseSelectors);
845
829
  }
846
- return unique(selectors);
847
- }
848
- function getPropertySelectors(composeBlocks, propertySelector, property, config) {
849
- const selectorConfig = getPropertyConfigSelector(propertySelector, config);
850
- const baseSelectors = getBaseSelectors(composeBlocks, property);
851
- return getParsedSelectors(propertySelector, selectorConfig, baseSelectors);
830
+ return {
831
+ base: unique(selectors),
832
+ all: getParsedSelectors(prop.selector, selectorConfig, baseSelectors)
833
+ };
852
834
  }
853
835
  function getBaseSelectors(composeBlocks, property) {
854
836
  const composeSelectors = Object.entries(composeBlocks).flatMap(([selector, styles]) => {
@@ -856,6 +838,30 @@ function getBaseSelectors(composeBlocks, property) {
856
838
  });
857
839
  return [DEFAULT_SELECTOR, ...composeSelectors];
858
840
  }
841
+ function createVariantValue(cssProperty, prop, propertyConfigs) {
842
+ let variantValue = "revert-layer";
843
+ const seen = /* @__PURE__ */ new Set();
844
+ for (const propertyConfig of propertyConfigs) {
845
+ if (!propertyConfig.variant) continue;
846
+ if (seen.has(propertyConfig.variant)) continue;
847
+ const hashedProperty = hashVariantProperty(propertyConfig.variant, cssProperty);
848
+ variantValue = `var(${hashedProperty}, ${variantValue})`;
849
+ seen.add(propertyConfig.variant);
850
+ }
851
+ const customPropertyFallback = `var(${Tokenami2.tokenProperty(cssProperty)})`;
852
+ const customPropertyValue = variantValue.replace("revert-layer", customPropertyFallback);
853
+ return prop.isCustom ? customPropertyValue : variantValue;
854
+ }
855
+ function createToggleDeclaration(responsiveSelector, selector, toggleProperty) {
856
+ let toggle = `${toggleProperty}: ;`;
857
+ const responsiveSelectors = [responsiveSelector, ...selector].reverse();
858
+ for (const selector2 of responsiveSelectors) {
859
+ if (!selector2) continue;
860
+ const elemSelector = removePseudoElementSelector(selector2);
861
+ toggle = `${elemSelector} { ${toggle} }`;
862
+ }
863
+ return toggle;
864
+ }
859
865
  function getGridPropertyToggle(property) {
860
866
  const hashGridProperty = hashVariantProperty("grid", property);
861
867
  const gridProperty3 = Tokenami2.gridProperty();
@@ -909,15 +915,20 @@ function getPropertyConfigs(tokenProperties, config) {
909
915
  const selectorOrder = parts.selector ? 2 : 0;
910
916
  const order = responsiveOrder + selectorOrder;
911
917
  for (const cssProperty of properties) {
918
+ const layerIndex = getAtomicLayerIndex(cssProperty, config);
919
+ if (layerIndex === -1) continue;
912
920
  const longhandProperty = Tokenami2.createLonghandProperty(property, cssProperty);
913
921
  const tokenProperty3 = Tokenami2.parseProperty(longhandProperty);
914
922
  const currentConfigs = propertyConfigs.get(cssProperty) || [];
915
923
  const customConfig = config.customProperties?.[cssProperty];
916
924
  const propertyConfig = config.properties?.[cssProperty];
925
+ const isLogical = supportedLogicalProperties.has(cssProperty);
917
926
  const isGrid = customConfig?.includes("grid") ?? propertyConfig?.includes("grid") ?? false;
918
927
  const isCustom = Boolean(customConfig);
919
- const nextConfig = { ...parts, tokenProperty: tokenProperty3, order, isCustom, isGrid };
920
- propertyConfigs.set(cssProperty, [...currentConfigs, nextConfig]);
928
+ const layer = parts.variant ? `${isLogical ? LAYERS.SELECTORS_LOGICAL : LAYERS.SELECTORS}${layerIndex}` : `${isLogical ? LAYERS.LOGICAL : LAYERS.BASE}${layerIndex}`;
929
+ const nextConfig = { ...parts, tokenProperty: tokenProperty3, order, layer, isCustom, isGrid };
930
+ const sortedConfigs = [...currentConfigs, nextConfig].sort((a, b) => a.order - b.order);
931
+ propertyConfigs.set(cssProperty, sortedConfigs);
921
932
  }
922
933
  }
923
934
  return propertyConfigs;
@@ -986,8 +997,8 @@ var getThemeStyles = (styleSelector, selector, tokenValues, theme, config) => {
986
997
  return themeStyles + " " + customPropertyThemeStyles;
987
998
  };
988
999
  var getElementThemeStyles = (styleSelector, selector, themeValues) => {
989
- const splitChained = selector.split(",");
990
- const themeStyles = splitChained.map((selector2) => {
1000
+ const splitGroups = selector.split(",");
1001
+ const themeStyles = splitGroups.map((selector2) => {
991
1002
  const elemSelector = [styleSelector].flat().map((s) => `${selector2} ${s}`);
992
1003
  return `${selector2}, ${elemSelector} { ${stringify(themeValues)} }`;
993
1004
  });
@@ -1028,6 +1039,9 @@ function isCombinatorSelector(selector = "") {
1028
1039
  function isPseudoElementSelector(selector = "") {
1029
1040
  return /::/.test(selector);
1030
1041
  }
1042
+ function removePseudoElementSelector(selector = "") {
1043
+ return selector.replace(/::[a-z-]+$/, "");
1044
+ }
1031
1045
  function isChildSelector(selector = "") {
1032
1046
  return /&\s(.+)/.test(selector);
1033
1047
  }
@@ -1054,7 +1068,7 @@ function getParsedSelectors(propertySelector, selectorConfig, elementSelectors)
1054
1068
 
1055
1069
  // package.json
1056
1070
  var package_default = {
1057
- version: "0.0.88"};
1071
+ version: "0.0.89"};
1058
1072
 
1059
1073
  // src/ts-plugin/error-codes.ts
1060
1074
  var INVALID_PROPERTY = 2353;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tokenami",
3
- "version": "0.0.89",
3
+ "version": "0.0.90",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -45,11 +45,11 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@stitches/stringify": "^1.2.8",
48
- "@tokenami/config": "0.0.89",
49
- "@tokenami/ds": "0.0.89",
48
+ "@tokenami/config": "0.0.90",
49
+ "@tokenami/ds": "0.0.90",
50
50
  "acorn": "^8.11.3",
51
51
  "acorn-walk": "^8.3.2",
52
- "browserslist": "^4.24.4",
52
+ "browserslist": "^4.26.3",
53
53
  "cac": "^6.7.14",
54
54
  "chalk": "^5.2.0",
55
55
  "chokidar": "^3.5.3",
@@ -67,5 +67,5 @@
67
67
  "peerDependencies": {
68
68
  "typescript": ">= 5"
69
69
  },
70
- "gitHead": "d58887a218198093eb57fc0c7e222ec232393d6d"
70
+ "gitHead": "d6e7dfc673263649634b95ef9c422b845d53f584"
71
71
  }