active_s95 1.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.
Files changed (71) hide show
  1. checksums.yaml +7 -0
  2. data/LICENCE.txt +24 -0
  3. data/README.md +120 -0
  4. data/app/assets/fonts/Lato-Bold.eot +0 -0
  5. data/app/assets/fonts/Lato-Bold.ttf +0 -0
  6. data/app/assets/fonts/Lato-Bold.woff +0 -0
  7. data/app/assets/fonts/Lato-Bold.woff2 +0 -0
  8. data/app/assets/fonts/Lato-BoldItalic.eot +0 -0
  9. data/app/assets/fonts/Lato-BoldItalic.ttf +0 -0
  10. data/app/assets/fonts/Lato-BoldItalic.woff +0 -0
  11. data/app/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  12. data/app/assets/fonts/Lato-Italic.eot +0 -0
  13. data/app/assets/fonts/Lato-Italic.ttf +0 -0
  14. data/app/assets/fonts/Lato-Italic.woff +0 -0
  15. data/app/assets/fonts/Lato-Italic.woff2 +0 -0
  16. data/app/assets/fonts/Lato-Regular.eot +0 -0
  17. data/app/assets/fonts/Lato-Regular.ttf +0 -0
  18. data/app/assets/fonts/Lato-Regular.woff +0 -0
  19. data/app/assets/fonts/Lato-Regular.woff2 +0 -0
  20. data/app/assets/javascripts/arctic_admin/base.js +2 -0
  21. data/app/assets/javascripts/arctic_admin/main.js +105 -0
  22. data/app/assets/stylesheets/arctic_admin/_base.scss +30 -0
  23. data/app/assets/stylesheets/arctic_admin/_buttons.scss +80 -0
  24. data/app/assets/stylesheets/arctic_admin/_common.scss +101 -0
  25. data/app/assets/stylesheets/arctic_admin/_custom_enhancements.scss +275 -0
  26. data/app/assets/stylesheets/arctic_admin/_fonts.scss +47 -0
  27. data/app/assets/stylesheets/arctic_admin/_grid.scss +4 -0
  28. data/app/assets/stylesheets/arctic_admin/_main.scss +57 -0
  29. data/app/assets/stylesheets/arctic_admin/_mobile_utilities.scss +212 -0
  30. data/app/assets/stylesheets/arctic_admin/_reset.scss +41 -0
  31. data/app/assets/stylesheets/arctic_admin/components/_columns.scss +4 -0
  32. data/app/assets/stylesheets/arctic_admin/components/_comments.scss +49 -0
  33. data/app/assets/stylesheets/arctic_admin/components/_date_picker.scss +38 -0
  34. data/app/assets/stylesheets/arctic_admin/components/_dialogs.scss +23 -0
  35. data/app/assets/stylesheets/arctic_admin/components/_flash.scss +32 -0
  36. data/app/assets/stylesheets/arctic_admin/components/_form.scss +182 -0
  37. data/app/assets/stylesheets/arctic_admin/components/_inputs.scss +218 -0
  38. data/app/assets/stylesheets/arctic_admin/components/_pagination.scss +80 -0
  39. data/app/assets/stylesheets/arctic_admin/components/_panel_contents.scss +126 -0
  40. data/app/assets/stylesheets/arctic_admin/components/_select2.scss +50 -0
  41. data/app/assets/stylesheets/arctic_admin/components/_status_tag.scss +41 -0
  42. data/app/assets/stylesheets/arctic_admin/components/_tables.scss +434 -0
  43. data/app/assets/stylesheets/arctic_admin/components/_tabs.scss +51 -0
  44. data/app/assets/stylesheets/arctic_admin/components/_toggle.scss +77 -0
  45. data/app/assets/stylesheets/arctic_admin/layouts/_filter.scss +142 -0
  46. data/app/assets/stylesheets/arctic_admin/layouts/_footer.scss +4 -0
  47. data/app/assets/stylesheets/arctic_admin/layouts/_header.scss +444 -0
  48. data/app/assets/stylesheets/arctic_admin/layouts/_main_content.scss +47 -0
  49. data/app/assets/stylesheets/arctic_admin/layouts/_sidebar.scss +150 -0
  50. data/app/assets/stylesheets/arctic_admin/layouts/_wrapper.scss +8 -0
  51. data/app/assets/stylesheets/arctic_admin/mixins/_buttons_mixins.scss +142 -0
  52. data/app/assets/stylesheets/arctic_admin/mixins/_forms.scss +9 -0
  53. data/app/assets/stylesheets/arctic_admin/mixins/_mixins.scss +4 -0
  54. data/app/assets/stylesheets/arctic_admin/mixins/_prefix_mixins.scss +63 -0
  55. data/app/assets/stylesheets/arctic_admin/mixins/_sidebar_mixins.scss +24 -0
  56. data/app/assets/stylesheets/arctic_admin/pages/_form.scss +124 -0
  57. data/app/assets/stylesheets/arctic_admin/pages/_index.scss +207 -0
  58. data/app/assets/stylesheets/arctic_admin/pages/_login.scss +65 -0
  59. data/app/assets/stylesheets/arctic_admin/pages/_show.scss +3 -0
  60. data/app/assets/stylesheets/arctic_admin/variables/_borders.scss +7 -0
  61. data/app/assets/stylesheets/arctic_admin/variables/_box_shadows.scss +6 -0
  62. data/app/assets/stylesheets/arctic_admin/variables/_colors.scss +59 -0
  63. data/app/assets/stylesheets/arctic_admin/variables/_fonts.scss +10 -0
  64. data/app/assets/stylesheets/arctic_admin/variables/_icons.scss +17 -0
  65. data/app/assets/stylesheets/arctic_admin/variables/_media_queries.scss +41 -0
  66. data/app/assets/stylesheets/arctic_admin/variables/_size.scss +15 -0
  67. data/app/assets/stylesheets/arctic_admin/variables/_spaces.scss +31 -0
  68. data/app/assets/stylesheets/arctic_admin/variables/_variables.scss +7 -0
  69. data/lib/active_s95/version.rb +3 -0
  70. data/lib/arctic_admin.rb +9 -0
  71. metadata +171 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 91ecc990ce2b436b1c272709f57ffc690b3f11bde9ec954925165682bbbfae3c
