@tempoxyz/ds 0.3.10 → 0.3.13

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 (210) hide show
  1. package/README.md +7 -6
  2. package/dist/docs/AGENTS.md +12 -0
  3. package/dist/docs/index.md +145 -0
  4. package/dist/docs/marketing/introduction/getting-started.md +241 -0
  5. package/dist/docs/product/components/accordion.md +489 -0
  6. package/dist/docs/product/components/address-card.md +147 -0
  7. package/dist/docs/product/components/agent-logo.md +194 -0
  8. package/dist/docs/product/components/alert-dialog.md +631 -0
  9. package/dist/docs/product/components/alert.md +448 -0
  10. package/dist/docs/product/components/amount-input.md +305 -0
  11. package/dist/docs/product/components/amount.md +794 -0
  12. package/dist/docs/product/components/app-shell.md +559 -0
  13. package/dist/docs/product/components/asset-chip.md +294 -0
  14. package/dist/docs/product/components/autocomplete.md +620 -0
  15. package/dist/docs/product/components/avatar.md +321 -0
  16. package/dist/docs/product/components/badge.md +339 -0
  17. package/dist/docs/product/components/badged-logo.md +116 -0
  18. package/dist/docs/product/components/banner.md +379 -0
  19. package/dist/docs/product/components/bar-chart.md +208 -0
  20. package/dist/docs/product/components/breadcrumbs.md +380 -0
  21. package/dist/docs/product/components/button-group.md +286 -0
  22. package/dist/docs/product/components/button.md +650 -0
  23. package/dist/docs/product/components/calendar.md +375 -0
  24. package/dist/docs/product/components/callout.md +96 -0
  25. package/dist/docs/product/components/checkbox-group.md +521 -0
  26. package/dist/docs/product/components/checkbox.md +467 -0
  27. package/dist/docs/product/components/choice-group.md +516 -0
  28. package/dist/docs/product/components/choicebox.md +641 -0
  29. package/dist/docs/product/components/code.md +100 -0
  30. package/dist/docs/product/components/combobox.md +939 -0
  31. package/dist/docs/product/components/container.md +257 -0
  32. package/dist/docs/product/components/copy-button.md +642 -0
  33. package/dist/docs/product/components/date-picker.md +514 -0
  34. package/dist/docs/product/components/dialog.md +1332 -0
  35. package/dist/docs/product/components/drawer.md +966 -0
  36. package/dist/docs/product/components/empty.md +340 -0
  37. package/dist/docs/product/components/field.md +570 -0
  38. package/dist/docs/product/components/fieldset.md +398 -0
  39. package/dist/docs/product/components/frame.md +434 -0
  40. package/dist/docs/product/components/gauge.md +299 -0
  41. package/dist/docs/product/components/get-started-visual.md +117 -0
  42. package/dist/docs/product/components/grid.md +288 -0
  43. package/dist/docs/product/components/hero-visual.md +155 -0
  44. package/dist/docs/product/components/hex.md +487 -0
  45. package/dist/docs/product/components/icon-tile.md +292 -0
  46. package/dist/docs/product/components/identicon.md +371 -0
  47. package/dist/docs/product/components/inline.md +233 -0
  48. package/dist/docs/product/components/inset.md +225 -0
  49. package/dist/docs/product/components/kbd.md +423 -0
  50. package/dist/docs/product/components/list-group.md +981 -0
  51. package/dist/docs/product/components/loading-dots.md +237 -0
  52. package/dist/docs/product/components/menu.md +934 -0
  53. package/dist/docs/product/components/native-select.md +204 -0
  54. package/dist/docs/product/components/network-logo.md +248 -0
  55. package/dist/docs/product/components/number-field.md +543 -0
  56. package/dist/docs/product/components/otp-field.md +616 -0
  57. package/dist/docs/product/components/pagination.md +516 -0
  58. package/dist/docs/product/components/popover.md +544 -0
  59. package/dist/docs/product/components/progress.md +388 -0
  60. package/dist/docs/product/components/qr.md +314 -0
  61. package/dist/docs/product/components/radio-group.md +528 -0
  62. package/dist/docs/product/components/secret-value.md +406 -0
  63. package/dist/docs/product/components/select.md +751 -0
  64. package/dist/docs/product/components/separator.md +379 -0
  65. package/dist/docs/product/components/sidebar-menu.md +922 -0
  66. package/dist/docs/product/components/skeleton.md +517 -0
  67. package/dist/docs/product/components/slider.md +539 -0
  68. package/dist/docs/product/components/snippet.md +424 -0
  69. package/dist/docs/product/components/spinner.md +216 -0
  70. package/dist/docs/product/components/split-bar.md +139 -0
  71. package/dist/docs/product/components/split-button.md +464 -0
  72. package/dist/docs/product/components/stack.md +299 -0
  73. package/dist/docs/product/components/status-chip.md +226 -0
  74. package/dist/docs/product/components/status-indicator.md +119 -0
  75. package/dist/docs/product/components/status-row.md +174 -0
  76. package/dist/docs/product/components/stepper.md +451 -0
  77. package/dist/docs/product/components/success-hero.md +157 -0
  78. package/dist/docs/product/components/surface.md +639 -0
  79. package/dist/docs/product/components/switch.md +472 -0
  80. package/dist/docs/product/components/table.md +967 -0
  81. package/dist/docs/product/components/tabs.md +627 -0
  82. package/dist/docs/product/components/tempo-logo.md +185 -0
  83. package/dist/docs/product/components/text-input.md +624 -0
  84. package/dist/docs/product/components/textarea.md +352 -0
  85. package/dist/docs/product/components/toast.md +535 -0
  86. package/dist/docs/product/components/token-logo.md +371 -0
  87. package/dist/docs/product/components/token.md +247 -0
  88. package/dist/docs/product/components/tooltip.md +490 -0
  89. package/dist/docs/product/components/verification-code.md +116 -0
  90. package/dist/docs/product/components/visual.md +249 -0
  91. package/dist/docs/product/components.md +203 -0
  92. package/dist/docs/product/foundations/accessibility.md +377 -0
  93. package/dist/docs/product/foundations/agents.md +150 -0
  94. package/dist/docs/product/foundations/color.md +522 -0
  95. package/dist/docs/product/foundations/content/tone.md +194 -0
  96. package/dist/docs/product/foundations/content/voice.md +194 -0
  97. package/dist/docs/product/foundations/content/writing-style.md +406 -0
  98. package/dist/docs/product/foundations/iconography.md +282 -0
  99. package/dist/docs/product/foundations/intent.md +360 -0
  100. package/dist/docs/product/foundations/layout.md +508 -0
  101. package/dist/docs/product/foundations/linter.md +496 -0
  102. package/dist/docs/product/foundations/motion.md +151 -0
  103. package/dist/docs/product/foundations/radius-and-padding.md +86 -0
  104. package/dist/docs/product/foundations/typography.md +266 -0
  105. package/dist/docs/product/introduction/faq.md +133 -0
  106. package/dist/docs/product/introduction/getting-started.md +377 -0
  107. package/dist/docs/product/patterns/blockchain-values.md +709 -0
  108. package/dist/docs/product/patterns/dashboards.md +638 -0
  109. package/dist/docs/product/patterns/destructive-actions.md +626 -0
  110. package/dist/docs/product/patterns/empty-states.md +612 -0
  111. package/dist/docs/product/patterns/errors-and-validation.md +808 -0
  112. package/dist/docs/product/patterns/feedback-and-status.md +518 -0
  113. package/dist/docs/product/patterns/forms.md +679 -0
  114. package/dist/docs/product/patterns/loading.md +630 -0
  115. package/dist/docs/product/patterns/navigation.md +397 -0
  116. package/dist/docs/product/patterns/payments.md +765 -0
  117. package/dist/docs/product/patterns/responsive-layout.md +997 -0
  118. package/dist/docs/product/patterns/tables-and-lists.md +964 -0
  119. package/dist/docs/product/products/tempo-console.md +671 -0
  120. package/dist/docs/product/products/tempo-performance.md +437 -0
  121. package/dist/docs/product/products/tempo-wallet.md +438 -0
  122. package/dist/marketing/index.d.ts +4 -0
  123. package/dist/marketing/index.d.ts.map +1 -0
  124. package/dist/marketing/index.js +4 -0
  125. package/dist/marketing/index.js.map +1 -0
  126. package/dist/marketing/index.js.zyzz.json +1 -0
  127. package/dist/marketing/vars.d.ts +907 -0
  128. package/dist/marketing/vars.d.ts.map +1 -0
  129. package/dist/marketing/vars.js +15 -0
  130. package/dist/marketing/vars.js.map +1 -0
  131. package/dist/marketing/vars.js.zyzz.json +1 -0
  132. package/dist/marketing/zyzz.config.d.ts +4512 -0
  133. package/dist/marketing/zyzz.config.d.ts.map +1 -0
  134. package/dist/marketing/zyzz.config.js +63 -0
  135. package/dist/marketing/zyzz.config.js.map +1 -0
  136. package/dist/marketing/zyzz.config.js.zyzz.json +1 -0
  137. package/dist/oxlint/index.d.ts +12 -1
  138. package/dist/oxlint/index.d.ts.map +1 -1
  139. package/dist/oxlint/index.js +39 -1
  140. package/dist/oxlint/index.js.map +1 -1
  141. package/dist/oxlint/internal/Docs.d.ts +9 -0
  142. package/dist/oxlint/internal/Docs.d.ts.map +1 -0
  143. package/dist/oxlint/internal/Docs.js +15 -0
  144. package/dist/oxlint/internal/Docs.js.map +1 -0
  145. package/dist/oxlint/internal/Imports.d.ts +1 -1
  146. package/dist/oxlint/internal/Imports.d.ts.map +1 -1
  147. package/dist/oxlint/internal/Imports.js +2 -0
  148. package/dist/oxlint/internal/Imports.js.map +1 -1
  149. package/dist/oxlint/internal/Styles.d.ts +40 -0
  150. package/dist/oxlint/internal/Styles.d.ts.map +1 -0
  151. package/dist/oxlint/internal/Styles.js +194 -0
  152. package/dist/oxlint/internal/Styles.js.map +1 -0
  153. package/dist/oxlint/internal/Tokens.d.ts +16 -0
  154. package/dist/oxlint/internal/Tokens.d.ts.map +1 -0
  155. package/dist/oxlint/internal/Tokens.js +39 -0
  156. package/dist/oxlint/internal/Tokens.js.map +1 -0
  157. package/dist/oxlint/rules/NoCrossSurface.d.ts +2 -2
  158. package/dist/oxlint/rules/NoCrossSurface.js +3 -3
  159. package/dist/oxlint/rules/NoCrossSurface.js.map +1 -1
  160. package/dist/oxlint/rules/NoCustomValues.d.ts +11 -0
  161. package/dist/oxlint/rules/NoCustomValues.d.ts.map +1 -0
  162. package/dist/oxlint/rules/NoCustomValues.js +150 -0
  163. package/dist/oxlint/rules/NoCustomValues.js.map +1 -0
  164. package/dist/oxlint/rules/NoSingleKeyShortcuts.d.ts +11 -0
  165. package/dist/oxlint/rules/NoSingleKeyShortcuts.d.ts.map +1 -0
  166. package/dist/oxlint/rules/NoSingleKeyShortcuts.js +158 -0
  167. package/dist/oxlint/rules/NoSingleKeyShortcuts.js.map +1 -0
  168. package/dist/oxlint/rules/PreferComponent.d.ts +3 -2
  169. package/dist/oxlint/rules/PreferComponent.d.ts.map +1 -1
  170. package/dist/oxlint/rules/PreferComponent.js +11 -4
  171. package/dist/oxlint/rules/PreferComponent.js.map +1 -1
  172. package/dist/oxlint/rules/PreferLayout.d.ts +9 -0
  173. package/dist/oxlint/rules/PreferLayout.d.ts.map +1 -0
  174. package/dist/oxlint/rules/PreferLayout.js +90 -0
  175. package/dist/oxlint/rules/PreferLayout.js.map +1 -0
  176. package/dist/oxlint/rules/PreferProgress.d.ts +9 -0
  177. package/dist/oxlint/rules/PreferProgress.d.ts.map +1 -0
  178. package/dist/oxlint/rules/PreferProgress.js +43 -0
  179. package/dist/oxlint/rules/PreferProgress.js.map +1 -0
  180. package/dist/oxlint/rules/PreferSurface.d.ts +9 -0
  181. package/dist/oxlint/rules/PreferSurface.d.ts.map +1 -0
  182. package/dist/oxlint/rules/PreferSurface.js +55 -0
  183. package/dist/oxlint/rules/PreferSurface.js.map +1 -0
  184. package/dist/oxlint/rules/RequireAccessibleName.d.ts.map +1 -1
  185. package/dist/oxlint/rules/RequireAccessibleName.js +3 -1
  186. package/dist/oxlint/rules/RequireAccessibleName.js.map +1 -1
  187. package/dist/oxlint/rules/RequireScrollRegion.d.ts +11 -0
  188. package/dist/oxlint/rules/RequireScrollRegion.d.ts.map +1 -0
  189. package/dist/oxlint/rules/RequireScrollRegion.js +71 -0
  190. package/dist/oxlint/rules/RequireScrollRegion.js.map +1 -0
  191. package/dist/web/icons/index.js.zyzz.json +1 -0
  192. package/package.json +6 -1
  193. package/src/marketing/README.md +21 -0
  194. package/src/marketing/index.ts +3 -0
  195. package/src/marketing/vars.ts +751 -0
  196. package/src/marketing/zyzz.config.ts +376 -0
  197. package/src/oxlint/index.ts +40 -1
  198. package/src/oxlint/internal/Docs.ts +18 -0
  199. package/src/oxlint/internal/Imports.ts +2 -1
  200. package/src/oxlint/internal/Styles.ts +240 -0
  201. package/src/oxlint/internal/Tokens.ts +43 -0
  202. package/src/oxlint/rules/NoCrossSurface.ts +3 -3
  203. package/src/oxlint/rules/NoCustomValues.ts +170 -0
  204. package/src/oxlint/rules/NoSingleKeyShortcuts.ts +190 -0
  205. package/src/oxlint/rules/PreferComponent.ts +11 -4
  206. package/src/oxlint/rules/PreferLayout.ts +96 -0
  207. package/src/oxlint/rules/PreferProgress.ts +49 -0
  208. package/src/oxlint/rules/PreferSurface.ts +70 -0
  209. package/src/oxlint/rules/RequireAccessibleName.ts +3 -1
  210. package/src/oxlint/rules/RequireScrollRegion.ts +92 -0
