unicon 2.0.0 → 3.0.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -0
- data/README.md +22 -12
- data/lib/unicon/icons/actions/editing.rb +8 -8
- data/lib/unicon/icons/actions/pointing.rb +11 -11
- data/lib/unicon/icons/actions/sending.rb +1 -1
- data/lib/unicon/icons/actions/switching.rb +1 -1
- data/lib/unicon/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5185fcb53bddca22d825b21bc104ef84c7a438044b5e13dd571f0d357a0aa7c7
|
|
4
|
+
data.tar.gz: 5c4e850fc0c106120f7ed1d43d68691ef2d641b2640e9fc2c912ea8bba07b7e1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: db39458a183eb6216358f66309846a53bba59a9b85d632abce1ea113beff48e179b0754df027f789756fcaf62f4127efbe0603990faca4588cb377965644453e
|
|
7
|
+
data.tar.gz: ae9ef7a68bf906abfeaeba957c050c0fdbec33be4118e75841cb70de6b3444afbc488bfcb7f3102ffccc83afc7293d025db75f7d48365cea82c12d0f95582651
|
data/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
3
3
|
Every entry says whether it is a fix, a feature or a breaking change, since that is
|
|
4
4
|
what decides both whether a reader can take it and what the next version number is.
|
|
5
5
|
|
|
6
|
+
## [3.0.0] - 2026-08-15
|
|
7
|
+
|
|
8
|
+
- **Breaking.** `Unicon.actions` is documented as the doing words, but a third of it
|
|
9
|
+
named pictures instead: a caller asking for `:trash` was naming the bin rather than
|
|
10
|
+
the deletion. Thirteen now read as the deed — `plus` is `add`, `minus` `subtract`,
|
|
11
|
+
`check` `confirm`, `pencil` `edit`, `trash` `delete`, `scissors` `cut`, `person_add`
|
|
12
|
+
`add_member`, `person_remove` `remove_member`, `ellipsis` `truncate`, `menu`
|
|
13
|
+
`open_menu`, `sidebar` `toggle_sidebar`, `printer` `print`, and `eye_slash` `hide`.
|
|
14
|
+
- **Breaking.** The eight directional names take verbs too, and deliberately different
|
|
15
|
+
ones, so the two pictures stay apart by their names alone. Every chevron is a `move`:
|
|
16
|
+
`chevron_up` is `move_up`, and the same for down, left and right. Every arrow is a
|
|
17
|
+
`point`: `arrow_up` is `point_up`, and the same three again.
|
|
18
|
+
- `power` is the one name left in `ACTIONS` that is a thing rather than a deed. It is
|
|
19
|
+
drawn the same whether it turns something on or off, so a verb would assert a
|
|
20
|
+
direction the picture does not.
|
|
21
|
+
- Nothing else moved. No alias pointed at a renamed name, so `:export`, `:import`,
|
|
22
|
+
`:sync` and `:subscription` still borrow the download, the upload, the refresh and
|
|
23
|
+
the repeat, and 306 names resolve as before, 135 of them aliases.
|
|
24
|
+
|
|
6
25
|
## [2.0.0] - 2026-08-15
|
|
7
26
|
|
|
8
27
|
- **Breaking.** `:brand` and `:franchise` were both `:building` aliases, so a sidebar
|
data/README.md
CHANGED
|
@@ -22,11 +22,18 @@ The keys are symbols and the names are frozen strings: a name is on its way into
|
|
|
22
22
|
`"bi bi-#{icon}"` or into JSON either way, and `person.crop.circle` is a string long
|
|
23
23
|
before it is a symbol.
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## How to install
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
To install on your system, run
|
|
28
|
+
|
|
29
|
+
gem install unicon
|
|
30
|
+
|
|
31
|
+
To use inside a bundled Ruby project, add this line to the Gemfile:
|
|
32
|
+
|
|
33
|
+
gem 'unicon', '~> 3.0'
|
|
34
|
+
|
|
35
|
+
Since the gem follows [Semantic Versioning](http://semver.org), indicating `~> *major*.*minor*`
|
|
36
|
+
guarantees your project won’t occur in breaking changes whenever you `bundle update`.
|
|
30
37
|
|
|
31
38
|
## The three keys
|
|
32
39
|
|
|
@@ -56,9 +63,9 @@ blank. A concept may be given as a string, so `Unicon['contact']` works too.
|
|
|
56
63
|
## Three lists, and which one you want
|
|
57
64
|
|
|
58
65
|
```ruby
|
|
59
|
-
Unicon.icons # => [:account, :airplane, :alarm, :archive, :award, :badge, ...]
|
|
60
|
-
Unicon.names # => [:account, :
|
|
61
|
-
Unicon.actions # => [:
|
|
66
|
+
Unicon.icons # => [:account, :airplane, :alarm, :archive, :award, :badge, ...] 129
|
|
67
|
+
Unicon.names # => [:account, :add, :add_member, :address, :agent, ...] 306
|
|
68
|
+
Unicon.actions # => [:add, :add_member, :close, :confirm, ...] 42
|
|
62
69
|
```
|
|
63
70
|
|
|
64
71
|
- `Unicon.icons` is **one name per distinct picture**. No two entries draw the same
|
|
@@ -66,9 +73,12 @@ Unicon.actions # => [:arrow_down, :arrow_left, :arrow_right, :arrow_up, ...]
|
|
|
66
73
|
- `Unicon.names` is **the union of all three groups** — the icons, the actions and the
|
|
67
74
|
model synonyms — and so every name that resolves. Ask for it to find out whether a
|
|
68
75
|
name draws something; ask for `icons` when somebody is choosing one.
|
|
69
|
-
- `Unicon.actions` is **the doing words**: `close`, `
|
|
76
|
+
- `Unicon.actions` is **the doing words**: `close`, `edit`, every `move`. A toolbar
|
|
70
77
|
needs them and `Unicon[:close]` answers, but nobody has a Close model, so `icons`
|
|
71
|
-
leaves them out on purpose.
|
|
78
|
+
leaves them out on purpose. Each names the deed rather than the picture of it — `add`
|
|
79
|
+
rather than `plus`, `delete` rather than `trash` — bar `power`, which is drawn the same
|
|
80
|
+
whether it turns something on or off. The four chevrons are `move_up` and its three
|
|
81
|
+
directions, the four arrows `point_up` and its three, so the families stay apart.
|
|
72
82
|
|
|
73
83
|
All three are frozen, sorted arrays of symbols; only what `fetch` returns is strings.
|
|
74
84
|
`Unicon::ICONS`, `Unicon::TABLE` and `Unicon::ACTIONS` are the tables behind them, for a
|
|
@@ -77,7 +87,7 @@ caller who wants the pictures as well as the names.
|
|
|
77
87
|
## Model names
|
|
78
88
|
|
|
79
89
|
A host app looks an icon up by the name of the model it is rendering, and the more names
|
|
80
|
-
answer, the less any app has to declare.
|
|
90
|
+
answer, the less any app has to declare. 131 of them borrow the icons of a concept —
|
|
81
91
|
`:user` takes the person, `:zip` takes the pin — and the Aliases column of the table below
|
|
82
92
|
says which took which. They resolve without swelling the list a picker offers.
|
|
83
93
|
|
|
@@ -97,11 +107,11 @@ licenses them for developing applications for Apple-branded products, and this r
|
|
|
97
107
|
is part of building one. They may not be redistributed for any other purpose, so anyone
|
|
98
108
|
reusing this gem outside that context should show the names alone.
|
|
99
109
|
|
|
100
|
-
The cells hold the icon and not its name, so the table stays readable at
|
|
110
|
+
The cells hold the icon and not its name, so the table stays readable at 129 rows. **The
|
|
101
111
|
name each system uses is on the icon**: hover it, or reach it with a screen reader, and
|
|
102
112
|
`Unicon[:search][:ios]` reads back as `magnifyingglass`.
|
|
103
113
|
|
|
104
|
-
The 42 action icons are not in the table. They are fetchable — `Unicon[:
|
|
114
|
+
The 42 action icons are not in the table. They are fetchable — `Unicon[:edit]` answers
|
|
105
115
|
— but they name what an app does rather than what it has, and this table is `Unicon.icons`
|
|
106
116
|
drawn out. `Unicon.actions` names them all.
|
|
107
117
|
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
module Unicon
|
|
2
2
|
# Changing a record, or what is shown of it
|
|
3
3
|
EDITING = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
add: { bootstrap: 'plus', ios: 'plus', android: 'add' },
|
|
5
|
+
subtract: { bootstrap: 'dash', ios: 'minus', android: 'remove' },
|
|
6
|
+
confirm: { bootstrap: 'check', ios: 'checkmark', android: 'check' },
|
|
7
7
|
close: { bootstrap: 'x', ios: 'xmark', android: 'close' },
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
edit: { bootstrap: 'pencil', ios: 'pencil', android: 'edit' },
|
|
9
|
+
delete: { bootstrap: 'trash', ios: 'trash', android: 'delete' },
|
|
10
10
|
copy: { bootstrap: 'copy', ios: 'doc.on.doc', android: 'content_copy' },
|
|
11
|
-
|
|
11
|
+
cut: { bootstrap: 'scissors', ios: 'scissors', android: 'content_cut' },
|
|
12
12
|
undo: { bootstrap: 'arrow-counterclockwise', ios: 'arrow.uturn.backward', android: 'undo' },
|
|
13
13
|
refresh: { bootstrap: 'arrow-clockwise', ios: 'arrow.clockwise', android: 'refresh' },
|
|
14
14
|
sort: { bootstrap: 'sort-down', ios: 'arrow.up.arrow.down', android: 'sort' },
|
|
15
15
|
zoom_in: { bootstrap: 'zoom-in', ios: 'plus.magnifyingglass', android: 'zoom_in' },
|
|
16
16
|
zoom_out: { bootstrap: 'zoom-out', ios: 'minus.magnifyingglass', android: 'zoom_out' },
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
add_member: { bootstrap: 'person-plus', ios: 'person.badge.plus', android: 'person_add' },
|
|
18
|
+
remove_member: {
|
|
19
19
|
bootstrap: 'person-dash', ios: 'person.badge.minus', android: 'person_remove',
|
|
20
20
|
},
|
|
21
21
|
}.freeze
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
module Unicon
|
|
2
2
|
# Where a control leads, and what it opens
|
|
3
3
|
POINTING = {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
move_up: { bootstrap: 'chevron-up', ios: 'chevron.up', android: 'keyboard_arrow_up' },
|
|
5
|
+
move_down: {
|
|
6
6
|
bootstrap: 'chevron-down', ios: 'chevron.down', android: 'keyboard_arrow_down',
|
|
7
7
|
},
|
|
8
|
-
|
|
8
|
+
move_left: {
|
|
9
9
|
bootstrap: 'chevron-left', ios: 'chevron.left', android: 'keyboard_arrow_left',
|
|
10
10
|
},
|
|
11
|
-
|
|
11
|
+
move_right: {
|
|
12
12
|
bootstrap: 'chevron-right', ios: 'chevron.right', android: 'keyboard_arrow_right',
|
|
13
13
|
},
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
point_up: { bootstrap: 'arrow-up', ios: 'arrow.up', android: 'arrow_upward' },
|
|
15
|
+
point_down: { bootstrap: 'arrow-down', ios: 'arrow.down', android: 'arrow_downward' },
|
|
16
|
+
point_left: { bootstrap: 'arrow-left', ios: 'arrow.left', android: 'arrow_back' },
|
|
17
|
+
point_right: { bootstrap: 'arrow-right', ios: 'arrow.right', android: 'arrow_forward' },
|
|
18
|
+
open_menu: { bootstrap: 'list', ios: 'line.3.horizontal', android: 'menu' },
|
|
19
|
+
truncate: { bootstrap: 'three-dots', ios: 'ellipsis', android: 'more_horiz' },
|
|
20
|
+
toggle_sidebar: { bootstrap: 'layout-sidebar', ios: 'sidebar.left', android: 'view_sidebar' },
|
|
21
21
|
}.freeze
|
|
22
22
|
end
|
|
@@ -5,6 +5,6 @@ module Unicon
|
|
|
5
5
|
share: { bootstrap: 'share', ios: 'square.and.arrow.up', android: 'share' },
|
|
6
6
|
download: { bootstrap: 'download', ios: 'arrow.down.circle', android: 'download' },
|
|
7
7
|
upload: { bootstrap: 'upload', ios: 'arrow.up.circle', android: 'upload' },
|
|
8
|
-
|
|
8
|
+
print: { bootstrap: 'printer', ios: 'printer', android: 'print' },
|
|
9
9
|
}.freeze
|
|
10
10
|
end
|
|
@@ -10,7 +10,7 @@ module Unicon
|
|
|
10
10
|
bootstrap: 'box-arrow-right', ios: 'rectangle.portrait.and.arrow.right', android: 'logout',
|
|
11
11
|
},
|
|
12
12
|
unlock: { bootstrap: 'unlock', ios: 'lock.open', android: 'lock_open' },
|
|
13
|
-
|
|
13
|
+
hide: { bootstrap: 'eye-slash', ios: 'eye.slash', android: 'visibility_off' },
|
|
14
14
|
power: { bootstrap: 'power', ios: 'power', android: 'power_settings_new' },
|
|
15
15
|
}.freeze
|
|
16
16
|
end
|
data/lib/unicon/version.rb
CHANGED