blade系package - blade-ui-kit/blade-icons

Requirements

  • PHP 7.4 or higher

  • Laravel 8.0 or higher

という事で結構

つこてみる

拙作laravel10-starterのテストも兼ねて

% git clone https://gitlab.com/catatsumuri/laravel10-starter.git -b laravel-ui-bootstrap
Cloning into 'laravel10-starter'...
remote: Enumerating objects: 308, done.
remote: Counting objects: 100% (308/308), done.
remote: Compressing objects: 100% (279/279), done.
remote: Total 308 (delta 102), reused 85 (delta 6), pack-reused 0
Receiving objects: 100% (308/308), 155.64 KiB | 825.00 KiB/s, done.
Resolving deltas: 100% (102/102), done.

% %cd laravel10-starter/
% docker run --rm -it -v $(pwd):/app composer install
% ./vendor/bin/sail up

とsailが上がってる状態で

% cp .env.example .env

.env

APP_PORT=8000
VITE_HOST=localhost

この辺を必要であれば編集し

% ./vendor/bin/sail artisan key:gen
% ./vendor/bin/sail npm install
% ./vendor/bin/sail npm run dev

これで起動できるはず

パッケージの説明

説明によると

<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="w-6 h-6">
  <!-- SVG paths for the icon -->
</svg>

などという長えsvgをBlade Iconsを使用した場合以下のように短縮して書ける。これはご覧の通りlaravel componentの機能なのでその対応が必要ではあるだろうが

<x-icon-camera class="w-6 h-6" />

または @svg ディレクティブを使用して、

@svg('camera', 'w-6 h-6')

という事も可能のようである。なお、このパッケージは「ベースパッケージ」でありサードパーティー製のアイコンセットを導入しないと機能しない

アイコン検索

https://blade-ui-kit.com/blade-icons#search

特定のアイコンを検索可能

インストール

composer require blade-ui-kit/blade-icons
php artisan vendor:publish --tag=blade-icons

こちらはsailを使ってたときのlog

% ./vendor/bin/sail composer require blade-ui-kit/blade-icons
./composer.json has been updated
Running composer update blade-ui-kit/blade-icons
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Downloading blade-ui-kit/blade-icons (1.5.2)
  - Installing blade-ui-kit/blade-icons (1.5.2): Extracting archive
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

   INFO  Discovering packages.

  blade-ui-kit/blade-icons ........................................................................ DONE
  laravel/sail .................................................................................... DONE
  laravel/sanctum ................................................................................. DONE
  laravel/tinker .................................................................................. DONE
  laravel/ui ...................................................................................... DONE
  nesbot/carbon ................................................................................... DONE
  nunomaduro/collision ............................................................................ DONE
  nunomaduro/termwind ............................................................................. DONE
  spatie/laravel-ignition ......................................................................... DONE

83 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force

   INFO  No publishable resources for tag [laravel-assets].

No security vulnerability advisories found
Using version ^1.5 for blade-ui-kit/blade-icons


% ./vendor/bin/sail artisan vendor:publish --tag=blade-icons

   INFO  Publishing [blade-icons] assets.

  Copying file [vendor/blade-ui-kit/blade-icons/config/blade-icons.php] to [config/blade-icons.php]  DONE