@@ -15,6 +15,17 @@ export type Config = {
15
15
  /** Rule severities, with options as the second tuple member. */
16
16
  rules: Record<string, Severity | [Severity, ...unknown[]]>;
17
17
  };
18
+ /**
19
+ * Enables the TDS and Zyzz rules for a marketing site that renders `@tempoxyz/ds/marketing`.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import { marketing } from '@tempoxyz/ds/oxlint'
24
+ *
25
+ * export default defineConfig({ lint: marketing })
26
+ * ```
27
+ */
28
+ export declare const marketing: Config;
18
29
  /**
19
30
  * Enables the TDS and Zyzz rules for an app that renders `@tempoxyz/ds/mobile`.
20
31
  *
@@ -37,7 +48,7 @@ export declare const mobile: Config;
37
48
  * ```
38
49
  */
39
50
  export declare const web: Config;
40
- /** Register through `jsPlugins` as `tds`, then enable `tds/*` rules or spread `web` or `mobile`. */
51
+ /** Register through `jsPlugins` as `tds`, then enable `tds/*` rules or spread `web`, `mobile`, or `marketing`. */
41
52
  declare const plugin: Plugin;
42
53
  export default plugin;
43
54
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oxlint/index.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAO7C,+BAA+B;AAC/B,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;AAE/C;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,oEAAoE;IACpE,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAChD,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,CAAC,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAA;CAC3D,CAAA;AAaD;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,EAAE,MASpB,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,GAAG,EAAE,MAUjB,CAAA;AAED,oGAAoG;AACpG,QAAA,MAAM,MAAM,EAAE,MASb,CAAA;eAEc,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oxlint/index.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAa7C,+BAA+B;AAC/B,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;AAE/C;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,oEAAoE;IACpE,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAChD,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,CAAC,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAA;CAC3D,CAAA;AAaD;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,EAAE,MASvB,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,EAAE,MASpB,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,GAAG,EAAE,MAgBjB,CAAA;AAED,kHAAkH;AAClH,QAAA,MAAM,MAAM,EAAE,MAeb,CAAA;eAEc,MAAM"}
@@ -1,8 +1,14 @@
1
1
  import * as NoCrossSurface from './rules/NoCrossSurface.js';
