Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
node_modules
dist
lib
src/versionInfo.ts
.idea
.vscode
Expand Down
46 changes: 46 additions & 0 deletions .storybook/main.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,26 @@
import Icons from 'unplugin-icons/webpack'
import iconsConfig from '../config/icons'
import postCSSConfig from '../config/postcss'

export default {
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],

swc: (config) => ({
...config,
jsc: {
...config.jsc,
parser: {
...config.jsc?.parser,
decorators: true,
},
transform: {
...config.jsc?.transform,
legacyDecorator: true,
useDefineForClassFields: false,
},
},
}),

addons: [
'@storybook/addon-links',
'@storybook/addon-essentials',
Expand Down Expand Up @@ -37,6 +57,32 @@ export default {
$rdf: 'rdflib'
}

// Configure icons
config.plugins.push(Icons(iconsConfig))

// Configure component styles
const litCssPattern = /\.styles\.css$/

config.module.rules = config.module.rules.map(rule => {
if (rule?.test?.test?.('component.css')) {
return {
...rule,
exclude: [
...(Array.isArray(rule.exclude) ? rule.exclude : rule.exclude ? [rule.exclude] : []),
litCssPattern
]
}
}

return rule
})

config.module.rules.push({
test: litCssPattern,
loader: 'lit-css-loader',
options: postCSSConfig
})

return config
}
}
3 changes: 3 additions & 0 deletions .storybook/preview.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import '../src/design-system/styles/variables.css'
import '../src/primitives/styles/variables.css'

// For backward compatibility, provide rdflib and solid-logic as globals
import * as rdflib from 'rdflib'
import * as solidLogic from 'solid-logic'
Expand Down
7 changes: 6 additions & 1 deletion babel.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@ export default {
browsers: ['> 1%', 'last 3 versions', 'not dead']
}
}],
['@babel/preset-typescript', { allowDeclareFields: true }],
[
'@babel/preset-typescript', {
allowDeclareFields: true,
useDefineForClassFields: false,
}
],
],
plugins: [
'@babel/plugin-transform-runtime'
Expand Down
27 changes: 27 additions & 0 deletions config/icons.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
const compiler = {
compiler (svg, collection, icon) {
const id = `icon-${collection}-${icon}`
const className = id.replace(/-/g, '')

return `
export default class ${className} extends HTMLElement {
constructor() {
super()
this.attachShadow({ mode: 'open' }).innerHTML = ${JSON.stringify('<style>:host { display: inline-flex; }</style>' + svg)}
}
}

customElements.define('${id}', ${className})
`
},
}

/** @type {import('unplugin-icons').Options} */
export default {
scale: 1,
compiler,
iconCustomizer (_, __, props) {
props.width = '100%'
props.height = '100%'
}
}
12 changes: 12 additions & 0 deletions config/postcss.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import PostCSS from 'postcss'
import TailwindCSS from '@tailwindcss/postcss'

const cssProcessor = PostCSS([TailwindCSS()])

export default {
async transform (css, { filePath }) {
const result = await cssProcessor.process(css, { from: filePath })

return result.css
}
}
Loading