4
+ data.tar.gz: 62b7d58297dc76bb288673c37881c100e43824864a3c5af22426186bdf98075a
5
+ SHA512:
6
+ metadata.gz: b2d86afe1e5e37dc91f2955574298a0168480ff4298bae0a1fae5f7e298d18934bcf7028cd85dc434204bbcfd2c641bdce81bc64502d268c2de3b30e2fe5564c
7
+ data.tar.gz: e8a82174dcfd60b64960def19cdcccdc6e0b0048cb205fd1ef927fbf36cca0ee0bb9ec0629d7fca33747ed141393d98ef4ae0a67ba41d626d57e7deb907c9e45
data/LICENCE.txt ADDED
@@ -0,0 +1,24 @@
1
+ This is free and unencumbered software released into the public domain.
2
+
3
+ Anyone is free to copy, modify, publish, use, compile, sell, or
4
+ distribute this software, either in source code form or as a compiled
5
+ binary, for any purpose, commercial or non-commercial, and by any
6
+ means.
7
+
8
+ In jurisdictions that recognize copyright laws, the author or authors
9
+ of this software dedicate any and all copyright interest in the
10
+ software to the public domain. We make this dedication for the benefit
11
+ of the public at large and to the detriment of our heirs and
12
+ successors. We intend this dedication to be an overt act of
13
+ relinquishment in perpetuity of all present and future rights to this
14
+ software under copyright law.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ For more information, please refer to <https://unlicense.org/>
data/README.md ADDED
@@ -0,0 +1,120 @@
1
+ # Active S95
2
+
3
+
4
+ ## Installation
5
+
6
+ Add this line to your application's Gemfile:
7
+
8
+ ```ruby
9
+ gem 'active_s95'
10
+ ```
11
+
12
+ Then execute:
13
+
14
+ ```bash
15
+ bundle install
16
+ ```
17
+
18
+ Or install it yourself:
19
+
20
+ ```bash
21
+ gem install active_s95
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ ### Basic Setup
27
+
28
+ In your ActiveAdmin stylesheet (`app/assets/stylesheets/active_admin.scss`), replace the default import with:
29
+
30
+ ```scss
31
+ @import "active_s95";
32
+ ```
33
+
34
+ ### JavaScript Setup
35
+
36
+ In your ActiveAdmin JavaScript file (`app/assets/javascripts/active_admin.js`), add:
37
+
38
+ ```javascript
39
+ //= require active_s95/main
40
+ ```
41
+
42
+ That's it! Your ActiveAdmin interface will now use the Active S95 theme.
43
+
44
+
45
+
46
+ ### Overriding Styles
47
+
48
+ You can customize the theme by adding your own styles after the import:
49
+
50
+ ```scss
51
+ @import "active_s95";
52
+
53
+ // Your custom overrides
54
+ .active_admin {
55
+ // Custom styles here
56
+ }
57
+ ```
58
+
59
+ ### Color Scheme
60
+
61
+ The theme uses a carefully crafted color palette. You can override variables before importing:
62
+
63
+ ```scss
64
+ // Define your custom colors
65
+ $primary-color: #your-color;
66
+ $secondary-color: #your-color;
67
+
68
+ @import "active_s95";
69
+ ```
70
+
71
+ ## Development
72
+
73
+ ### Prerequisites
74
+
75
+ - Ruby 2.5+
76
+ - Bundler ~> 1.5
77
+ - ActiveAdmin >= 1.1.0
78
+
79
+ ### Setup
80
+
81
+ Clone the repository:
82
+
83
+ ```bash
84
+ git clone https://github.com/SomeoneUnlicensed/active_s95.git
85
+ cd active_s95
86
+ ```
87
+
88
+ Install dependencies:
89
+
90
+ ```bash
91
+ bundle install
92
+ yarn install # or npm install
93
+ ```
94
+
95
+ ### Building
96
+
97
+ To prepare the package for publishing:
98
+
99
+ ```bash
100
+ yarn prepublishOnly
101
+ ```
102
+
103
+ This will copy assets to the `src` directory for distribution.
104
+
105
+ ## Requirements
106
+
107
+ - **ActiveAdmin**: 1.1.0 - 3.x
108
+ - **Font Awesome Sass**: ~> 6.0
109
+ - **Ruby**: 2.5+
110
+
111
+ ## Contributing
112
+
113
+ Contributions are welcome! Please feel free to submit a Pull Request.
114
+
115
+ 1. Fork the repository
116
+ 2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
117
+ 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
118
+ 4. Push to the branch (`git push origin feature/AmazingFeature`)
119
+ 5. Open a Pull Request
120
+
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,2 @@
1
+ //= require active_admin/base
2
+ //= require ./main
@@ -0,0 +1,105 @@
1
+ // right filter sidebar toggle
2
+ function sidebar() {
3
+ return document.querySelector('#sidebar')
4
+ }
5
+ function sidebarToggle(event) {
6
+ const insideSection = document.querySelector('#filters_sidebar_section')
7
+
8
+ if (!(event.target === insideSection || insideSection.contains(event.target)) && event.target.className != "select2-selection__choice__remove") {
9
+ sidebar().classList.toggle('sidebar_open')
10
+ }
11
+ }
12
+
13
+ // left menu sidebar toggle with menu button
14
+ function menuButton() {
15
+ return document.querySelector('#utility_nav')
16
+ }
17
+ function menu() {
18
+ return document.querySelector('#tabs')
19
+ }
20
+ function menuToggle(event) {
21
+ const currentUser = document.querySelector('#current_user')
22
+ const logout = document.querySelector('#logout')
23
+ const forbiddenLinks = event.target === logout ||
24
+ logout.contains(event.target) ||
25
+ event.target === currentUser ||
26
+ (currentUser && currentUser.contains(event.target))
27
+ if (!forbiddenLinks) {
28
+ menu().classList.toggle('tabs_open')
29
+ }
30
+ }
31
+
32
+ // left menu sidebar close on any click outside
33
+ function menuClose(event) {
34
+ const forbiddenLinks = event.target === menu ||
35
+ menu().contains(event.target) ||
36
+ event.target === menuButton() ||
37
+ menuButton().contains(event.target)
38
+ if (menu().classList.contains('tabs_open') && !forbiddenLinks) {
39
+ menu().classList.remove('tabs_open')
40
+ }
41
+ }
42
+
43
+ // nested menu items toggle
44
+ function nestedMenuItems() {
45
+ return document.querySelectorAll('#tabs .has_nested')
46
+ }
47
+
48
+ // add event listeners
49
+ function addListeners() {
50
+
51
+ // right filter sidebar toggle
52
+ if (sidebar()) {
53
+ sidebar().addEventListener('click', sidebarToggle)
54
+ }
55
+
56
+ // left menu sidebar toggle with menu button
57
+ if (menuButton()) {
58
+ menuButton().addEventListener('click', menuToggle)
59
+ }
60
+
61
+ // left menu sidebar close on any click outside
62
+ document.body.addEventListener('click', menuClose)
63
+
64
+ // nested menu items toggle
65
+ nestedMenuItems().forEach(
66
+ (nestedMenuItem) => {
67
+ nestedMenuItem.addEventListener('click', (e) => {
68
+ e.stopPropagation()
69
+ nestedMenuItem.classList.toggle('open')
70
+ })
71
+ }
72
+ )
73
+ }
74
+
75
+ // remove all previous eventListeners
76
+ function removeListeners() {
77
+
78
+ // right filter sidebar toggle
79
+ if (sidebar()) {
80
+ sidebar().removeEventListener('click', sidebarToggle)
81
+ }
82
+
83
+ // left menu sidebar toggle with menu button
84
+ menuButton().removeEventListener('click', menuToggle)
85
+
86
+ // left menu sidebar close on any click outside
87
+ document.body.removeEventListener('click', menuClose)
88
+
89
+ // nested menu items toggle
90
+ nestedMenuItems().forEach(
91
+ (nestedMenuItem) => {
92
+ nestedMenuItem.removeEventListener('click', (e) => {
93
+ e.stopPropagation()
94
+ nestedMenuItem.classList.toggle('open')
95
+ })
96
+ }
97
+ )
98
+ }
99
+
100
+ document.addEventListener('DOMContentLoaded', addListeners)
101
+
102
+ document.addEventListener('turbolinks:load', () => {
103
+ removeListeners()
104
+ addListeners()
105
+ })
@@ -0,0 +1,30 @@
1
+ @import "font-awesome";
2
+
3
+ @import "reset";
4
+ @import "fonts";
5
+ @import "variables/variables";
6
+
7
+ @import "mixins/mixins";
8
+
9
+ @import "common";
10
+ @import "buttons";
11
+ @import "grid";
12
+
13
+ @import "components/*";
14
+ @import "layouts/*";
15
+ @import "pages/*";
16
+
17
+ body {
18
+ font-family: $font-family-body;
19
+ background-color: $body-background;
20
+ color: $text-color;
21
+ }
22
+
23
+ h1, h2, h3, h4, h5, h6 {
24
+ margin-top: 0;
25
+ }
26
+
27
+ a {
28
+ color: $link-primary-color;
29
+ text-decoration: none;
30
+ }
@@ -0,0 +1,80 @@
1
+ .button {
2
+ background: linear-gradient(135deg, $indigo 0%, $indigo-dark 100%);
3
+ color: #fff;
4
+ border: none;
5
+ border-radius: $border-radius-button;
6
+ display: inline-block;
7
+ cursor: pointer;
8
+ padding: 10px 20px;
9
+ font-size: 15px;
10
+ font-weight: 600;
11
+ box-shadow: $box-shadow-button;
12
+ transition: all 0.3s ease;
13
+ text-transform: uppercase;
14
+ letter-spacing: 0.5px;
15
+ min-height: 44px; // Touch target minimum
16
+ align-items: center;
17
+ justify-content: center;
18
+
19
+ @media screen and (max-width: $sm-width) {
20
+ font-size: 13px;
21
+ padding: 10px 16px;
22
+ letter-spacing: 0.3px;
23
+ }
24
+
25
+ &:hover {
26
+ background: linear-gradient(135deg, $indigo-light 0%, $indigo 100%);
27
+ box-shadow: $box-shadow-hover;
28
+ transform: translateY(-2px);
29
+
30
+ @media screen and (max-width: $md-width) {
31
+ transform: none;
32
+ }
33
+ }
34
+
35
+ &:active,
36
+ &:focus {
37
+ outline: 0;
38
+ transform: translateY(0);
39
+ box-shadow: $box-shadow;
40
+ }
41
+
42
+ &.small {
43
+ padding: 6px 14px;
44
+ font-size: 12px;
45
+ min-height: 36px;
46
+
47
+ @media screen and (max-width: $sm-width) {
48
+ padding: 6px 12px;
49
+ font-size: 11px;
50
+ }
51
+ }
52
+
53
+ &.large {
54
+ padding: 14px 28px;
55
+ font-size: 17px;
56
+ min-height: 52px;
57
+
58
+ @media screen and (max-width: $sm-width) {
59
+ padding: 12px 20px;
60
+ font-size: 15px;
61
+ min-height: 48px;
62
+ }
63
+ }
64
+
65
+ &.action {
66
+ margin-right: 6px;
67
+
68
+ @media screen and (max-width: $sm-width) {
69
+ margin-right: 4px;
70
+ margin-bottom: 6px;
71
+ }
72
+ }
73
+
74
+ &.disabled,
75
+ &:disabled {
76
+ opacity: 0.5;
77
+ cursor: not-allowed;
78
+ transform: none !important;
79
+ }
80
+ }
@@ -0,0 +1,101 @@
1
+ code {
2
+ display: block;
3
+ background-color: #272822;
4
+ padding: 5px;
5
+ color: white;
6
+ }
7
+
8
+ hr {
9
+ border: 1px solid $border-color;
10
+ color: $primary-color;
11
+ margin: 10px auto 25px auto;
12
+ }
13
+
14
+ h1,
15
+ h2,
16
+ h3,
17
+ h4,
18
+ h5,
19
+ h6 {
20
+ font-family: $font-family-accent;
21
+
22
+ &.page_title,
23
+ &.section_title {
24
+ text-transform: uppercase;
25
+ font-weight: 800;
26
+ letter-spacing: 1.5px;
27
+ color: $indigo-dark;
28
+ }
29
+ }
30
+
31
+ .title {
32
+ font-family: $font-family-accent;
33
+ font-weight: 700;
34
+ color: $indigo;
35
+ }
36
+
37
+ #site_title,
38
+ .site_title {
39
+ font-family: $font-family-accent !important;
40
+ font-weight: 900 !important;
41
+ font-size: 22px !important;
42
+ letter-spacing: 2px !important;
43
+ text-transform: uppercase !important;
44
+ background: linear-gradient(135deg, $indigo 0%, $indigo-light 100%);
45
+ -webkit-background-clip: text;
46
+ -webkit-text-fill-color: transparent;
47
+ background-clip: text;
48
+ }
49
+
50
+ .action_item a {
51
+ transition: all 0.2s ease;
52
+
53
+ &:hover {
54
+ color: $indigo;
55
+ transform: translateX(3px);
56
+ }
57
+ }
58
+
59
+ .batch_actions_selector {
60
+ border-radius: $border-radius-button !important;
61
+ }
62
+
63
+ .dropdown_menu {
64
+ border-radius: $border-radius-small;
65
+ box-shadow: $box-shadow-hover;
66
+ border: none;
67
+ }
68
+
69
+ .icon-container {
70
+ display: inline-flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ width: 40px;
74
+ height: 40px;
75
+ border-radius: 50%;
76
+ background: linear-gradient(135deg, rgba($indigo, 0.1) 0%, rgba($indigo, 0.05) 100%);
77
+ box-shadow: 0 2px 8px rgba($indigo, 0.15);
78
+ transition: all 0.3s ease;
79
+
80
+ &:hover {
81
+ background: linear-gradient(135deg, rgba($indigo, 0.15) 0%, rgba($indigo, 0.08) 100%);
82
+ box-shadow: 0 4px 12px rgba($indigo, 0.25);
83
+ transform: translateY(-2px);
84
+ }
85
+
86
+ i,
87
+ svg {
88
+ color: $indigo;
89
+ }
90
+ }
91
+
92
+ .chart-container canvas {
93
+ border-radius: $border-radius-small;
94
+ }
95
+
96
+ :root {
97
+ --chart-primary: #{$indigo};
98
+ --chart-accent-1: #{$teal};
99
+ --chart-accent-2: #{$coral};
100
+ --chart-grid: rgba(102, 16, 242, 0.05);
101
+ }