@vanilla-bean/components 1.0.0

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 (147) hide show
  1. package/Component/Component.js +598 -0
  2. package/Component/Component.scenarios.js +88 -0
  3. package/Component/Component.test.js +717 -0
  4. package/Component/README.md +455 -0
  5. package/Component/index.js +3 -0
  6. package/Component/observeElementConnection.js +52 -0
  7. package/Component/observeElementConnection.test.js +121 -0
  8. package/Elem/Elem.js +304 -0
  9. package/Elem/Elem.test.js +679 -0
  10. package/Elem/README.md +373 -0
  11. package/Elem/index.js +1 -0
  12. package/FontWithASyntaxHighlighter-Regular.woff2 +0 -0
  13. package/LICENSE +21 -0
  14. package/README.md +413 -0
  15. package/components/BottomSheet/BottomSheet.js +192 -0
  16. package/components/BottomSheet/BottomSheet.lld.md +25 -0
  17. package/components/BottomSheet/README.md +66 -0
  18. package/components/BottomSheet/index.js +1 -0
  19. package/components/Button/Button.js +53 -0
  20. package/components/Button/Button.lld.md +21 -0
  21. package/components/Button/index.js +1 -0
  22. package/components/Calendar/Calendar.js +720 -0
  23. package/components/Calendar/Calendar.lld.md +22 -0
  24. package/components/Calendar/CalendarEvent.js +102 -0
  25. package/components/Calendar/Toolbar.js +78 -0
  26. package/components/Calendar/index.js +2 -0
  27. package/components/Calendar/utils.js +56 -0
  28. package/components/Code/Code.js +84 -0
  29. package/components/Code/Code.lld.md +21 -0
  30. package/components/Code/index.js +1 -0
  31. package/components/ColorPicker/ColorPicker.js +445 -0
  32. package/components/ColorPicker/ColorPicker.lld.md +21 -0
  33. package/components/ColorPicker/index.js +1 -0
  34. package/components/ColorPicker/svg.js +5 -0
  35. package/components/Dialog/Dialog.js +278 -0
  36. package/components/Dialog/Dialog.lld.md +20 -0
  37. package/components/Dialog/README.md +96 -0
  38. package/components/Dialog/index.js +1 -0
  39. package/components/Form/Form.js +257 -0
  40. package/components/Form/Form.lld.md +21 -0
  41. package/components/Form/README.md +87 -0
  42. package/components/Form/index.js +1 -0
  43. package/components/Icon/Icon.js +54 -0
  44. package/components/Icon/Icon.lld.md +21 -0
  45. package/components/Icon/index.js +1 -0
  46. package/components/Input/Input.js +173 -0
  47. package/components/Input/Input.lld.md +28 -0
  48. package/components/Input/README.md +97 -0
  49. package/components/Input/index.js +2 -0
  50. package/components/Input/utils.js +122 -0
  51. package/components/Keyboard/Key.js +38 -0
  52. package/components/Keyboard/Keyboard.js +173 -0
  53. package/components/Keyboard/Keyboard.lld.md +21 -0
  54. package/components/Keyboard/index.js +1 -0
  55. package/components/Label/Label.js +214 -0
  56. package/components/Label/Label.lld.md +20 -0
  57. package/components/Label/index.js +1 -0
  58. package/components/Link/Link.js +43 -0
  59. package/components/Link/Link.lld.md +15 -0
  60. package/components/Link/index.js +1 -0
  61. package/components/List/List.js +82 -0
  62. package/components/List/List.lld.md +19 -0
  63. package/components/List/index.js +1 -0
  64. package/components/Menu/Menu.js +93 -0
  65. package/components/Menu/Menu.lld.md +15 -0
  66. package/components/Menu/index.js +1 -0
  67. package/components/Notify/Notify.js +96 -0
  68. package/components/Notify/Notify.lld.md +20 -0
  69. package/components/Notify/index.js +1 -0
  70. package/components/Page/Page.js +67 -0
  71. package/components/Page/Page.lld.md +20 -0
  72. package/components/Page/index.js +1 -0
  73. package/components/Popover/Popover.js +175 -0
  74. package/components/Popover/Popover.lld.md +19 -0
  75. package/components/Popover/index.js +1 -0
  76. package/components/RadioButton/RadioButton.js +108 -0
  77. package/components/RadioButton/RadioButton.lld.md +15 -0
  78. package/components/RadioButton/index.js +1 -0
  79. package/components/Router/README.md +160 -0
  80. package/components/Router/Router.js +150 -0
  81. package/components/Router/Router.lld.md +31 -0
  82. package/components/Router/View.js +15 -0
  83. package/components/Router/index.js +2 -0
  84. package/components/Router/utils.js +17 -0
  85. package/components/Select/README.md +88 -0
  86. package/components/Select/Select.js +74 -0
  87. package/components/Select/Select.lld.md +20 -0
  88. package/components/Select/index.js +1 -0
  89. package/components/Table/README.md +94 -0
  90. package/components/Table/Table.js +171 -0
  91. package/components/Table/Table.lld.md +21 -0
  92. package/components/Table/index.js +1 -0
  93. package/components/TagList/Tag.js +84 -0
  94. package/components/TagList/TagList.js +118 -0
  95. package/components/TagList/TagList.lld.md +30 -0
  96. package/components/TagList/design.excalidraw.png +0 -0
  97. package/components/TagList/index.js +2 -0
  98. package/components/Tooltip/Tooltip.js +139 -0
  99. package/components/Tooltip/Tooltip.lld.md +22 -0
  100. package/components/Tooltip/index.js +1 -0
  101. package/components/TooltipWrapper/TooltipWrapper.js +89 -0
  102. package/components/TooltipWrapper/TooltipWrapper.lld.md +21 -0
  103. package/components/TooltipWrapper/index.js +1 -0
  104. package/components/Whiteboard/Whiteboard.js +198 -0
  105. package/components/Whiteboard/Whiteboard.lld.md +35 -0
  106. package/components/Whiteboard/index.js +1 -0
  107. package/components/index.js +27 -0
  108. package/eslint.config.cjs +118 -0
  109. package/index.d.ts +635 -0
  110. package/index.js +19 -0
  111. package/package.json +123 -0
  112. package/plugins/asText.js +38 -0
  113. package/plugins/loadPlugins.js +5 -0
  114. package/plugins/markdownLoader.js +121 -0
  115. package/prettier.config.cjs +7 -0
  116. package/spellcheck.config.cjs +227 -0
  117. package/styled/README.md +329 -0
  118. package/styled/appendStyles.js +26 -0
  119. package/styled/appendStyles.test.js +45 -0
  120. package/styled/index.js +4 -0
  121. package/styled/shimCSS.js +31 -0
  122. package/styled/shimCSS.test.js +103 -0
  123. package/styled/styled.js +91 -0
  124. package/styled/styled.test.js +586 -0
  125. package/styled/themeStyles.js +36 -0
  126. package/styled/themeStyles.test.js +135 -0
  127. package/test-setup.js +123 -0
  128. package/theme/.test.js +69 -0
  129. package/theme/README.md +607 -0
  130. package/theme/button.js +100 -0
  131. package/theme/code.js +123 -0
  132. package/theme/colors.js +42 -0
  133. package/theme/fonts.js +42 -0
  134. package/theme/index.js +33 -0
  135. package/theme/input.js +64 -0
  136. package/theme/page.js +208 -0
  137. package/theme/scrollbar.js +24 -0
  138. package/theme/table.js +53 -0
  139. package/utils/README.md +176 -0
  140. package/utils/browser.js +92 -0
  141. package/utils/class.js +30 -0
  142. package/utils/color.js +81 -0
  143. package/utils/data.js +164 -0
  144. package/utils/element.js +55 -0
  145. package/utils/index.js +7 -0
  146. package/utils/rand.js +12 -0
  147. package/utils/string.js +72 -0
