phoenix_duskmoon 9.0.0-rc.4 → 9.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,14 @@
1
1
  # PhoenixDuskmoon
2
2
 
3
- [![release](https://github.com/duskmoon-dev/phoenix-duskmoon-ui/actions/workflows/test-and-release.yml/badge.svg)](https://github.com/duskmoon-dev/phoenix-duskmoon-ui/actions/workflows/test-and-release.yml)
3
+ [![CI](https://github.com/duskmoon-dev/phoenix-duskmoon-ui/actions/workflows/ci.yml/badge.svg)](https://github.com/duskmoon-dev/phoenix-duskmoon-ui/actions/workflows/ci.yml)
4
+ [![Release](https://github.com/duskmoon-dev/phoenix-duskmoon-ui/actions/workflows/release.yml/badge.svg)](https://github.com/duskmoon-dev/phoenix-duskmoon-ui/actions/workflows/release.yml)
5
+ [![Hex.pm](https://img.shields.io/hexpm/v/phoenix_duskmoon.svg)](https://hex.pm/packages/phoenix_duskmoon)
6
+ [![Hex Docs](https://img.shields.io/badge/hex-docs-lightgreen.svg)](https://hexdocs.pm/phoenix_duskmoon/)
7
+ [![npm](https://img.shields.io/npm/v/phoenix_duskmoon.svg)](https://www.npmjs.com/package/phoenix_duskmoon)
4
8
 
5
- Provides Duskmoon UI for Phoenix project.
9
+ Duskmoon UI component library for Phoenix LiveView applications.
6
10
 
7
- **v9**: Uses `@duskmoon-dev/core` CSS design system and HTML Custom Elements (`duskmoon-elements`).
11
+ **v9**: Uses `@duskmoon-dev/core` CSS design system, HTML Custom Elements (`@duskmoon-dev/elements`), and Art Custom Elements (`@duskmoon-dev/art-elements`).
8
12
 
9
13
  Requires `tailwindcss >= 4.0`
10
14
 
@@ -13,41 +17,138 @@ See the [docs](https://hexdocs.pm/phoenix_duskmoon/) for more information.
13
17
 
14
18
  ## Install
15
19
 
16
- Add deps in `mix.exs`
20
+ Add to `mix.exs`:
21
+
17
22
  ```elixir
18
- {:phoenix_duskmoon, "~> 9.0"},
23
+ {:phoenix_duskmoon, "~> 9.0"},
19
24
  ```
20
25
 
21
26
  Install frontend packages:
27
+
22
28
  ```bash
23
29
  bun add @duskmoon-dev/core @duskmoon-dev/elements
24
30
  ```
25
31
 
26
- Include in phoenix view helpers
32
+ Optionally, add CSS Art and Art Custom Elements support:
33
+
34
+ ```bash
35
+ bun add @duskmoon-dev/css-art @duskmoon-dev/art-elements
36
+ ```
37
+
38
+ ### View Helpers
39
+
40
+ Add to your Phoenix view helpers (e.g. `lib/my_app_web.ex`):
27
41
 
28
42
  ```elixir
29
43
  defp html_helpers do
30
44
  quote do
31
- # import all duskmoon ui component
45
+ # Standard UI components (buttons, cards, forms, navigation, etc.)
32
46
  use PhoenixDuskmoon.Component
33
- # import all duskmoon ui fun component
34
- use PhoenixDuskmoon.Fun
47
+ # CSS Art decorative components (snow, plasma ball, eclipse, etc.)
48
+ use PhoenixDuskmoon.CssArt
35
49
  end
36
50
  end
37
51
  ```
38
52
 
39
- Import `css`
53
+ ### CSS Setup
40
54
 
41
- ```css
42
- @source "../js/**/*.js";
43
- @source '../../lib/**/*.exs';
44
- @source '../../lib/**/*.ex';
55
+ In your CSS entry file (e.g. `assets/css/app.css`):
45
56
 
57
+ ```css
46
58
  @import "tailwindcss";
47
- @import "@duskmoon-dev/core";
59
+ @plugin "@duskmoon-dev/core/plugin";
48
60
  @import "phoenix_duskmoon/components";
49
61
  ```
50
62
 
63
+ ### JavaScript Setup
64
+
65
+ Register the custom elements in `assets/js/app.js`:
66
+
67
+ ```javascript
68
+ import "@duskmoon-dev/elements/register";
69
+ // Optionally, register art custom elements
70
+ import "@duskmoon-dev/art-elements/register";
71
+ ```
72
+
73
+ ### Hooks Setup
74
+
75
+ Some components require LiveView hooks. Add them when creating your `LiveSocket`:
76
+
77
+ ```javascript
78
+ import {LiveSocket} from "phoenix_live_view"
79
+ import * as DuskmoonHooks from "phoenix_duskmoon/hooks"
80
+
81
+ let liveSocket = new LiveSocket("/live", Socket, {
82
+ params: {_csrf_token: csrfToken},
83
+ hooks: DuskmoonHooks
84
+ })
85
+ ```
86
+
87
+ Components that require hooks:
88
+ - `<.dm_theme_switcher>` — theme switching with localStorage
89
+ - `<.dmf_spotlight>` — keyboard shortcut handling (Cmd/Ctrl+K)
90
+ - `<.dm_page_header>` — scroll-based intersection observer
91
+
92
+
93
+ ## Usage
94
+
95
+ ### Buttons
96
+
97
+ ```heex
98
+ <.dm_btn variant="primary">Click me</.dm_btn>
99
+ <.dm_btn variant="secondary" loading={@loading}>Loading</.dm_btn>
100
+ <.dm_btn variant="error" shape="circle">×</.dm_btn>
101
+ ```
102
+
103
+ ### Cards
104
+
105
+ ```heex
106
+ <.dm_card class="p-6">
107
+ <:title><h3>Title</h3></:title>
108
+ <p>Content here</p>
109
+ <:footer><.dm_btn>Action</.dm_btn></:footer>
110
+ </.dm_card>
111
+ ```
112
+
113
+ ### Icons
114
+
115
+ ```heex
116
+ <.dm_mdi name="home" />
117
+ <.dm_bsi name="house" />
118
+ ```
119
+
120
+ ### Forms
121
+
122
+ ```heex
123
+ <.dm_form for={@form} phx-submit="save">
124
+ <.dmf_input field={@form[:email]} label="Email" />
125
+ <.dm_btn variant="primary" type="submit">Save</.dm_btn>
126
+ </.dm_form>
127
+ ```
128
+
129
+ ### Common Attributes
130
+
131
+ | Attribute | Values |
132
+ |-----------|--------|
133
+ | `variant` | `primary`, `secondary`, `accent`, `info`, `success`, `warning`, `error`, `ghost`, `link`, `outline` |
134
+ | `size` | `xs`, `sm`, `md`, `lg` |
135
+ | `shape` | `square`, `circle` |
136
+ | `loading` | boolean |
137
+ | `disabled`| boolean |
138
+ | `class` | additional CSS classes |
139
+
140
+
141
+ ## Available Components
142
+
143
+ - **Action**: buttons, dropdowns, links, menus, toggles
144
+ - **Data Display**: accordion, avatar, badge, card, chip, collapse, flash, list, markdown, pagination, popover, progress, skeleton, stat, table, timeline, tooltip
145
+ - **Data Entry**: autocomplete, cascader, checkbox, compact input, file upload, form, input, multi-select, OTP input, PIN input, radio, rating, segment control, select, slider, switch, textarea, time input, tree select
146
+ - **Feedback**: dialog, loading, snackbar, toast
147
+ - **Navigation**: actionbar, appbar, bottom nav, breadcrumb, left menu, navbar, nested menu, page footer, page header, stepper, steps, tabs
148
+ - **Layout**: bottom sheet, divider, drawer, theme switcher
149
+ - **CSS Art**: button noise, eclipse, plasma ball, signature, snow, spotlight search
150
+
151
+
51
152
  ## Live Storybook
52
153
 
53
154
  [Live Storybook](https://duskmoon-storybook.gsmlg.dev)
@@ -13,6 +13,18 @@
13
13
 
14
14
  el-dm-accordion,
15
15
  el-dm-alert,
16
+ el-dm-art-atom,
17
+ el-dm-art-cat-stargazer,
18
+ el-dm-art-circular-gallery,
19
+ el-dm-art-color-spin,
20
+ el-dm-art-eclipse,
21
+ el-dm-art-flower-animation,
22
+ el-dm-art-moon,
23
+ el-dm-art-mountain,
24
+ el-dm-art-plasma-ball,
25
+ el-dm-art-snow,
26
+ el-dm-art-sun,
27
+ el-dm-art-synthwave-starfield,
16
28
  el-dm-autocomplete,
17
29
  el-dm-badge,
18
30
  el-dm-bottom-navigation,
@@ -20,6 +32,7 @@ el-dm-bottom-sheet,
20
32
  el-dm-breadcrumbs,
21
33
  el-dm-button,
22
34
  el-dm-card,
35
+ el-dm-cascader,
23
36
  el-dm-chip,
24
37
  el-dm-datepicker,
25
38
  el-dm-dialog,
@@ -32,7 +45,9 @@ el-dm-menu,
32
45
  el-dm-navbar,
33
46
  el-dm-pagination,
34
47
  el-dm-popover,
48
+ el-dm-pro-data-grid,
35
49
  el-dm-progress,
50
+ el-dm-select,
36
51
  el-dm-slider,
37
52
  el-dm-stepper,
38
53
  el-dm-switch,
@@ -11,10 +11,17 @@
11
11
  @import "@duskmoon-dev/core/components";
12
12
  @import "./element-theme-bridge.css";
13
13
 
14
- /* CSS Art — decorative/animated visual effects */
15
- @import "./css_art/button-noise.css";
16
- @import "./css_art/eclipse.css";
17
- @import "./css_art/plasma-ball.css";
18
- @import "./css_art/signature.css";
19
- @import "./css_art/snow.css";
20
- @import "./css_art/spotlight-search.css";
14
+ /* CSS Art — decorative/animated visual effects from @duskmoon-dev/css-art */
15
+ @import "@duskmoon-dev/css-art/dist/art/atom.css";
16
+ @import "@duskmoon-dev/css-art/dist/art/cat-stargazer.css";
17
+ @import "@duskmoon-dev/css-art/dist/art/circular-gallery.css";
18
+ @import "@duskmoon-dev/css-art/dist/art/color-spin.css";
19
+ @import "@duskmoon-dev/css-art/dist/art/eclipse.css";
20
+ @import "@duskmoon-dev/css-art/dist/art/flower-animation.css";
21
+ @import "@duskmoon-dev/css-art/dist/art/gemini-input.css";
22
+ @import "@duskmoon-dev/css-art/dist/art/moon.css";
23
+ @import "@duskmoon-dev/css-art/dist/art/mountain.css";
24
+ @import "@duskmoon-dev/css-art/dist/art/plasma-ball.css";
25
+ @import "@duskmoon-dev/css-art/dist/art/snow.css";
26
+ @import "@duskmoon-dev/css-art/dist/art/sun.css";
27
+ @import "@duskmoon-dev/css-art/dist/art/synthwave-starfield.css";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "phoenix_duskmoon",
3
- "version": "9.0.0-rc.4",
3
+ "version": "9.0.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./priv/static/phoenix_duskmoon.js",
@@ -30,7 +30,9 @@
30
30
  "registry": "https://registry.npmjs.org/"
31
31
  },
32
32
  "dependencies": {
33
+ "@duskmoon-dev/art-elements": ">=0.9.0",
33
34
  "@duskmoon-dev/core": ">=1.11.0",
35
+ "@duskmoon-dev/css-art": ">=1.12.0",
34
36
  "@duskmoon-dev/elements": ">=0.5.0"
35
37
  },
36
38
  "devDependencies": {