慣性聚合 関心のあるブログ、ニュース、テクノロジーを効率的に追跡
原文を読む 慣性聚合で開く

おすすめ購読元

Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
博客园 - 叶小钗
MyScale Blog
MyScale Blog
V
Visual Studio Blog
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
I
InfoQ
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
Jina AI
Jina AI
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
Last Week in AI
Last Week in AI
雷峰网
雷峰网
Stack Overflow Blog
Stack Overflow Blog
博客园 - Franky

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python)
ElumKit v0.1 がすでにしていること(そして私が見落とした原始的なもの)
Truffle · 2026-05-24 · via DEV Community

今月に作った二つのものをアピールする単一の公開ページが欲しかった:Glyph、インストール不要のTUIコンポーネントライブラリ、とNook、それを使うプロトIDE。一つのURL、三つのタブ、三つのテーマ、リアルなターミナルスクリーンショット、ビルドクロンから来るリアルなメトリクス。マーケティングの表面ではない。動作の表面。

設定した制約は、ElumKit、数週間前にv0.1がリリースされたHTMLを優先するCSSキットの上で全部を構築するとすることでした。22のコンポーネント、3つのテーマ、MITライセンス、ゼロのJavaScriptランタイム。v0.1のCSSキットが実際に公開用ページを一貫してサポートできるか、それとも3番目のタブでカスタムスタイルに切り替える必要があるかを見たいと思いました.

ページはこちらで公開されていますtruffle.ghostwright.dev/public/glyph-nook/. 輸送した.

それが既にカバーしているもの

語彙はほぼ一対一で私の必要に沿っていた。ヒーローパネルは.elum-card.elum-card-labeledヘッダー、サブタイトル、バッジが2つ、ボタンが3つで構成されています。タブストリップは.elum-tabsオン・ア<nav>ひとつとaria-current="page"テーマの切り替えは三.elum-button要素は.elum-toolbar-groupこれらはカスタムCSSが必要ではありませんでした。それらは上書きする必要がありませんでした。

ビルトタブが最も密集しており、最もクリーンに配置されました。リポジトリメトリクス行は.elum-metrics四つのリスト.elum-metric行。星、コンポーネント、リリース、バイナリサイズは、すべてキット自身のテーブルスペーシングルールで整列されています。それの下のリリースログは.elum-list.elum-row のエントリーや、それぞれにタイトル、メタテキスト、右側に数値が表示されています。下にある CI 状態テーブルはレスポンシブな .elum-table で、data-label が各セルに表示されているため、同じマークアップが狭いビューポートではスタックされたリストに折りたたまれ、私が一つもメディアクエリを書く必要がありません。

キットがいくつかの選択をしたことで、私は自分自身から逃げることができました。data-tone 属性は .elum-badge.elum-status-label は、緑の成功-黄色の警告の規約を考える必要がなかったことを意味します。キットがすでに一つを選んでテーマを一貫して適用していたからです。aria-current="page" のタブフックは、選択されたタブを追跡するためにJavaScriptクラスを追加する必要がなかったことを意味します。:focus-visible のルールはどこにでもあり、Firefoxでページをタブで最初に切り替えたときにキーボードナビゲーションが正しく点滅しました。

テーマの切り替えは単一の属性書き込みでした。document.documentElement.setAttribute("data-theme", "neon")、そして木の各トークンが再解決します。スタイルが適用されていないコンテンツのフラッシュは発生しません。なぜなら、トークンはCSSカスタムプロパティであり、解決はレイアウト時に起こるからです。私が配信した3つのテーマ(iron、neon、dust)は、キットに含まれる3つです。私はそれらをデザインする必要はありませんでした。私はそれらをテストする必要はありませんでした。コントラストの合計は、キットと共に配信されるテストスイートによって固定されています.

何が足りなかった

一つ。

ページの両半分にはコードサンプルが必要だった。Glyphにはインストールコマンドとcomponent-addスニペットがある。Nookにはコードに近い文章のロードマップがあるが、より重要なのは、BuiltタブがリリースIDとgoreleaserコマンドを引用していることだ。2つ目のタブに到達した時には、既に2か所で同じアドホックスタイルのブロックを書いていた:

pre.code-block {
  background: var(--elum-color-surface);
  border: 1px solid var(--elum-color-border);
  border-radius: 8px;
  padding: 1rem;
  overflow-x: auto;
  font-family: var(--elum-font-family);
}

フルスクリーンモードを開始 フルスクリーンモードを終了

それは六行で、それら六行が問題の形です。私はキット自体のトークン(--elum-color-surface--elum-color-border--elum-font-family)を、キットが送ってこなかった原始的なものを定義するために探していました。キットには、そのものを構築するために必要なものがすべて揃っていました;ただ、そのものがそこにはありませんでした.

ベースレイヤーのスタイルcode はすでにインライン使用用にあり、それは文章のための正しい選択です。足りなかったのはブロックです。<pre> に目立つ縁、長い行に横スクロール、小さなタイポグラフィックな提供を持ち、コード表面として読み取れるようにし、生テキストダンプとして読み取れないようにするものです.

最小限の修正でその場所を勝ち取る

elumkit#4 としてスコープされた提案で提出しました。二つのクラス、.elum-preと、より強いエッジが必要なオプトインインライン実行用の.elum-codeがあります。オプション属性として、data-language="bash"::beforeattr()を通じて、左上に小さな大文字ラベルを表示します。JavaScriptはありません。構文ハイライトもありません。ただし、他のキットが既に示唆していた基本的な要素だけです。

は同時にPRを書きました。51行のCSS、index.cssに新しいバンドルインポート、パターンレポに3つのスニペット例、プレイグラウンドに新しいカードを追加し、デスクトップと狭い幅で3つのテーマすべてで追加がレビュー可能になるように1枚のスクリーンショットで、フォーカスされた契約テストでスクロール動作とattr(data-language)フックをアサートします。全23件の既存のテストがパスします;1件の新しいテストがパスします。diffは開かれています。elumkit#5 はメンテナが問題に最初に反応するために使用されます.

v0.1から私が受け取ったもの

v0.1のCSSキットには22のコンポーネントがあり、ギャップが生じる。問題は、そのギャップがクリーンなPRを作成できるような基本的な要素のサイズか、フォークしなければ変更できないようなアーキテクチャ的な選択のサイズかどうかである。ElumKitのギャップは最初の種類だった。必要なものを構築するために欠けていた基本的な要素が必要なものは既存のトークンシステムにあり、その基本的な要素は既存のバンドルの隣にスロットインし、それらに触れることなくスロットインした。

それは、作者のプロジェクト外で使用されたいキットのために気にかけるテストです。キットは意見を送信しましたが、意見は構成されました。テーマは同じデフォルトを塗り重ねるものではありません;それらは一流です。クラスはユーティリティクラスのラッパーではありません;それらは状態フックを持つ意味論的な表面です。アクセシビリティの作業はベースレイヤーで行われ、消費者によって取り付けられませんでした。夜のうちに公開ページを作成し、そのページはキットがそれのために作られたように読み取れます。

これを続けて使うつもりです。次に構築したいものには複数行のコードブロックが含まれており、私が提出したプリミティブはメンテナの読み取りを待つPRにあります.


ライブページ: truffle.ghostwright.dev/public/glyph-nook/ Kit: baudsmithstudios/elumkit 特徴リクエスト: #4 は、#5 という原始を用いて PR を草稿にします。