package/package.json ADDED
@@ -0,0 +1,123 @@
1
+ {
2
+ "name": "@vanilla-bean/components",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "module": "./index.js",
6
+ "types": "./index.d.ts",
7
+ "exports": {
8
+ "./Component": "./Component/index.js",
9
+ "./Elem": "./Elem/index.js",
10
+ "./styled": "./styled/index.js",
11
+ "./plugins/*": "./plugins/*.js",
12
+ "./theme/*": "./theme/*.js",
13
+ "./theme": "./theme/index.js",
14
+ "./utils/*": "./utils/*.js",
15
+ "./utils": "./utils/index.js",
16
+ "./package.json": "./package.json",
17
+ "./FontWithASyntaxHighlighter-Regular.woff2": "./FontWithASyntaxHighlighter-Regular.woff2",
18
+ "./eslint.config.cjs": "./eslint.config.cjs",
19
+ "./prettier.config.cjs": "./prettier.config.cjs",
20
+ "./spellcheck.config.cjs": "./spellcheck.config.cjs",
21
+ "./test-setup.js": "./test-setup.js",
22
+ ".": "./index.js"
23
+ },
24
+ "files": [
25
+ "/Elem/*.js",
26
+ "/Component/*.js",
27
+ "/styled/*.js",
28
+ "/plugins/*.js",
29
+ "/components/**/*",
30
+ "/theme/**/*",
31
+ "/utils/**/*",
32
+ "index.js",
33
+ "index.d.ts",
34
+ "./FontWithASyntaxHighlighter-Regular.woff2",
35
+ "!/components/**/demo.js",
36
+ "!/components/**/*.test.js",
37
+ "!/utils/**/*.test.js",
38
+ "eslint.config.cjs",
39
+ "prettier.config.cjs",
40
+ "spellcheck.config.cjs",
41
+ "test-setup.js"
42
+ ],
43
+ "description": "A lightweight, reactive component library for building modern web applications with vanilla JavaScript",
44
+ "keywords": [
45
+ "components",
46
+ "reactive",
47
+ "vanilla-js",
48
+ "proxy",
49
+ "web-components",
50
+ "ui",
51
+ "no-framework",
52
+ "dom"
53
+ ],
54
+ "license": "MIT",
55
+ "author": "justfatlard (https://github.com/fatlard1993)",
56
+ "browserslist": [
57
+ "Chrome >= 112",
58
+ "Edge >= 112",
59
+ "Firefox >= 117",
60
+ "Safari >= 16.5"
61
+ ],
62
+ "scripts": {
63
+ "prepare": "bun run prepare:githooks && bun run build",
64
+ "prepare:githooks": "[ -n \"$CI\" ] && exit 0 || (git config --local core.hooksPath .githooks || echo 'Can not set git hooks')",
65
+ "start": "bun run dev",
66
+ "dev": "bun run devTools/build.js && bun --hot demo/server.js",
67
+ "build": "bun run build:clean && bun run build:index && bun run devTools/build.js",
68
+ "build:index": "bun run devTools/updateComponentIndex.js && bun run devTools/updateDemoViewIndex.js && bun run build:types && bun run format",
69
+ "build:types": "bun run devTools/buildTypes.js",
70
+ "build:clean": "rm -rf ./*.asText ./demo/build/",
71
+ "build:watch": "bun run build -- --watch",
72
+ "create:component": "bun run devTools/createComponent.js",
73
+ "lint": "bun --bun eslint",
74
+ "lint:fix": "bun --bun eslint --fix",
75
+ "format": "BROWSERSLIST_IGNORE_OLD_DATA=1 bun run lint:fix && bun --bun prettier --write . --log-level warn",
76
+ "test": "bun test",
77
+ "test:watch": "bun test --watch",
78
+ "version": "npm version"
79
+ },
80
+ "repository": {
81
+ "type": "git",
82
+ "url": "git+https://github.com/fatlard1993/vanilla-bean-components.git"
83
+ },
84
+ "bugs": {
85
+ "url": "https://github.com/fatlard1993/vanilla-bean-components/issues"
86
+ },
87
+ "homepage": "https://github.com/fatlard1993/vanilla-bean-components#readme",
88
+ "dependencies": {
89
+ "@ctrl/tinycolor": "^4.1.0",
90
+ "@fontsource-variable/kode-mono": "^5.2.6",
91
+ "@fortawesome/fontawesome-free": "^7.0.0",
92
+ "@vanilla-bean/oxject": "^1.0.0",
93
+ "nanoid": "^5.1.5"
94
+ },
95
+ "devDependencies": {
96
+ "@vanilla-bean/hypertether": "^1.0.0",
97
+ "baseline-browser-mapping": "^2.10.38",
98
+ "caniuse-lite": "^1.0.30001799",
99
+ "@eslint/compat": "^1.3.2",
100
+ "@eslint/js": "^9.33.0",
101
+ "@happy-dom/global-registrator": "^18.0.1",
102
+ "@testing-library/dom": "^10.4.1",
103
+ "@testing-library/jest-dom": "^6.6.4",
104
+ "@testing-library/user-event": "^14.6.1",
105
+ "bun-types": "^1.2.20",
106
+ "eslint": "^9.33.0",
107
+ "eslint-plugin-compat": "^6.0.2",
108
+ "eslint-plugin-import": "^2.32.0",
109
+ "eslint-plugin-jsdoc": "^54.0.0",
110
+ "eslint-plugin-spellcheck": "0.0.20",
111
+ "eslint-plugin-testing-library": "^7.6.6",
112
+ "eslint-plugin-unicorn": "^60.0.0",
113
+ "eslint-plugin-write-good-comments": "^0.2.0",
114
+ "globals": "^16.3.0",
115
+ "emoji-js": "^3.8.1",
116
+ "marked": "^16.1.2",
117
+ "moresketchy": "wbern/MoreSketchy.js",
118
+ "prettier": "^3.6.2"
119
+ },
120
+ "engines": {
121
+ "node": ">=18"
122
+ }
123
+ }
@@ -0,0 +1,38 @@
1
+ import { writeFileSync, unlink } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+
4
+ const onResolve = ({ path, importer }) => {
5
+ path = resolve(dirname(importer), path);
6
+
7
+ writeFileSync(path, '');
8
+
9
+ unlink(path, error => error && error.code !== 'ENOENT' && console.error(error));
10
+
11
+ return { path };
12
+ };
13
+
14
+ const onLoad =
15
+ format =>
16
+ async ({ path }) => {
17
+ const text = await Bun.file(path.replace('.asText', '')).text();
18
+
19
+ return format === 'build' ? { contents: text, loader: 'text' } : { exports: { default: text }, loader: 'object' };
20
+ };
21
+
22
+ export const buildLoader = {
23
+ name: '.asText build loader',
24
+ async setup(build) {
25
+ build.onResolve({ filter: /\.asText$/ }, onResolve);
26
+
27
+ build.onLoad({ filter: /\.asText$/ }, onLoad('build'));
28
+ },
29
+ };
30
+
31
+ export const runtimeLoader = {
32
+ name: '.asText runtime loader',
33
+ async setup(build) {
34
+ build.onResolve({ filter: /\.asText$/ }, onResolve);
35
+
36
+ build.onLoad({ filter: /\.asText$/ }, onLoad('runtime'));
37
+ },
38
+ };
@@ -0,0 +1,5 @@
1
+ import { runtimeLoader as asText } from './asText';
2
+ import { runtimeLoader as markdownLoader } from './markdownLoader';
3
+
4
+ Bun.plugin(asText);
5
+ Bun.plugin(markdownLoader);
@@ -0,0 +1,121 @@
1
+ import { dirname, resolve } from 'node:path';
2
+ import { readFileSync } from 'node:fs';
3
+ import { marked } from 'marked';
4
+ import EmojiConverter from 'emoji-js';
5
+
6
+ import { customAlphabet } from 'nanoid';
7
+
8
+ import { removeExcessIndentation } from '../utils/string';
9
+ import { processTemplate } from '../devTools/processTemplate.js';
10
+
11
+ // eslint-disable-next-line spellcheck/spell-checker
12
+ const idGen = customAlphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-', 10);
13
+
14
+ const emoji = new EmojiConverter();
15
+ emoji.replace_mode = 'unified';
16
+ emoji.allow_native = true;
17
+
18
+ const copyToClipboardButton = id =>
19
+ `<button class="icon fa-support fa-copy" title="Copy to clipboard" onpointerup="if (isSecureContext) window.navigator.clipboard.writeText(document.getElementById('${id}').textContent); alert('copied text to clipboard');"}></button>`;
20
+
21
+ // Legacy extraction functions removed - now handled by JSDoc system
22
+
23
+ const extractDesign = (fileText, markdownPath) => {
24
+ const designPath = resolve(dirname(markdownPath), 'design.excalidraw.png');
25
+ try {
26
+ readFileSync(designPath);
27
+
28
+ const componentName = dirname(markdownPath).split('/').pop();
29
+ return `![design](../${componentName}/design.excalidraw.png)`;
30
+ } catch {
31
+ return '';
32
+ }
33
+ };
34
+
35
+ export const parseMarkdown = (markdown, path) => {
36
+ const id = idGen();
37
+
38
+ // First process JSDoc extraction commands using our comprehensive system
39
+ const jsdocProcessed = processTemplate(markdown, dirname(path));
40
+
41
+ // Then handle remaining template commands with legacy system
42
+ const processedMarkdown = jsdocProcessed
43
+ .replaceAll(/\[\[import\s(\S+)]](?:\/(.+)\/([gimsuy]+))?/g, (input, filename, regex, regexFlags) => {
44
+ const fileText = readFileSync(resolve(dirname(path), filename), 'utf8');
45
+
46
+ if (regex) {
47
+ try {
48
+ const parsedRegex = new RegExp(regex, regexFlags);
49
+ const regexResults = parsedRegex.exec(fileText);
50
+ const regexMatch = regexResults?.[0];
51
+
52
+ if (!regexMatch) {
53
+ console.error('No regex match', { filename, regex, regexFlags, parsedRegex, regexResults });
54
+ return fileText;
55
+ }
56
+
57
+ return removeExcessIndentation(regexMatch);
58
+ } catch (error) {
59
+ console.error('Could not apply regex', { filename, regex, regexFlags }, error);
60
+ }
61
+ }
62
+
63
+ return fileText;
64
+ })
65
+
66
+ // JSDoc extraction commands are now handled by processTemplate above
67
+ .replaceAll(/\[\[extract-design\]\]/g, () => {
68
+ return extractDesign('', path);
69
+ })
70
+
71
+ .replace(/## [^\n]*\n+(?=## |$)/g, '')
72
+
73
+ .replace(/\n{3,}/g, '\n\n');
74
+
75
+ const parsed = marked
76
+ .parse(processedMarkdown)
77
+ .replaceAll(
78
+ /<pre><code class="language-([^\s"]+)/g,
79
+ `<pre class="language-$1">${copyToClipboardButton(id)}<code id=${id} class="language-$1`,
80
+ )
81
+ .replaceAll(/<blockquote>\s?<p>\s?\[!(\w+)]/g, `<blockquote class="$1"><p>$1</p><p>`);
82
+
83
+ return emoji.replace_colons(parsed);
84
+ };
85
+
86
+ const loader = format => ({
87
+ name: '.md loader',
88
+ async setup(build) {
89
+ build.onLoad({ filter: /\.md$/ }, async ({ path }) => {
90
+ // Handle regular markdown files - check if file exists first
91
+ try {
92
+ const text = await Bun.file(path).text();
93
+ const parsed = parseMarkdown(text, path);
94
+
95
+ // For build-time, export as ES module for dynamic imports
96
+ if (format === 'build') {
97
+ return {
98
+ contents: `export default ${JSON.stringify(parsed)};`,
99
+ loader: 'js',
100
+ };
101
+ }
102
+
103
+ return { exports: { default: parsed }, loader: 'object' };
104
+ } catch {
105
+ // File doesn't exist - return empty content
106
+ console.warn(`Markdown file not found: ${path}`);
107
+ if (format === 'build') {
108
+ return {
109
+ contents: `export default '';`,
110
+ loader: 'js',
111
+ };
112
+ }
113
+ return { exports: { default: '' }, loader: 'object' };
114
+ }
115
+ });
116
+ },
117
+ });
118
+
119
+ export const buildLoader = loader('build');
120
+
121
+ export const runtimeLoader = loader('runtime');
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ arrowParens: 'avoid',
3
+ printWidth: 120,
4
+ proseWrap: 'never',
5
+ singleQuote: true,
6
+ useTabs: true,
7
+ };
@@ -0,0 +1,227 @@
1
+ /* eslint-disable spellcheck/spell-checker */
2
+ module.exports = {
3
+ comments: true,
4
+ strings: true,
5
+ identifiers: true,
6
+ templates: true,
7
+ lang: 'en_US',
8
+ skipWords: [
9
+ 'ecma',
10
+ 'compat',
11
+ 'eslintrc',
12
+ 'multiline',
13
+ 'builtins',
14
+ 'lang',
15
+ 'cjs',
16
+ 'vitest',
17
+ 'globals',
18
+ 'dom',
19
+ 'jsdom',
20
+ 'jspm',
21
+ 'nodelibs',
22
+ 'fs',
23
+ 'hsl',
24
+ 'hsv',
25
+ 'rgb',
26
+ 'whitespace',
27
+ 'splitter',
28
+ 'recurse',
29
+ 'debounce',
30
+ 'debounces',
31
+ 'debounced',
32
+ 'debouncing',
33
+ 'cb',
34
+ 'javascript',
35
+ 'webkit',
36
+ 'scrollbar',
37
+ 'monospace',
38
+ 'osx',
39
+ 'moz',
40
+ 'grayscale',
41
+ 'bool',
42
+ 'hexcode',
43
+ 'doctype',
44
+ 'namespace',
45
+ 'whiteish',
46
+ 'blackish',
47
+ 'tooltip',
48
+ 'enum',
49
+ 'textarea',
50
+ 'checkbox',
51
+ 'href',
52
+ 'calc',
53
+ 'textbox',
54
+ 'autocorrect',
55
+ 'autocapitalize',
56
+ 'evt',
57
+ 'popstate',
58
+ 'rect',
59
+ 'ul',
60
+ 'li',
61
+ 'nonmatching',
62
+ 'strikethrough',
63
+ 'antialiased',
64
+ 'atrule',
65
+ 'cdata',
66
+ 'prolog',
67
+ 'nowrap',
68
+ 'searchbox',
69
+ 'spinbutton',
70
+ 'listitem',
71
+ 'labelledby',
72
+ 'dataset',
73
+ 'entrypoint',
74
+ 'touchstart',
75
+ 'touchmove',
76
+ 'touchend',
77
+ 'touchcancel',
78
+ 'mousedown',
79
+ 'mouseout',
80
+ 'mouseup',
81
+ 'cancelable',
82
+ 'contextmenu',
83
+ 'mousemove',
84
+ 'mouseenter',
85
+ 'mouseleave',
86
+ 'keydown',
87
+ 'keyup',
88
+ 'utf8',
89
+ 'combobox',
90
+ 'keyframes',
91
+ 'collapsable',
92
+ 'vantablack',
93
+ 'ws',
94
+ 'stdout',
95
+ 'pathname',
96
+ 'registrator',
97
+ 'matchers',
98
+ 'nanoid',
99
+ 'esnext',
100
+ 'keypress',
101
+ 'datetime',
102
+ 'aug',
103
+ 'bg',
104
+ 'popovertarget',
105
+ 'popovertargetaction',
106
+ 'xmark',
107
+ 'crosshair',
108
+ 'entrypoints',
109
+ 'outdir',
110
+ 'plaintext',
111
+ 'dlc',
112
+ 'argv',
113
+ 'subtree',
114
+ 'pointerover',
115
+ 'pointerenter',
116
+ 'pointerdown',
117
+ 'pointermove',
118
+ 'pointerup',
119
+ 'pointercancel',
120
+ 'pointerout',
121
+ 'pointerleave',
122
+ 'fixup',
123
+ 'mjs',
124
+ 'fieldset',
125
+ 'woff',
126
+ 'hotpink',
127
+ 'lightblue',
128
+ 'vbc',
129
+ 'iframe',
130
+ 'srcdoc',
131
+ 'resize',
132
+ 'th',
133
+ 'td',
134
+ 'thead',
135
+ 'tbody',
136
+ 'tfoot',
137
+ 'colspan',
138
+ 'unlink',
139
+ 'jsdoc',
140
+ 'hashchange',
141
+ 'blockquote',
142
+ 'kbd',
143
+ 'fortawesome',
144
+ 'fontawesome',
145
+ 'nes',
146
+ 'excalidraw',
147
+ 'kode',
148
+ 'fontsource',
149
+ 'keyof',
150
+ 'typeof',
151
+ 'readonly',
152
+ 'reactivity',
153
+ 'refetches',
154
+ 'testid',
155
+ 'polymorphism',
156
+ 'unicode',
157
+ 'io',
158
+ 'prepend',
159
+ 'prepended',
160
+ 'noopener',
161
+ 'enums',
162
+ 'evaluate',
163
+ 'orchestrator',
164
+ 'oxject',
165
+ 'klass',
166
+ 'reactively',
167
+ 'ctx',
168
+ 'lld',
169
+ 'monday',
170
+ 'tuesday',
171
+ 'wednesday',
172
+ 'thursday',
173
+ 'friday',
174
+ 'saturday',
175
+ 'sunday',
176
+ 'standup',
177
+ 'tabindex',
178
+ 'focusable',
179
+ 'dy',
180
+ 'readme',
181
+ 'readdir',
182
+ 'dts',
183
+ 'unordered',
184
+ 'customizable',
185
+ 'optgroup',
186
+ 'optgroups',
187
+ 'breakpoint',
188
+ 'scrollable',
189
+ 'tooltips',
190
+ 'validators',
191
+ 'dropdown',
192
+ 'stylesheets',
193
+ 'comparator',
194
+ 'getters',
195
+ 'webpack',
196
+ 'vite',
197
+ 'esc',
198
+ 'str',
199
+ 'jdoe',
200
+ 'dep',
201
+ 'sv',
202
+ 'ew',
203
+ 'normalises',
204
+ 'colour',
205
+ 'lt',
206
+ 'gt',
207
+ 'amp',
208
+ 'tinycolor',
209
+ 'dq',
210
+ 'tmpl',
211
+ 'num',
212
+ 'parens',
213
+ 'paren',
214
+ 'Idx',
215
+ 'lr',
216
+ 'qtychange',
217
+ 'qtys',
218
+ 'Raf',
219
+ 'claude',
220
+ 'accessors',
221
+ 'bundler',
222
+ 'localhost',
223
+ ],
224
+ skipIfMatch: [String.raw`\d+v[wh]`],
225
+ skipWordIfMatch: [],
226
+ minLength: 1,
227
+ };