以下はAIが日本語にコメントを書き換えた設定ファイルである

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | アイコンセット
    |--------------------------------------------------------------------------
    |
    | この設定項目を使用して、いくつかのデフォルトのアイコンセットを定義できます。
    | アイコンセットのキー名と以下のオプションの組み合わせを提供してください。
    |
    */

    'sets' => [

        // 'default' => [
        //
        //     /*
        //     |-----------------------------------------------------------------
        //     | アイコンのパス
        //     |-----------------------------------------------------------------
        //     |
        //     | アプリケーションのルートからのSVGアイコンディレクトリへの相対パスを指定します。
        //     | アイコンは再帰的にロードされるため、すべてのサブディレクトリをリストする必要はありません。
        //     |
        //     */
        //
        //     'path' => 'resources/svg',
        //
        //     /*
        //     |-----------------------------------------------------------------
        //     | ファイルシステムディスク
        //     |-----------------------------------------------------------------
        //     |
        //     | 必要に応じて、アイコンを読み込む特定のファイルシステムディスクを指定できます。
        //     | ディスクを定義すると、「path」オプションはディスクのルートから相対になります。
        //     |
        //     */
        //
        //     'disk' => '',
        //
        //     /*
        //     |-----------------------------------------------------------------
        //     | デフォルトの接頭辞
        //     |-----------------------------------------------------------------
        //     |
        //     | この設定項目を使用して、アイコンに適用されるデフォルトの接頭辞を定義できます。
        //     | ダッシュ区切りは、すべてのアイコン名に自動的に適用されます。一意である必要があります。
        //     |
        //     */
        //
        //     'prefix' => 'icon',
        //
        //     /*
        //     |-----------------------------------------------------------------
        //     | フォールバックアイコン
        //     |-----------------------------------------------------------------
        //     |
        //     | この設定項目を使用して、このセット内でアイコンが見つからない場合のフォールバックアイコンを定義できます。
        //     |
        //     */
        //
        //     'fallback' => '',
        //
        //     /*
        //     |-----------------------------------------------------------------
        //     | デフォルトセットクラス
        //     |-----------------------------------------------------------------
        //     |
        //     | この設定項目を使用して、このセット内のすべてのアイコンにデフォルトで適用されるクラスを定義できます。
        //     |
        //     */
        //
        //     'class' => '',
        //
        //     /*
        //     |-----------------------------------------------------------------
        //     | デフォルトセット属性
        //     |-----------------------------------------------------------------
        //     |
        //     | この設定項目を使用して、このセット内のすべてのアイコンにデフォルトで適用される属性を定義できます。
        //     |
        //     */
        //
        //     'attributes' => [
        //         // 'width' => 50,
        //         // 'height' => 50,
        //     ],
        //
        // ],

    ],

    /*
    |--------------------------------------------------------------------------
    | グローバルデフォルトクラス
    |--------------------------------------------------------------------------
    |
    | この設定項目を使用して、すべてのアイコンにデフォルトで適用されるクラスを定義できます。
    |
    */

    'class' => '',

    /*
    |--------------------------------------------------------------------------
    | グローバルデフォルト属性
    |--------------------------------------------------------------------------
    |
    | この設定項目を使用して、すべてのアイコンにデフォルトで適用される属性を定義できます。
    |
    */

    'attributes' => [
        // 'width' => 50,
        // 'height' => 50,
    ],

    /*
    |--------------------------------------------------------------------------
    | グローバルフォールバックアイコン
    |--------------------------------------------------------------------------
    |
    | この設定項目を使用して、任意のセットでアイコンが見つからない場合のグローバルフォールバックアイコンを定義できます。
    | これは、任意の設定されたセットからの任意のアイコンを参照できます。
    |
    */

    'fallback' => '',

    /*
    |--------------------------------------------------------------------------
    | コンポーネント
    |--------------------------------------------------------------------------
    |
    | これらの設定項目を使用して、Bladeコンポーネントに関するいくつかの設定を定義できます。
    |
    */

    'components' => [

        /*
        |----------------------------------------------------------------------
        | コンポーネントを無効にする
        |----------------------------------------------------------------------
        |
        | この設定項目を使用して、Bladeコンポーネントを完全に無効にできます。
        | 大きなアイコンライブラリで作業する際のパフォーマンス問題を避けるために便利です。
        |
        */

        'disabled' => false,

        /*
        |----------------------------------------------------------------------
        | デフォルトのアイコンコンポーネント名
        |----------------------------------------------------------------------
        |
        | この設定項目を使用して、デフォルトのアイコンクラスコンポーネントの名前を定義できます。
        |
        */

        'default' => 'icon',

    ],

];

fontawesomeを使ってみる

昔はiconセットといえばfontawesomeだった事もあったくらいだと思うけどまあいれてみよう

composer require owenvoke/blade-fontawesome


resources/views/auth/login.blade.php

<label for="email" class="col-md-4 col-form-label text-md-end"><x-fas-envelope /> {{ __('Email Address') }}</label>

こんな風に書くと…

こんな事になっちゃうので

あかんやつ
<label for="email" class="col-md-4 col-form-label text-md-end"><x-fas-envelope width="16" height="16" /> {{ __('Email Address') }}</label>

こんな風に縦横指定してあげればまあ使えるけど

やっぱイチイチ書くのは辛いからclassで指定した方がいいのかなあとも思いますナ。

とはいえ、アイコンセットをいろいろ切り替えられるので便利なパッケージであろうとは思われる。

この記事が気に入ったらサポートをしてみませんか?