feat: Add DSS infrastructure, remove legacy admin-ui code
Some checks failed
DSS Project Analysis / dss-context-update (push) Has been cancelled
Some checks failed
DSS Project Analysis / dss-context-update (push) Has been cancelled
- Remove legacy admin-ui/js/ vanilla JS components - Add .dss/ directory with core tokens, skins, themes - Add Storybook configuration and generated stories - Add DSS management scripts (dss-services, dss-init, dss-setup, dss-reset) - Add MCP command definitions for DSS plugin - Add Figma sync architecture and scripts - Update pre-commit hooks with documentation validation - Fix JSON trailing commas in skin files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
306
.dss/skins/figma-source/tokens.json
Normal file
306
.dss/skins/figma-source/tokens.json
Normal file
@@ -0,0 +1,306 @@
|
||||
{
|
||||
"_meta": {
|
||||
"name": "figma-source",
|
||||
"description": "Tokens extracted from Figma: Obra shadcn/ui (uikit)",
|
||||
"version": "1.0.0",
|
||||
"layer": "skin",
|
||||
"source": "figma:evCZlaeZrP7X20NIViSJbl",
|
||||
"generated": "2025-12-10T20:49:27.631185"
|
||||
},
|
||||
"typography": {
|
||||
"heading-1": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 600
|
||||
},
|
||||
"font-size": {
|
||||
"value": "48px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "48px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "-1.5px"
|
||||
},
|
||||
"_contract": true
|
||||
},
|
||||
"heading-2": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 600
|
||||
},
|
||||
"font-size": {
|
||||
"value": "30px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "30px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "-1.0px"
|
||||
},
|
||||
"_contract": true
|
||||
},
|
||||
"paragraph-small-regular": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 400
|
||||
},
|
||||
"font-size": {
|
||||
"value": "14px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "21px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "0.07px"
|
||||
},
|
||||
"_contract": true
|
||||
},
|
||||
"paragraph-small-bold": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 500
|
||||
},
|
||||
"font-size": {
|
||||
"value": "14px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "21px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "0.07px"
|
||||
},
|
||||
"_contract": false
|
||||
},
|
||||
"heading-3": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 600
|
||||
},
|
||||
"font-size": {
|
||||
"value": "24px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "29px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "-1.0px"
|
||||
},
|
||||
"_contract": true
|
||||
},
|
||||
"paragraph-bold": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 500
|
||||
},
|
||||
"font-size": {
|
||||
"value": "16px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "24px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "0.0px"
|
||||
},
|
||||
"_contract": true
|
||||
},
|
||||
"paragraph-regular": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 400
|
||||
},
|
||||
"font-size": {
|
||||
"value": "16px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "24px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "0.0px"
|
||||
},
|
||||
"_contract": true
|
||||
},
|
||||
"paragraph-mini-regular": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 400
|
||||
},
|
||||
"font-size": {
|
||||
"value": "12px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "16px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "0.18px"
|
||||
},
|
||||
"_contract": false
|
||||
},
|
||||
"heading-4": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 600
|
||||
},
|
||||
"font-size": {
|
||||
"value": "20px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "24px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "0.0px"
|
||||
},
|
||||
"_contract": true
|
||||
},
|
||||
"monospaced": {
|
||||
"font-family": {
|
||||
"value": "Menlo"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 400
|
||||
},
|
||||
"font-size": {
|
||||
"value": "16px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "24px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "0.0px"
|
||||
},
|
||||
"_contract": false
|
||||
},
|
||||
"paragraph-medium": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 500
|
||||
},
|
||||
"font-size": {
|
||||
"value": "16px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "24px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "0.0px"
|
||||
},
|
||||
"_contract": false
|
||||
},
|
||||
"paragraph-small-medium": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 500
|
||||
},
|
||||
"font-size": {
|
||||
"value": "14px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "21px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "0.07px"
|
||||
},
|
||||
"_contract": false
|
||||
},
|
||||
"paragraph-mini-bold": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 500
|
||||
},
|
||||
"font-size": {
|
||||
"value": "12px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "16px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "0.18px"
|
||||
},
|
||||
"_contract": false
|
||||
},
|
||||
"paragraph-mini-medium": {
|
||||
"font-family": {
|
||||
"value": "Inter"
|
||||
},
|
||||
"font-weight": {
|
||||
"value": 500
|
||||
},
|
||||
"font-size": {
|
||||
"value": "12px"
|
||||
},
|
||||
"line-height": {
|
||||
"value": "16px"
|
||||
},
|
||||
"letter-spacing": {
|
||||
"value": "0.18px"
|
||||
},
|
||||
"_contract": false
|
||||
}
|
||||
},
|
||||
"effect": {
|
||||
"shadow-sm": {
|
||||
"value": "0.0px 1.0px 2.0px -1.0px rgba(0, 0, 0, 0.1), 0.0px 1.0px 3.0px 0px rgba(0, 0, 0, 0.1)",
|
||||
"_contract": true
|
||||
},
|
||||
"shadow-lg": {
|
||||
"value": "0.0px 4.0px 6.0px -4.0px rgba(0, 0, 0, 0.1), 0.0px 10.0px 15.0px -3.0px rgba(0, 0, 0, 0.1)",
|
||||
"_contract": true
|
||||
},
|
||||
"shadow-2xs": {
|
||||
"value": "0.0px 1.0px 0.0px 0px rgba(0, 0, 0, 0.05)",
|
||||
"_contract": false
|
||||
},
|
||||
"shadow-xs": {
|
||||
"value": "0.0px 1.0px 2.0px 0px rgba(0, 0, 0, 0.05)",
|
||||
"_contract": true
|
||||
},
|
||||
"shadow-md": {
|
||||
"value": "0.0px 2.0px 4.0px -2.0px rgba(0, 0, 0, 0.1), 0.0px 4.0px 6.0px -1.0px rgba(0, 0, 0, 0.1)",
|
||||
"_contract": true
|
||||
},
|
||||
"shadow-xl": {
|
||||
"value": "0.0px 8.0px 10.0px -6.0px rgba(0, 0, 0, 0.1), 0.0px 20.0px 25.0px -5.0px rgba(0, 0, 0, 0.1)",
|
||||
"_contract": true
|
||||
},
|
||||
"shadow-2xl": {
|
||||
"value": "0.0px 25.0px 50.0px 12.0px rgba(0, 0, 0, 0.25)",
|
||||
"_contract": true
|
||||
},
|
||||
"focus-ring": {
|
||||
"value": "0.0px 0.0px 0.0px 3.0px rgb(203, 213, 225)",
|
||||
"_contract": true
|
||||
},
|
||||
"focus-ring-error": {
|
||||
"value": "0.0px 0.0px 0.0px 3.0px rgb(252, 165, 165)",
|
||||
"_contract": false
|
||||
},
|
||||
"focus-ring-sidebar": {
|
||||
"value": "0.0px 0.0px 0.0px 3.0px rgb(203, 213, 225)",
|
||||
"_contract": false
|
||||
}
|
||||
}
|
||||
}
|
||||
132
.dss/skins/shadcn/tokens.json
Normal file
132
.dss/skins/shadcn/tokens.json
Normal file
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"_meta": {
|
||||
"name": "shadcn",
|
||||
"description": "shadcn/ui skin - maps primitives to semantic tokens",
|
||||
"version": "1.0.0",
|
||||
"layer": "skin",
|
||||
"extends": "core/primitives",
|
||||
"source": "https://ui.shadcn.com"
|
||||
},
|
||||
"color": {
|
||||
"background": { "value": "{color.white}" },
|
||||
"foreground": { "value": "{color.zinc.950}" },
|
||||
"card": { "value": "{color.white}" },
|
||||
"card-foreground": { "value": "{color.zinc.950}" },
|
||||
"popover": { "value": "{color.white}" },
|
||||
"popover-foreground": { "value": "{color.zinc.950}" },
|
||||
"primary": { "value": "{color.zinc.900}" },
|
||||
"primary-foreground": { "value": "{color.zinc.50}" },
|
||||
"secondary": { "value": "{color.zinc.100}" },
|
||||
"secondary-foreground": { "value": "{color.zinc.900}" },
|
||||
"muted": { "value": "{color.zinc.100}" },
|
||||
"muted-foreground": { "value": "{color.zinc.500}" },
|
||||
"accent": { "value": "{color.zinc.100}" },
|
||||
"accent-foreground": { "value": "{color.zinc.900}" },
|
||||
"destructive": { "value": "{color.red.500}" },
|
||||
"destructive-foreground": { "value": "{color.zinc.50}" },
|
||||
"border": { "value": "{color.zinc.200}" },
|
||||
"input": { "value": "{color.zinc.200}" },
|
||||
"ring": { "value": "{color.zinc.950}" }
|
||||
},
|
||||
"color-dark": {
|
||||
"background": { "value": "{color.zinc.950}" },
|
||||
"foreground": { "value": "{color.zinc.50}" },
|
||||
"card": { "value": "{color.zinc.950}" },
|
||||
"card-foreground": { "value": "{color.zinc.50}" },
|
||||
"popover": { "value": "{color.zinc.950}" },
|
||||
"popover-foreground": { "value": "{color.zinc.50}" },
|
||||
"primary": { "value": "{color.zinc.50}" },
|
||||
"primary-foreground": { "value": "{color.zinc.900}" },
|
||||
"secondary": { "value": "{color.zinc.800}" },
|
||||
"secondary-foreground": { "value": "{color.zinc.50}" },
|
||||
"muted": { "value": "{color.zinc.800}" },
|
||||
"muted-foreground": { "value": "{color.zinc.400}" },
|
||||
"accent": { "value": "{color.zinc.800}" },
|
||||
"accent-foreground": { "value": "{color.zinc.50}" },
|
||||
"destructive": { "value": "{color.red.900}" },
|
||||
"destructive-foreground": { "value": "{color.zinc.50}" },
|
||||
"border": { "value": "{color.zinc.800}" },
|
||||
"input": { "value": "{color.zinc.800}" },
|
||||
"ring": { "value": "{color.zinc.300}" }
|
||||
},
|
||||
"radius": {
|
||||
"sm": { "value": "{radius.sm}" },
|
||||
"md": { "value": "{radius.md}" },
|
||||
"lg": { "value": "{radius.lg}" },
|
||||
"xl": { "value": "{radius.xl}" },
|
||||
"full": { "value": "{radius.full}" }
|
||||
},
|
||||
"effect": {
|
||||
"shadow-xs": { "value": "0 1px 2px 0 rgba(0, 0, 0, 0.05)" },
|
||||
"shadow-sm": { "value": "0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)" },
|
||||
"shadow-md": { "value": "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)" },
|
||||
"shadow-lg": { "value": "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)" },
|
||||
"shadow-xl": { "value": "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)" },
|
||||
"shadow-2xl": { "value": "0 25px 50px -12px rgba(0, 0, 0, 0.25)" },
|
||||
"focus-ring": { "value": "0 0 0 3px rgba(59, 130, 246, 0.5)" }
|
||||
},
|
||||
"spacing": {
|
||||
"0": { "value": "{spacing.0}" },
|
||||
"1": { "value": "{spacing.1}" },
|
||||
"2": { "value": "{spacing.2}" },
|
||||
"3": { "value": "{spacing.3}" },
|
||||
"4": { "value": "{spacing.4}" },
|
||||
"5": { "value": "{spacing.5}" },
|
||||
"6": { "value": "{spacing.6}" },
|
||||
"8": { "value": "{spacing.8}" },
|
||||
"10": { "value": "{spacing.10}" },
|
||||
"12": { "value": "{spacing.12}" },
|
||||
"16": { "value": "{spacing.16}" }
|
||||
},
|
||||
"typography": {
|
||||
"heading-1": {
|
||||
"font-family": { "value": "{font.family.sans}" },
|
||||
"font-weight": { "value": "{font.weight.bold}" },
|
||||
"font-size": { "value": "{font.size.5xl}" },
|
||||
"line-height": { "value": "1" },
|
||||
"letter-spacing": { "value": "-0.025em" }
|
||||
},
|
||||
"heading-2": {
|
||||
"font-family": { "value": "{font.family.sans}" },
|
||||
"font-weight": { "value": "{font.weight.semibold}" },
|
||||
"font-size": { "value": "{font.size.3xl}" },
|
||||
"line-height": { "value": "1.2" },
|
||||
"letter-spacing": { "value": "-0.025em" }
|
||||
},
|
||||
"heading-3": {
|
||||
"font-family": { "value": "{font.family.sans}" },
|
||||
"font-weight": { "value": "{font.weight.semibold}" },
|
||||
"font-size": { "value": "{font.size.2xl}" },
|
||||
"line-height": { "value": "1.3" },
|
||||
"letter-spacing": { "value": "-0.025em" }
|
||||
},
|
||||
"heading-4": {
|
||||
"font-family": { "value": "{font.family.sans}" },
|
||||
"font-weight": { "value": "{font.weight.semibold}" },
|
||||
"font-size": { "value": "{font.size.xl}" },
|
||||
"line-height": { "value": "1.4" },
|
||||
"letter-spacing": { "value": "0" }
|
||||
},
|
||||
"paragraph-regular": {
|
||||
"font-family": { "value": "{font.family.sans}" },
|
||||
"font-weight": { "value": "{font.weight.normal}" },
|
||||
"font-size": { "value": "{font.size.base}" },
|
||||
"line-height": { "value": "1.5" },
|
||||
"letter-spacing": { "value": "0" }
|
||||
},
|
||||
"paragraph-bold": {
|
||||
"font-family": { "value": "{font.family.sans}" },
|
||||
"font-weight": { "value": "{font.weight.medium}" },
|
||||
"font-size": { "value": "{font.size.base}" },
|
||||
"line-height": { "value": "1.5" },
|
||||
"letter-spacing": { "value": "0" }
|
||||
},
|
||||
"paragraph-small-regular": {
|
||||
"font-family": { "value": "{font.family.sans}" },
|
||||
"font-weight": { "value": "{font.weight.normal}" },
|
||||
"font-size": { "value": "{font.size.sm}" },
|
||||
"line-height": { "value": "1.5" },
|
||||
"letter-spacing": { "value": "0" }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user