2
+ import * as NoCustomValues from './rules/NoCustomValues.js';
2
3
  import * as NoInternalImports from './rules/NoInternalImports.js';
3
4
  import * as NoRawValues from './rules/NoRawValues.js';
5
+ import * as NoSingleKeyShortcuts from './rules/NoSingleKeyShortcuts.js';
4
6
  import * as PreferComponent from './rules/PreferComponent.js';
7
+ import * as PreferLayout from './rules/PreferLayout.js';
8
+ import * as PreferProgress from './rules/PreferProgress.js';
9
+ import * as PreferSurface from './rules/PreferSurface.js';
5
10
  import * as RequireAccessibleName from './rules/RequireAccessibleName.js';
11
+ import * as RequireScrollRegion from './rules/RequireScrollRegion.js';
6
12
  const plugins = [
7
13
  { name: 'tds', specifier: '@tempoxyz/ds/oxlint' },
8
14
  { name: 'zyzz', specifier: 'zyzz/oxlint' },
@@ -12,6 +18,26 @@ const zyzz = {
12
18
  'zyzz/no-unused': 'warn',
13
19
  'zyzz/valid-styles': 'error',
14
20
  };
21
+ /**
22
+ * Enables the TDS and Zyzz rules for a marketing site that renders `@tempoxyz/ds/marketing`.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { marketing } from '@tempoxyz/ds/oxlint'
27
+ *
28
+ * export default defineConfig({ lint: marketing })
29
+ * ```
30
+ */
31
+ export const marketing = {
32
+ jsPlugins: plugins,
33
+ rules: {
34
+ 'tds/no-cross-surface': ['error', { surface: 'marketing' }],
35
+ 'tds/no-internal-imports': 'error',
36
+ 'tds/no-raw-values': 'warn',
37
+ 'tds/require-accessible-name': 'error',
38
+ ...zyzz,
39
+ },
40
+ };
15
41
  /**
16
42
  * Enables the TDS and Zyzz rules for an app that renders `@tempoxyz/ds/mobile`.
17
43
  *
@@ -46,22 +72,34 @@ export const web = {
46
72
  jsPlugins: plugins,
47
73
  rules: {
48
74
  'tds/no-cross-surface': ['error', { surface: 'web' }],
75
+ 'tds/no-custom-values': 'warn',
49
76
  'tds/no-internal-imports': 'error',
50
77
  'tds/no-raw-values': 'warn',
78
+ 'tds/no-single-key-shortcuts': 'warn',
51
79
  'tds/prefer-component': 'warn',
80
+ 'tds/prefer-layout': 'warn',
81
+ 'tds/prefer-progress': 'warn',
82
+ 'tds/prefer-surface': 'warn',
52
83
  'tds/require-accessible-name': 'error',
84
+ 'tds/require-scroll-region': 'warn',
53
85
  ...zyzz,
54
86
  },
55
87
  };
56
- /** Register through `jsPlugins` as `tds`, then enable `tds/*` rules or spread `web` or `mobile`. */
88
+ /** Register through `jsPlugins` as `tds`, then enable `tds/*` rules or spread `web`, `mobile`, or `marketing`. */
57
89
  const plugin = {
58
90
  meta: { name: 'tds' },
59
91
  rules: {
60
92
  'no-cross-surface': NoCrossSurface.rule,
93
+ 'no-custom-values': NoCustomValues.rule,
61
94
  'no-internal-imports': NoInternalImports.rule,
62
95
  'no-raw-values': NoRawValues.rule,
96
+ 'no-single-key-shortcuts': NoSingleKeyShortcuts.rule,
63
97
  'prefer-component': PreferComponent.rule,
98
+ 'prefer-layout': PreferLayout.rule,
99
+ 'prefer-progress': PreferProgress.rule,
100
+ 'prefer-surface': PreferSurface.rule,
64
101
  'require-accessible-name': RequireAccessibleName.rule,
102
+ 'require-scroll-region': RequireScrollRegion.rule,
65
103
  },
66
104
  };
67
105
  export default plugin;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oxlint/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,cAAc,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,iBAAiB,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,qBAAqB,MAAM,kCAAkC,CAAA;AAgBzE,MAAM,OAAO,GAAwB;IACnC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE;IACjD,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE;CAC3C,CAAA;AAED,MAAM,IAAI,GAAoB;IAC5B,2BAA2B,EAAE,OAAO;IACpC,gBAAgB,EAAE,MAAM;IACxB,mBAAmB,EAAE,OAAO;CAC7B,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,SAAS,EAAE,OAAO;IAClB,KAAK,EAAE;QACL,sBAAsB,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QACxD,yBAAyB,EAAE,OAAO;QAClC,mBAAmB,EAAE,MAAM;QAC3B,6BAA6B,EAAE,OAAO;QACtC,GAAG,IAAI;KACR;CACF,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,GAAG,GAAW;IACzB,SAAS,EAAE,OAAO;IAClB,KAAK,EAAE;QACL,sBAAsB,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACrD,yBAAyB,EAAE,OAAO;QAClC,mBAAmB,EAAE,MAAM;QAC3B,sBAAsB,EAAE,MAAM;QAC9B,6BAA6B,EAAE,OAAO;QACtC,GAAG,IAAI;KACR;CACF,CAAA;AAED,oGAAoG;AACpG,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IACrB,KAAK,EAAE;QACL,kBAAkB,EAAE,cAAc,CAAC,IAAI;QACvC,qBAAqB,EAAE,iBAAiB,CAAC,IAAI;QAC7C,eAAe,EAAE,WAAW,CAAC,IAAI;QACjC,kBAAkB,EAAE,eAAe,CAAC,IAAI;QACxC,yBAAyB,EAAE,qBAAqB,CAAC,IAAI;KACtD;CACF,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oxlint/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** Builds links to the Tempo Design System docs that lint messages cite. @module */
2
+ /**
3
+ * Returns the docs page of a component, such as `https://ds.tehq.dev/product/components/list-group`
4
+ * for `ListGroup`. A part, such as `ListGroup.Meter`, links the page of its component.
5
+ */
6
+ export declare function component(name: string): string;
7
+ /** Returns a docs page by its path under `/product`, such as `foundations/layout#spacing`. */
8
+ export declare function page(path: string): string;
9
+ //# sourceMappingURL=Docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Docs.d.ts","sourceRoot":"","sources":["../../../src/oxlint/internal/Docs.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAIpF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED,8FAA8F;AAC9F,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzC"}
@@ -0,0 +1,15 @@
1
+ /** Builds links to the Tempo Design System docs that lint messages cite. @module */
2
+ const origin = 'https://ds.tehq.dev/product';
3
+ /**
4
+ * Returns the docs page of a component, such as `https://ds.tehq.dev/product/components/list-group`
5
+ * for `ListGroup`. A part, such as `ListGroup.Meter`, links the page of its component.
6
+ */
7
+ export function component(name) {
8
+ const [head = name] = name.split('.');
9
+ return `${origin}/components/${head.replace(/(?<=[\da-z])(?=[A-Z])/g, '-').toLowerCase()}`;
10
+ }
11
+ /** Returns a docs page by its path under `/product`, such as `foundations/layout#spacing`. */
12
+ export function page(path) {
13
+ return `${origin}/${path}`;
14
+ }
15
+ //# sourceMappingURL=Docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Docs.js","sourceRoot":"","sources":["../../../src/oxlint/internal/Docs.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,MAAM,MAAM,GAAG,6BAA6B,CAAA;AAE5C;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAErC,OAAO,GAAG,MAAM,eAAe,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAA;AAC5F,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAA;AAC5B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /** Classifies `@tempoxyz/ds` import specifiers and visits every static module reference in a file. @module */
2
2
  import type { ESTree, Visitor } from '@oxlint/plugins';
3
3
  /** A library surface, named after the entrypoint that ships it. */
4
- export type Surface = 'mobile' | 'web';
4
+ export type Surface = 'marketing' | 'mobile' | 'web';
5
5
  /** The published package name, `@tempoxyz/ds`. */
6
6
  export declare const name: string;
7
7
  /** Returns whether `source` names the package or one of its subpaths. */
@@ -1 +1 @@
1
- {"version":3,"file":"Imports.d.ts","sourceRoot":"","sources":["../../../src/oxlint/internal/Imports.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAC9G,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGtD,mEAAmE;AACnE,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;AAOtC,kDAAkD;AAClD,eAAO,MAAM,IAAI,QAAgB,CAAA;AAEjC,yEAAyE;AACzE,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED,oGAAoG;AACpG,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,oGAAoG;AACpG,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAQ3D;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAsBjD;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,oEAAoE;IACpE,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,CAAA;CAC5D"}
1
+ {"version":3,"file":"Imports.d.ts","sourceRoot":"","sources":["../../../src/oxlint/internal/Imports.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAC9G,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGtD,mEAAmE;AACnE,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAA;AAOpD,kDAAkD;AAClD,eAAO,MAAM,IAAI,QAAgB,CAAA;AAEjC,yEAAyE;AACzE,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED,oGAAoG;AACpG,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,oGAAoG;AACpG,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAS3D;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAsBjD;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,oEAAoE;IACpE,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,CAAA;CAC5D"}
@@ -16,6 +16,8 @@ export function surface(source) {
16
16
  if (!published(source))
17
17
  return undefined;
18
18
  const subpath = source.slice(name.length);
19
+ if (subpath === '/marketing' || subpath.startsWith('/marketing/'))
20
+ return 'marketing';
19
21
  if (subpath === '/mobile' || subpath.startsWith('/mobile/'))
20
22
  return 'mobile';
21
23
  if (subpath === '' || subpath.startsWith('/fonts/') || subpath.startsWith('/icons'))
@@ -1 +1 @@
1
- {"version":3,"file":"Imports.js","sourceRoot":"","sources":["../../../src/oxlint/internal/Imports.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAKrC,gGAAgG;AAChG,MAAM,QAAQ,GAAuD,MAAM,CAAC,aAAa,CACvF,OAAO,IAAI,CAAC,GAAG,CAChB,CAAC,uBAAuB,CAAC,CAAA;AAE1B,kDAAkD;AAClD,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;AAEjC,yEAAyE;AACzE,MAAM,UAAU,KAAK,CAAC,MAAc;IAClC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;AACzD,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAC1F,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,OAAO,CAAC,MAAc;IACpC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IAExC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEzC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC5E,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IACjG,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,EAAkB;IACtC,SAAS,OAAO,CAAC,IAAoC;QACnD,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC;IAED,OAAO;QACL,oBAAoB,CAAC,IAAI;YACvB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QACD,sBAAsB,CAAC,IAAI;YACzB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QACD,iBAAiB,CAAC,IAAI;YACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QACD,gBAAgB,CAAC,IAAI;YACnB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QACD,YAAY,CAAC,IAAI;YACf,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"Imports.js","sourceRoot":"","sources":["../../../src/oxlint/internal/Imports.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAKrC,gGAAgG;AAChG,MAAM,QAAQ,GAAuD,MAAM,CAAC,aAAa,CACvF,OAAO,IAAI,CAAC,GAAG,CAChB,CAAC,uBAAuB,CAAC,CAAA;AAE1B,kDAAkD;AAClD,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;AAEjC,yEAAyE;AACzE,MAAM,UAAU,KAAK,CAAC,MAAc;IAClC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;AACzD,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAC1F,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,OAAO,CAAC,MAAc;IACpC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IAExC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEzC,IAAI,OAAO,KAAK,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,WAAW,CAAA;IACrF,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC5E,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IACjG,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,EAAkB;IACtC,SAAS,OAAO,CAAC,IAAoC;QACnD,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC;IAED,OAAO;QACL,oBAAoB,CAAC,IAAI;YACvB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QACD,sBAAsB,CAAC,IAAI;YACzB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QACD,iBAAiB,CAAC,IAAI;YACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QACD,gBAAgB,CAAC,IAAI;YACnB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QACD,YAAY,CAAC,IAAI;YACf,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,40 @@
1
+ /** Reads the style declarations that native JSX elements apply in a file. @module */
2
+ import type { ESTree, Visitor } from '@oxlint/plugins';
3
+ /** Declarations keyed by CSS property, with each value as written. */
4
+ export type Declarations = ReadonlyMap<string, ESTree.Node>;
5
+ /** A native element, such as a `div`, and the declarations it applies. */
6
+ export type Element = {
7
+ /**
8
+ * Declarations from the `style()` and `variants()` definitions that its spreads call, then
9
+ * from its inline `style` prop, which wins.
10
+ */
11
+ declarations: Declarations;
12
+ /** The opening element. */
13
+ node: ESTree.JSXOpeningElement;
14
+ /** Whether a `className` or a spread that is not a known style call can add declarations. */
15
+ open: boolean;
16
+ /** Whether a spread that is not a known style call can add attributes. */
17
+ spread: boolean;
18
+ /** The tag name, such as `div`. */
19
+ tag: string;
20
+ };
21
+ /** Returns the Zyzz helper that a callee names, `style` or `variants`, directly or as a member of a config. */
22
+ export declare function helper(node: ESTree.Node): 'style' | 'variants' | undefined;
23
+ /** Returns the property name of a non-computed object key. */
24
+ export declare function key(property: ESTree.Node): string | undefined;
25
+ /**
26
+ * Returns the text of a literal value without its `!custom` suffix, such as `16px` for
27
+ * `'16px !custom'` and `2` for `2`. Returns `undefined` for a computed value.
28
+ */
29
+ export declare function text(node: ESTree.Node | undefined): string | undefined;
30
+ /**
31
+ * Returns a visitor that calls `fn` once the file is read, with each native element outside a
32
+ * `render` prop. A spread resolves when it calls a `style()` or `variants()` definition in the
33
+ * same file by name, such as `{...styles.card()}` for `styles.card` in `namespace styles`.
34
+ */
35
+ export declare function visit(fn: visit.Callback): Visitor;
36
+ export declare namespace visit {
37
+ /** Receives each native element once the whole file is read. */
38
+ type Callback = (element: Element) => void;
39
+ }
40
+ //# sourceMappingURL=Styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../src/oxlint/internal/Styles.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEtD,sEAAsE;AACtE,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;AAE3D,0EAA0E;AAC1E,MAAM,MAAM,OAAO,GAAG;IACpB;;;OAGG;IACH,YAAY,EAAE,YAAY,CAAA;IAC1B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAA;IAC9B,6FAA6F;IAC7F,IAAI,EAAE,OAAO,CAAA;IACb,0EAA0E;IAC1E,MAAM,EAAE,OAAO,CAAA;IACf,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAWD,+GAA+G;AAC/G,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAS1E;AAED,8DAA8D;AAC9D,wBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,GAAG,SAAS,CAK7D;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAoBtE;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CA8EjD;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,gEAAgE;IAChE,KAAK,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CAC3C"}
@@ -0,0 +1,194 @@
1
+ /** Returns the Zyzz helper that a callee names, `style` or `variants`, directly or as a member of a config. */
2
+ export function helper(node) {
3
+ const name = (() => {
4
+ if (node.type === 'Identifier')
5
+ return node.name;
6
+ if (node.type === 'MemberExpression' && !node.computed && node.property.type === 'Identifier')
7
+ return node.property.name;
8
+ return undefined;
9
+ })();
10
+ return name === 'style' || name === 'variants' ? name : undefined;
11
+ }
12
+ /** Returns the property name of a non-computed object key. */
13
+ export function key(property) {
14
+ if (property.type !== 'Property' || property.computed)
15
+ return undefined;
16
+ if (property.key.type === 'Identifier')
17
+ return property.key.name;
18
+ if (property.key.type === 'Literal')
19
+ return String(property.key.value);
20
+ return undefined;
21
+ }
22
+ /**
23
+ * Returns the text of a literal value without its `!custom` suffix, such as `16px` for
24
+ * `'16px !custom'` and `2` for `2`. Returns `undefined` for a computed value.
25
+ */
26
+ export function text(node) {
27
+ if (node?.type === 'UnaryExpression' && node.operator === '-') {
28
+ const value = text(node.argument);
29
+ return value === undefined ? undefined : `-${value}`;
30
+ }
31
+ if (node?.type === 'Literal' &&
32
+ (typeof node.value === 'number' || typeof node.value === 'string'))
33
+ return String(node.value)
34
+ .replace(/\s*!custom$/, '')
35
+ .trim();
36
+ if (node?.type === 'TemplateLiteral' && node.expressions.length === 0)
37
+ return node.quasis
38
+ .map((quasi) => quasi.value.cooked ?? '')
39
+ .join('')
40
+ .replace(/\s*!custom$/, '')
41
+ .trim();
42
+ return undefined;
43
+ }
44
+ /**
45
+ * Returns a visitor that calls `fn` once the file is read, with each native element outside a
46
+ * `render` prop. A spread resolves when it calls a `style()` or `variants()` definition in the
47
+ * same file by name, such as `{...styles.card()}` for `styles.card` in `namespace styles`.
48
+ */
49
+ export function visit(fn) {
50
+ const definitions = new Map();
51
+ const pending = [];
52
+ return {
53
+ CallExpression(node) {
54
+ const kind = helper(node.callee);
55
+ const argument = node.arguments[0];
56
+ if (!kind || argument?.type !== 'ObjectExpression')
57
+ return;
58
+ const name = path(node);
59
+ if (name)
60
+ definitions.set(name, kind === 'style' ? read(argument) : variants(argument));
61
+ },
62
+ JSXOpeningElement(node) {
63
+ if (node.name.type !== 'JSXIdentifier' || !/^[a-z]/.test(node.name.name))
64
+ return;
65
+ for (let parent = node.parent; parent; parent = parent.parent)
66
+ if (parent.type === 'JSXAttribute' &&
67
+ parent.name.type === 'JSXIdentifier' &&
68
+ parent.name.name === 'render')
69
+ return;
70
+ const calls = [];
71
+ const inline = new Map();
72
+ let open = false;
73
+ let spread = false;
74
+ for (const attribute of node.attributes) {
75
+ if (attribute.type === 'JSXSpreadAttribute') {
76
+ const call = attribute.argument.type === 'CallExpression'
77
+ ? name(attribute.argument.callee)
78
+ : undefined;
79
+ if (call)
80
+ calls.push(call);
81
+ else
82
+ spread = true;
83
+ continue;
84
+ }
85
+ if (attribute.name.type !== 'JSXIdentifier')
86
+ continue;
87
+ if (attribute.name.name === 'className')
88
+ open = true;
89
+ if (attribute.name.name !== 'style' || attribute.value?.type !== 'JSXExpressionContainer')
90
+ continue;
91
+ const expression = attribute.value.expression;
92
+ const objects = expression.type === 'ArrayExpression' ? expression.elements : [expression];
93
+ for (const object of objects)
94
+ if (object?.type === 'ObjectExpression')
95
+ for (const [field, value] of read(object))
96
+ inline.set(field, value);
97
+ }
98
+ pending.push({ calls, inline, node, open, spread, tag: node.name.name });
99
+ },
100
+ 'Program:exit'() {
101
+ for (const element of pending) {
102
+ const declarations = new Map();
103
+ let open = element.open || element.spread;
104
+ let spread = element.spread;
105
+ for (const call of element.calls) {
106
+ const definition = definitions.get(call);
107
+ if (!definition) {
108
+ open = true;
109
+ spread = true;
110
+ continue;
111
+ }
112
+ for (const [field, value] of definition)
113
+ declarations.set(field, value);
114
+ }
115
+ for (const [field, value] of element.inline)
116
+ declarations.set(field, value);
117
+ fn({ declarations, node: element.node, open, spread, tag: element.tag });
118
+ }
119
+ },
120
+ };
121
+ }
122
+ // An identifier or a chain of identifiers, such as `styles.card`.
123
+ function name(node) {
124
+ if (node.type === 'Identifier')
125
+ return node.name;
126
+ if (node.type !== 'MemberExpression' || node.computed || node.property.type !== 'Identifier')
127
+ return undefined;
128
+ const object = name(node.object);
129
+ return object === undefined ? undefined : `${object}.${node.property.name}`;
130
+ }
131
+ // The name a definition is applied by: its variable, its object keys, and its namespaces.
132
+ function path(node) {
133
+ const parts = [];
134
+ let current = node;
135
+ for (let parent = current.parent; parent; current = parent, parent = parent.parent) {
136
+ if (parent.type === 'Property') {
137
+ const property = key(parent);
138
+ if (property === undefined || parent.value !== current)
139
+ return undefined;
140
+ parts.unshift(property);
141
+ continue;
142
+ }
143
+ if (parent.type === 'ObjectExpression')
144
+ continue;
145
+ if (parent.type !== 'VariableDeclarator' || parent.id.type !== 'Identifier')
146
+ return undefined;
147
+ parts.unshift(parent.id.name);
148
+ break;
149
+ }
150
+ if (parts.length === 0)
151
+ return undefined;
152
+ for (let parent = current.parent; parent; parent = parent.parent)
153
+ if (parent.type === 'TSModuleDeclaration' && parent.id.type === 'Identifier')
154
+ parts.unshift(parent.id.name);
155
+ return parts.join('.');
156
+ }
157
+ // Top-level declarations. Nested objects, such as `selectors` and queries, apply conditionally.
158
+ function read(object) {
159
+ const declarations = new Map();
160
+ for (const property of object.properties) {
161
+ const field = key(property);
162
+ if (field === undefined || property.type !== 'Property')
163
+ continue;
164
+ if (property.value.type === 'ObjectExpression')
165
+ continue;
166
+ declarations.set(field, property.value);
167
+ }
168
+ return declarations;
169
+ }
170
+ // The base declarations of a recipe, then the declarations of every option of every axis.
171
+ function variants(object) {
172
+ const declarations = new Map();
173
+ for (const property of object.properties) {
174
+ if (property.type !== 'Property' || property.value.type !== 'ObjectExpression')
175
+ continue;
176
+ const section = key(property);
177
+ if (section === 'base')
178
+ for (const [field, value] of read(property.value))
179
+ declarations.set(field, value);
180
+ if (section !== 'variants')
181
+ continue;
182
+ for (const axis of property.value.properties) {
183
+ if (axis.type !== 'Property' || axis.value.type !== 'ObjectExpression')
184
+ continue;
185
+ for (const option of axis.value.properties)
186
+ if (option.type === 'Property' && option.value.type === 'ObjectExpression')
187
+ for (const [field, value] of read(option.value))
188
+ if (!declarations.has(field))
189
+ declarations.set(field, value);
190
+ }
191
+ }
192
+ return declarations;
193
+ }
194
+ //# sourceMappingURL=Styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Styles.js","sourceRoot":"","sources":["../../../src/oxlint/internal/Styles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The Web token scales that lint messages suggest, as `src/web/vars.ts` defines them. The published
3
+ * `vars` module compiles to an empty object, so the plugin keeps its own copy of these scales.
4
+ * @module
5
+ */
6
+ /** Container widths, keyed by their size in px. */
7
+ export declare const container: readonly number[];
8
+ /** Returns the token key of a spacing or container size in px, such as `0-5` for 0.5. */
9
+ export declare function key(px: number): string;
10
+ /** Corner radii in px, by Platform name. `full` takes the spacing step `999`. */
11
+ export declare const radius: Readonly<Record<string, number>>;
12
+ /** Spacing steps in px. A key writes a fraction with a hyphen, such as `0-5` for 0.5px. */
13
+ export declare const spacing: readonly number[];
14
+ /** Stacking layers, from the app shell overlay up to toasts. */
15
+ export declare const zIndex: Readonly<Record<string, number>>;
16
+ //# sourceMappingURL=Tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tokens.d.ts","sourceRoot":"","sources":["../../../src/oxlint/internal/Tokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mDAAmD;AACnD,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAEtC,CAAA;AAED,yFAAyF;AACzF,wBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEtC;AAED,iFAAiF;AACjF,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWnD,CAAA;AAED,2FAA2F;AAC3F,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAGpC,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKnD,CAAA"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The Web token scales that lint messages suggest, as `src/web/vars.ts` defines them. The published
3
+ * `vars` module compiles to an empty object, so the plugin keeps its own copy of these scales.
4
+ * @module
5
+ */
6
+ /** Container widths, keyed by their size in px. */
7
+ export const container = [
8
+ 256, 288, 320, 384, 448, 512, 576, 672, 768, 896, 1024, 1152, 1280,
9
+ ];
10
+ /** Returns the token key of a spacing or container size in px, such as `0-5` for 0.5. */
11
+ export function key(px) {
12
+ return String(px).replace('.', '-');
13
+ }
14
+ /** Corner radii in px, by Platform name. `full` takes the spacing step `999`. */
15
+ export const radius = {
16
+ '2xl': 64,
17
+ '2xs': 8,
18
+ '3xs': 4,
19
+ full: 999,
20
+ lg: 32,
21
+ md: 24,
22
+ none: 0,
23
+ sm: 16,
24
+ xl: 40,
25
+ xs: 12,
26
+ };
27
+ /** Spacing steps in px. A key writes a fraction with a hyphen, such as `0-5` for 0.5px. */
28
+ export const spacing = [
29
+ -24, -20, -16, -12, -10, -8, -6, -4, 0, 0.5, 1, 1.5, 2, 3, 4, 6, 8, 10, 12, 16, 20, 24, 28, 32,
30
+ 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 100, 120, 140, 160, 180, 200, 240, 280, 320, 360, 999,
31
+ ];
32
+ /** Stacking layers, from the app shell overlay up to toasts. */
33
+ export const zIndex = {
34
+ modal: 60,
35
+ overlay: 40,
36
+ popover: 50,
37
+ toast: 1000,
38
+ };
39
+ //# sourceMappingURL=Tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tokens.js","sourceRoot":"","sources":["../../../src/oxlint/internal/Tokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mDAAmD;AACnD,MAAM,CAAC,MAAM,SAAS,GAAsB;IAC1C,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACnE,CAAA;AAED,yFAAyF;AACzF,MAAM,UAAU,GAAG,CAAC,EAAU;IAC5B,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AACrC,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,MAAM,GAAqC;IACtD,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,GAAG;IACT,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,IAAI,EAAE,CAAC;IACP,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;CACP,CAAA;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,OAAO,GAAsB;IACxC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9F,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CAC9F,CAAA;AAED,gEAAgE;AAChE,MAAM,CAAC,MAAM,MAAM,GAAqC;IACtD,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,IAAI;CACZ,CAAA"}
@@ -2,8 +2,8 @@
2
2
  import type { Rule } from '@oxlint/plugins';
3
3
  import * as Imports from '../internal/Imports.ts';
4
4
  /**
5
- * Reports an import from the other surface. With `surface` set, every import from the other surface
6
- * is reported. Without it, the rule reports a file that imports from both surfaces.
5
+ * Reports an import from another surface. With `surface` set, every import from another surface
6
+ * is reported. Without it, the rule reports a file that imports from more than one surface.
7
7
  */
8
8
  export declare const rule: Rule;
9
9
  export declare namespace rule {
@@ -1,7 +1,7 @@
1
1
  import * as Imports from '../internal/Imports.js';
2
2
  /**
3
- * Reports an import from the other surface. With `surface` set, every import from the other surface
4
- * is reported. Without it, the rule reports a file that imports from both surfaces.
3
+ * Reports an import from another surface. With `surface` set, every import from another surface
4
+ * is reported. Without it, the rule reports a file that imports from more than one surface.
5
5
  */
6
6
  export const rule = {
7
7
  meta: {
@@ -13,7 +13,7 @@ export const rule = {
13
13
  schema: [
14
14
  {
15
15
  additionalProperties: false,
16
- properties: { surface: { enum: ['mobile', 'web'], type: 'string' } },
16
+ properties: { surface: { enum: ['marketing', 'mobile', 'web'], type: 'string' } },
17
17
  type: 'object',
18
18
  },
19
19
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"NoCrossSurface.js","sourceRoot":"","sources":["../../../src/oxlint/rules/NoCrossSurface.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAS;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE;QACnE,QAAQ,EAAE;YACR,UAAU,EACR,2FAA2F;YAC7F,KAAK,EACH,+FAA+F;SAClG;QACD,MAAM,EAAE;YACN;gBACE,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBACpE,IAAI,EAAE,QAAQ;aACf;SACF;QACD,IAAI,EAAE,SAAS;KAChB;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAA6B,CAAA;QAI9D,MAAM,UAAU,GAAgB,EAAE,CAAA;QAElC,OAAO;YACL,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBAEvC,IAAI,CAAC,OAAO;oBAAE,OAAM;gBACpB,IAAI,OAAO,EAAE,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC,OAAO;oBACjD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;wBAC1D,SAAS,EAAE,YAAY;wBACvB,IAAI;qBACL,CAAC,CAAA;gBACJ,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;YAC5C,CAAC,CAAC;YACF,cAAc;gBACZ,IAAI,OAAO,EAAE,OAAO;oBAAE,OAAM;gBAE5B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;gBAE3B,IAAI,CAAC,KAAK;oBAAE,OAAM;gBAClB,KAAK,MAAM,SAAS,IAAI,UAAU;oBAChC,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;wBACrC,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;4BACpF,SAAS,EAAE,OAAO;4BAClB,IAAI,EAAE,SAAS,CAAC,IAAI;yBACrB,CAAC,CAAA;YACR,CAAC;SACF,CAAA;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"NoCrossSurface.js","sourceRoot":"","sources":["../../../src/oxlint/rules/NoCrossSurface.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAS;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE;QACnE,QAAQ,EAAE;YACR,UAAU,EACR,2FAA2F;YAC7F,KAAK,EACH,+FAA+F;SAClG;QACD,MAAM,EAAE;YACN;gBACE,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBACjF,IAAI,EAAE,QAAQ;aACf;SACF;QACD,IAAI,EAAE,SAAS;KAChB;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAA6B,CAAA;QAI9D,MAAM,UAAU,GAAgB,EAAE,CAAA;QAElC,OAAO;YACL,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBAEvC,IAAI,CAAC,OAAO;oBAAE,OAAM;gBACpB,IAAI,OAAO,EAAE,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC,OAAO;oBACjD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;wBAC1D,SAAS,EAAE,YAAY;wBACvB,IAAI;qBACL,CAAC,CAAA;gBACJ,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;YAC5C,CAAC,CAAC;YACF,cAAc;gBACZ,IAAI,OAAO,EAAE,OAAO;oBAAE,OAAM;gBAE5B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;gBAE3B,IAAI,CAAC,KAAK;oBAAE,OAAM;gBAClB,KAAK,MAAM,SAAS,IAAI,UAAU;oBAChC,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;wBACrC,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;4BACpF,SAAS,EAAE,OAAO;4BAClB,IAAI,EAAE,SAAS,CAAC,IAAI;yBACrB,CAAC,CAAA;YACR,CAAC;SACF,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,11 @@
1
+ /** Finds `!custom` lengths and layers in Zyzz styles that equal a Web token. @module */
2
+ import type { Rule } from '@oxlint/plugins';
3
+ /**
4
+ * Reports a `!custom` value in a `style()` or `variants()` definition that equals a Web token:
5
+ * a px or rem length on a spacing, radius, size, or container property that equals a step of its
6
+ * scale, and a number on `zIndex` that equals a layer. The message names the token to use.
7
+ * A `!custom` value that no token equals, such as `'13px !custom'`, is the sanctioned escape
8
+ * hatch and does not report.
9
+ */
10
+ export declare const rule: Rule;
11
+ //# sourceMappingURL=NoCustomValues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoCustomValues.d.ts","sourceRoot":"","sources":["../../../src/oxlint/rules/NoCustomValues.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,KAAK,EAAU,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAsCnD;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,EAAE,IA2HlB,CAAA"}