Sno Station
Sno Station은 AI 에이전트를 하나의 팀으로 묶는 오픈소스 워크스테이션으로, 로컬 머신에서 에이전트 협업을 가능하게 함
Symfony용 Canonical Nowo 관리자 UI 키트
Canonical Nowo admin UI kit for Symfony: Twig macros, semantic nowo-ui-* CSS, pagination/tabs/modals/toasts/confirm, shell chrome, multi-framework class helpers (REQ-UI-001).
플러그인PHP · TypeScriptGitHub @nowo-tech온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Canonical admin UI kit for Nowo Symfony bundles and host apps: Twig macros, semantic nowo-ui-* CSS, pagination/tabs/modals, and multi-framework class helpers (bootstrap5, tailwind, foundation, custom, …) per REQ-UI-001.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
⭐ Found this useful? Install from Packagist · Give it a star on GitHub so more developers can find it.
Canonical admin UI kit for Nowo Symfony bundles and host apps: Twig macros, semantic nowo-ui-* CSS, pagination/tabs/modals/toasts/confirm/loader, cards/filters, shell chrome (aside / nested nav / burger / avatar / user menu / footer / width toggle), theme/locale/kebab helpers, Thinking Orbs (local canvas, no CDN), and multi-framework class helpers (bootstrap5, tailwind, foundation, custom, …) per REQ-UI-001.
Compatible with Symfony 7.4+ and 8.x (PHP 8.2+; Symfony 8 requires PHP 8.4+).README 전문 보기 ↗⭐ Found this useful? Install from Packagist · Give it a star on GitHub so more developers can find it.
Canonical admin UI kit for Nowo Symfony bundles and host apps: Twig macros, semantic nowo-ui-* CSS, pagination/tabs/modals/toasts/confirm/loader, cards/filters, shell chrome (aside / nested nav / burger / avatar / user menu / footer / width toggle), theme/locale/kebab helpers, Thinking Orbs (local canvas, no CDN), and multi-framework class helpers (bootstrap5, tailwind, foundation, custom, …) per REQ-UI-001.
Compatible with Symfony 7.4+ and 8.x (PHP 8.2+; Symfony 8 requires PHP 8.4+).
This bundle is FrankenPHP worker mode friendly (including when the kernel is not reset between requests). See docs/FRANKENPHP-WORKER-AUDIT.md.
| Is | Is not |
|---|---|
| Buttons, toolbars, tables, lists, pagination, tabs, flashes/toasts, empty states, modal/confirm, cards/filters, icons, aside (nested) / burger / avatar / user menu / footer, theme/locale/kebab/width, Thinking Orbs | DashboardMenu / BreadcrumbKit navigation chrome |
Shared nowo-ui-* look-and-feel | Domain CRUD pages / manage routes |
| Multi-framework class macros | Form widget themes (use FormKit) |
@NowoUiKitBundle/macros/ui.html.twig) with optional per-call framework overridecss/nowo-ui.css (asset package nowo_ui_kit), including dark [data-theme="dark"] tokens--nowo-ui-* theming tokens (1.13): every colour, radius, font, focus ring, overlay and shadow in kit output reads a token — no hard-coded Tailwind palette / Bootstrap colour utilities; a host theme is a short :root block (docs/THEMING.md); opt-in .nowo-ui-bs-tokens bridge for Bootstrap 5.3 stacks--nowo-ui-* token emitter with host aliases, nowo_ui_appearance_style() (CSP nonce), host storage behind AppearanceProviderInterface, optional AppearanceType form — see docs/THEMING.mdnowo_ui_route_link() route map, unified thin scrollbars (CSS + SCSS mixin), optional morphicons module — see docs/USAGE.mdlocale_tabs partial — one panel per locale for per-locale form fields, WAI-ARIA tabs (keyboard, RTL, error / required / default markers with screen-reader text), stacked fieldsets without JavaScript, browser validation opens the hidden panel, nowo-ui:tabs:change for editors, Live Component safe — see docs/USAGE.md@NowoUiKit/error/status.html.twig: illustration, retry / back links, 429 Retry-After, 5xx self-reload, skip link, CSP nonce), the Stimulus confirm_dialog wrapper, the signed-in app shell (open / close halves, cookie-rendered aside, morph burger) and a compact pagination with an auto-submitting per-page select — see composer require nowo-tech/ui-kit-bundle
php bin/console assets:install
With Flex, the recipe creates config/packages/nowo_ui_kit.yaml. See docs/INSTALLATION.md and docs/RECIPE.md.
# config/packages/nowo_ui_kit.yaml
nowo_ui_kit:
css_framework: bootstrap5 # or: tailwind | foundation | custom
icon_set: bootstrap-icons
row_actions_display: icon # or: text | icon_text
# panel_path_rewrites: # optional (1.9.0+): rewrite kit routes + 301 legacy URLs
# '/admin/blog': '/panel/blog'
# release_check: # optional (1.10.0+): footer version + GitHub release dialog
# enabled: true
# github_repo: 'acme/my-app'
# current_version: '%app.version%'
{% import '@NowoUiKitBundle/macros/ui.html.twig' as ui %}
<link rel="stylesheet" href="{{ asset('css/nowo-ui.css', 'nowo_ui_kit') }}">
<button type="button" class="{{ ui.btn('primary') }}">Save</button>
See docs/USAGE.md and docs/CONFIGURATION.md.
REQ-UI-003 — UiKit owns the page shell of every Nowo UI bundle: canonical layouts, one scaffold per view type
(@NowoUiKit/page/{list,show,form,settings,dashboard,confirm,wizard,auth}.html.twig), immutable view models
(Nowo\UiKitBundle\View\*) and one global theme (nowo_ui_kit.theme: slot classes, attributes, partial overrides,
--nowo-ui-* tokens, per-bundle exceptions). A host themes each view type once; bundles fill data blocks only.
Screenshots of every scaffold (host theme and default theme): docs/PAGE_CONTRACT.md.
css_framework, partials, tokens, per-bundle exceptionsdocs/TEMPLATES.md)Nowo\UiKitBundle\Test\PageContractTestCase — shared contract test for UI bundles (needs phpunit/phpunit in the bundle's require-dev)FrankenPHP demos (Caddy + PHP). Runtime mode: FRANKENPHP_MODE (worker default; classic for per-request PHP). See docs/DEMO-FRANKENPHP.md.
| Demo | Port | Notes |
|---|---|---|
| demo/symfony8 | 8092 | Bootstrap 5 kitchen sink; page contract host-theme demo at /page-contract |
| demo/symfony8-tailwind | 8093 | Tailwind kitchen sink |
make -C demo up-symfony8
# open http://localhost:8092/
Developer-facing docs are English only (Contributing — Language policy).
--nowo-ui-* tokens)| Suite | Coverage |
|---|---|
| PHP (PHPUnit) | 100% lines (fail under 99% in CI) |
| TypeScript (Vitest) | ≥90% lines (Vitest thresholds) |
| Python | N/A |
composer install
make test
make test-coverage
make test-ts
pnpm install && pnpm run build
See docs/COVERAGE.md.
MIT — see LICENSE.
See docs/CONTRIBUTING.md. Install hooks with make setup-hooks (REQ-GIT-001).
_theme_boot.html.twig inlines a blocking script (CSP nonce) that applies theme / density / motion / font scale / contrast from <html> attributes before first paint, sharing storage keys with the theme toggledata-nowo-ui-sidebar-rail)?new=1): _open_modal_on_load.html.twig JSON island + nowo-ui-open-modal.js (CSP-safe, no inline JS).nowo-ui-filter-bar (38px / compact 34px controls, actions on one row) + _filter_actions.html.twig (icon / icon-only actions since 1.15), table.nowo-ui-data-table_page_transition.html.twig (View Transitions, no JS)src/Resources/assets/stimulus-peers/ (see docs/STIMULUS.md) — confirm-submit (form submit or single button click, blocked value), confirm-dialog, tabs, toast-stack, clipboard-copy, page-loader, release-status, auto-refresh, temporary-reveal, collapse-panel, datatable (optional DataTables dependency), responsive-table, filters-collapse, disclosure-icon (1.17), listing-customizer, product-tour (2.13, optional driver.js), multi-select (2.14: Tom Select chips for ChoiceType multiple filters via the nowo_ui_multi_select option, optional tom-select, skin css/nowo-ui-multi-select.css), date-range (2.15: one labelled from / to filter field DateRangeType with a range calendar, optional cally; two native date inputs without JavaScript)release_check config, _release_version.html.twig, nowo-ui-release.js) — see docs/CONFIGURATION.md_thinking_orb + nowo-ui-orb.js; page loader visual: orb|spinner (THIRD_PARTY.md)css_framework, icon_set, row_actions_display, appearance, route_links; i18n domain NowoUiKitBundle (en, es, it, fr, pt, de, nl)templates/bundles/NowoUiKitBundle/