memorio 1.0.0 → 1.0.2

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 (106) hide show
  1. package/{dist/index.js → index.js} +1 -1
  2. package/package.json +1 -1
  3. package/.editorconfig +0 -31
  4. package/.gitattributes +0 -1
  5. package/.github/CHANGELOG.md +0 -10
  6. package/.github/CITATION.cff +0 -24
  7. package/.github/CODEOWNERS +0 -1
  8. package/.github/CODE_OF_CONDUCT.md +0 -108
  9. package/.github/CONTRIBUTING.md +0 -108
  10. package/.github/COPYRIGHT.md +0 -9
  11. package/.github/FUNDING.yml +0 -16
  12. package/.github/HISTORY.md +0 -1
  13. package/.github/LICENSE.md +0 -21
  14. package/.github/SECURITY.md +0 -3
  15. package/.github/SUMMARY.md +0 -21
  16. package/.github/dependabot.yml +0 -11
  17. package/.github/documents/OBSERVER.md +0 -72
  18. package/.github/documents/STATE.md +0 -72
  19. package/.github/documents/STORE.md +0 -84
  20. package/.github/pull_request_template.md +0 -27
  21. package/.private/npm +0 -1
  22. package/.vscode/extension.json +0 -15
  23. package/.vscode/settings.json +0 -90
  24. package/config/dispatch.ts +0 -49
  25. package/config/global.ts +0 -36
  26. package/coverage/clover.xml +0 -260
  27. package/coverage/coverage-final.json +0 -10
  28. package/coverage/lcov-report/a51.memorio/config/dispatch.ts.html +0 -232
  29. package/coverage/lcov-report/a51.memorio/config/global.ts.html +0 -193
  30. package/coverage/lcov-report/a51.memorio/config/index.html +0 -131
  31. package/coverage/lcov-report/a51.memorio/dist/config/dispatch.js.html +0 -157
  32. package/coverage/lcov-report/a51.memorio/dist/config/global.js.html +0 -142
  33. package/coverage/lcov-report/a51.memorio/dist/config/index.html +0 -131
  34. package/coverage/lcov-report/a51.memorio/dist/functions/cache/index.html +0 -116
  35. package/coverage/lcov-report/a51.memorio/dist/functions/cache/index.js.html +0 -103
  36. package/coverage/lcov-report/a51.memorio/dist/functions/observer/index.html +0 -116
  37. package/coverage/lcov-report/a51.memorio/dist/functions/observer/index.js.html +0 -280
  38. package/coverage/lcov-report/a51.memorio/dist/functions/state/index.html +0 -116
  39. package/coverage/lcov-report/a51.memorio/dist/functions/state/index.js.html +0 -460
  40. package/coverage/lcov-report/a51.memorio/dist/functions/store/index.html +0 -116
  41. package/coverage/lcov-report/a51.memorio/dist/functions/store/index.js.html +0 -367
  42. package/coverage/lcov-report/a51.memorio/dist/index.html +0 -116
  43. package/coverage/lcov-report/a51.memorio/dist/init.js.html +0 -106
  44. package/coverage/lcov-report/a51.memorio/functions/cache/index.html +0 -116
  45. package/coverage/lcov-report/a51.memorio/functions/cache/index.ts.html +0 -142
  46. package/coverage/lcov-report/a51.memorio/functions/observer/index.html +0 -116
  47. package/coverage/lcov-report/a51.memorio/functions/observer/index.ts.html +0 -448
  48. package/coverage/lcov-report/a51.memorio/functions/session/index.html +0 -116
  49. package/coverage/lcov-report/a51.memorio/functions/session/index.ts.html +0 -409
  50. package/coverage/lcov-report/a51.memorio/functions/state/index.html +0 -116
  51. package/coverage/lcov-report/a51.memorio/functions/state/index.ts.html +0 -682
  52. package/coverage/lcov-report/a51.memorio/functions/store/index.html +0 -116
  53. package/coverage/lcov-report/a51.memorio/functions/store/index.ts.html +0 -409
  54. package/coverage/lcov-report/a51.memorio/index.html +0 -131
  55. package/coverage/lcov-report/a51.memorio/index.ts.html +0 -88
  56. package/coverage/lcov-report/a51.memorio/init.ts.html +0 -115
  57. package/coverage/lcov-report/base.css +0 -224
  58. package/coverage/lcov-report/block-navigation.js +0 -87
  59. package/coverage/lcov-report/favicon.png +0 -0
  60. package/coverage/lcov-report/index.html +0 -206
  61. package/coverage/lcov-report/prettify.css +0 -1
  62. package/coverage/lcov-report/prettify.js +0 -2
  63. package/coverage/lcov-report/session/index.html +0 -116
  64. package/coverage/lcov-report/session/index.ts.html +0 -571
  65. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  66. package/coverage/lcov-report/sorter.js +0 -210
  67. package/coverage/lcov-report/state/index.html +0 -116
  68. package/coverage/lcov-report/state/index.ts.html +0 -1090
  69. package/coverage/lcov-report/store/index.html +0 -116
  70. package/coverage/lcov-report/store/index.ts.html +0 -556
  71. package/coverage/lcov.info +0 -518
  72. package/dist/README.md +0 -319
  73. package/dist/index.d.ts +0 -7
  74. package/dist/package.json +0 -98
  75. package/dist/types/cache.d.ts +0 -27
  76. package/dist/types/memorio.d.ts +0 -18
  77. package/dist/types/observer.d.ts +0 -47
  78. package/dist/types/session.d.ts +0 -91
  79. package/dist/types/state.d.ts +0 -71
  80. package/dist/types/store.d.ts +0 -91
  81. package/esbuild.config.mjs +0 -54
  82. package/eslint.config.mjs +0 -174
  83. package/examples/bg.jpg +0 -0
  84. package/examples/bootstrap.less +0 -92
  85. package/examples/favicon.ico +0 -0
  86. package/examples/index.htm +0 -65
  87. package/examples/javascript.js +0 -2
  88. package/examples/responsive.less +0 -47
  89. package/examples/styles.less +0 -169
  90. package/functions/cache/index.ts +0 -19
  91. package/functions/observer/index.ts +0 -121
  92. package/functions/session/index.ts +0 -108
  93. package/functions/state/index.ts +0 -199
  94. package/functions/store/index.ts +0 -108
  95. package/index.ts +0 -1
  96. package/init.ts +0 -12
  97. package/jest.config.mjs +0 -33
  98. package/jest.setup.js +0 -2
  99. package/tests/basic.test.ts +0 -50
  100. package/tests/cache.test.ts +0 -52
  101. package/tests/observer.test.ts +0 -62
  102. package/tests/setup.ts +0 -48
  103. package/tests/state.test.ts +0 -45
  104. package/tests/store.test.ts +0 -62
  105. package/tsconfig.json +0 -67
  106. /package/{.github/README.md → README.md} +0 -0
@@ -1,91 +0,0 @@
1
- /*!
2
- memorio
3
- Copyright (c) 2025 Dario Passariello <dariopassariello@gmail.com>
4
- Licensed under MIT License, see
5
- https://dario.passariello.ca
6
- */
7
-
8
- /**
9
- * Create states using: store.set("example",{test:"test"})
10
- */
11
- interface _store {
12
-
13
- /**
14
- * Create a new store
15
- *
16
- * @example
17
- * store.set("test","example") // or Array, Object, Number, Functions...
18
- *
19
- * @since memorio 0.0.1
20
- * @param name The String as name to define the store.
21
- * @param param The information taht you want to store (Any).
22
- * @return boolean
23
- */
24
- set: (name: string, value: any) => void
25
-
26
- /**
27
- * Have back the data from a store.
28
- *
29
- * @example
30
- * store.get("test")
31
- *
32
- * @since memorio 0.0.1
33
- * @param name The String as name to define the store.
34
- */
35
- get: (name: string) => any
36
-
37
- /**
38
- * Delete an existing store:
39
- *
40
- * @example
41
- * store.delete("test")
42
- * store.remove("test")
43
- *
44
- * @since memorio 0.0.1
45
- * @param name The String as name to define the store.
46
- * @return boolean
47
- */
48
- delete: (name: string) => boolean | undefined
49
- remove: (name: string) => boolean | undefined
50
-
51
- /**
52
- * Delete all storages
53
- *
54
- * @example
55
- * store.clearAll()
56
- * store.removeAll()
57
- *
58
- * @since memorio 0.0.1
59
- * @return boolean
60
- */
61
- clearAll: () => boolean
62
- removeAll: () => boolean
63
-
64
- /**
65
- * Know how much space you have for total storages
66
- *
67
- * @example
68
- * store.quota()
69
- *
70
- * @since memorio 0.0.1
71
- * @return values
72
- */
73
- quota: () => void
74
-
75
- /**
76
- * Get the size of stores an the total
77
- *
78
- * @example
79
- * store.size()
80
- *
81
- * @since memorio 0.0.1
82
- * @return dimension in kb
83
- */
84
- size: () => number
85
-
86
- // TODO
87
- // readonly increaseQuota: (value: number) => void
88
- }
89
-
90
- declare var store: _store
91
- type store = _store
@@ -1,54 +0,0 @@
1
- import esbuild from 'esbuild'
2
- import { copy } from 'esbuild-plugin-copy'
3
- import { clean } from 'esbuild-plugin-clean'
4
-
5
- esbuild.build(
6
- {
7
- entryPoints: ['init.ts'],
8
- outfile: 'dist/index.js',
9
- legalComments: 'none',
10
- color: true,
11
- bundle: true,
12
- minify: true,
13
- sourcemap: false,
14
- allowOverwrite: true,
15
- plugins: [
16
- clean(
17
- {
18
- patterns: [
19
- './dist/*'
20
- ]
21
- }
22
- ),
23
- copy(
24
- {
25
- assets: [
26
- {
27
- from: 'types/**/*',
28
- to: './types'
29
- },
30
- // {
31
- // from: '.github/**/*',
32
- // to: './'
33
- // },
34
- {
35
- from: '.github/README.md',
36
- to: './README.md'
37
- },
38
- {
39
- from: './package.json',
40
- to: './package.json'
41
- },
42
- {
43
- from: './index.d.ts',
44
- to: './index.d.ts'
45
- }
46
- ]
47
- }
48
- )
49
- ]
50
- }
51
- )
52
- .catch(
53
- () => process.exit(1)
54
- )
package/eslint.config.mjs DELETED
@@ -1,174 +0,0 @@
1
- import tseslint from '@typescript-eslint/eslint-plugin'
2
- import tsparser from '@typescript-eslint/parser'
3
- import { defineConfig } from "eslint/config"
4
-
5
- export default defineConfig([
6
- {
7
- ignores: [
8
- '**/node_modules/**',
9
- '**/dist/**',
10
- '**/build/**',
11
- '**/coverage/**',
12
- '**/assets/**',
13
- '**/types/*.d.ts',
14
- '**/*.min.js',
15
- '**/documents/**'
16
- ]
17
- },
18
- // Base configuration for all files
19
- {
20
- languageOptions: {
21
- ecmaVersion: 'latest',
22
- sourceType: 'module',
23
- globals: {
24
- a51dev: 'writable',
25
- process: 'readonly',
26
- global: 'writable',
27
- module: 'writable',
28
- require: 'readonly',
29
- console: 'readonly',
30
- __dirname: 'readonly',
31
- __filename: 'readonly'
32
- }
33
- },
34
- linterOptions: {
35
- reportUnusedDisableDirectives: true
36
- }
37
- },
38
- // JavaScript files configuration
39
- {
40
- files: ['**/*.js', '**/*.mjs', '**/*.cjs'],
41
- languageOptions: {
42
- ecmaVersion: 'latest',
43
- sourceType: 'module'
44
- },
45
- rules: {
46
- 'no-var': 'off',
47
- 'no-console': 'off',
48
- 'no-undef': 'off', // Disable undefined variable checking for JS files
49
- 'no-unused-vars': 'warn', // Make unused vars warnings instead of errors
50
- 'semi': ['warn', 'never']
51
- }
52
- },
53
- // TypeScript files configuration
54
- {
55
- files: ['**/*.ts', '**/*.tsx'],
56
- plugins: {
57
- '@typescript-eslint': tseslint
58
- },
59
- languageOptions: {
60
- parser: tsparser,
61
- parserOptions: {
62
- ecmaVersion: 'latest',
63
- sourceType: 'module'
64
- }
65
- },
66
- rules: {
67
- 'no-var': 'off',
68
- 'no-console': 'off',
69
- 'no-undef': 'off', // TypeScript handles this better
70
- 'no-unused-vars': 'off', // Use the TypeScript specific version instead
71
- 'semi': ['warn', 'never'],
72
- '@typescript-eslint/no-unused-vars': 'warn',
73
- '@typescript-eslint/no-explicit-any': 'off',
74
- '@typescript-eslint/no-var-requires': 'off'
75
- }
76
- },
77
- // Jest test files
78
- {
79
- files: ['**/*.test.js', '**/*.test.ts', '**/*.spec.js', '**/*.spec.ts'],
80
- languageOptions: {
81
- globals: {
82
- jest: 'readonly',
83
- describe: 'readonly',
84
- it: 'readonly',
85
- expect: 'readonly',
86
- beforeEach: 'readonly',
87
- beforeAll: 'readonly',
88
- afterEach: 'readonly',
89
- afterAll: 'readonly',
90
- test: 'readonly',
91
- spyOn: 'readonly'
92
- }
93
- },
94
- rules: {
95
- 'no-undef': 'off' // Jest globals are defined above
96
- }
97
- },
98
- {
99
- rules: {
100
- "no-var": 0,
101
- "no-empty": 0,
102
- "no-console": 0,
103
- "no-process-exit": 0,
104
- "no-underscore-dangle": 0,
105
- "no-param-reassign": 0,
106
- "no-prototype-builtins": 0,
107
- "no-unused-vars": 0,
108
- "no-undef": 0,
109
- "no-debugger": 0,
110
- "no-dupe-else-if": 0,
111
- "no-useless-escape": 0,
112
- "node/no-extraneous-require": 0,
113
- "node/no-unpublished-require": 0,
114
- "node/no-unsupported-features/es-syntax": 0,
115
- "node/no-missing-import": 0,
116
- "node/no-unpublished-import": 0,
117
- "node/no-unsupported-features/node-builtins": 0,
118
- "node/no-missing-require": 0,
119
- "react/prop-types": 0,
120
- "react/no-string-refs": 0,
121
- "react/no-find-dom-node": 0,
122
- "react/display-name": 0,
123
- "react/jsx-no-undef": 0,
124
- "promise/no-nesting": 0,
125
- "promise/no-callback-in-promise": 0,
126
- "promise/always-return": 0,
127
- "promise/catch-or-return": 0,
128
- "promise/no-return-wrap": 0,
129
- "promise/valid-params": 0,
130
- "import/export": 0,
131
- "import/namespace": 0,
132
- "import/default": 0,
133
- "import/no-named-as-default": 0,
134
- "import/no-named-as-default-member": 0,
135
- "import/no-mutable-exports": 0,
136
- "import/no-extraneous-dependencies": 0,
137
- "import/no-unresolved": 0,
138
- "import/no-duplicates": 0,
139
- "import/named": 0,
140
- "@typescript-eslint/no-var-requires": 0,
141
- "@typescript-eslint/no-unused-vars": 0,
142
- "@typescript-eslint/no-empty-function": 0,
143
- "@typescript-eslint/no-explicit-any": 0,
144
- "consistent-return": 0,
145
- "unicorn/no-process-exit": 0,
146
- "comma-dangle": [
147
- "error",
148
- "never"
149
- ],
150
- "prefer-const": [
151
- "warn"
152
- ],
153
- "semi": [
154
- "warn",
155
- "never"
156
- ],
157
- "max-nested-callbacks": [
158
- "warn",
159
- 4
160
- ],
161
- "no-plusplus": 0,
162
- "operator-linebreak": [
163
- "error",
164
- "after",
165
- {
166
- "overrides": {
167
- "?": "ignore",
168
- ":": "ignore"
169
- }
170
- }
171
- ]
172
- }
173
- }
174
- ])
package/examples/bg.jpg DELETED
Binary file
@@ -1,92 +0,0 @@
1
- // Copyright (c) 2024 Dario Passariello
2
-
3
- * {
4
- box-sizing: border-box;
5
- }
6
-
7
- article,
8
- aside,
9
- details,
10
- figcaption,
11
- figure,
12
- footer,
13
- header,
14
- hgroup,
15
- nav,
16
- section {
17
- display: block;
18
- }
19
-
20
- audio,
21
- canvas,
22
- video {
23
- display: inline-block;
24
- }
25
-
26
- audio:not([controls]) {
27
- display: none;
28
- }
29
-
30
- sub,
31
- sup {
32
- position: relative;
33
- font-size: 75%;
34
- line-height: 0;
35
- vertical-align: baseline;
36
- }
37
-
38
- sup {
39
- top: -0.1em;
40
- }
41
-
42
- sub {
43
- bottom: -0.1em;
44
- }
45
-
46
- img {
47
- border: 0;
48
- }
49
-
50
- ol,
51
- ul {
52
- list-style: square;
53
- }
54
-
55
- blockquote,
56
- q,
57
- blockquote:before,
58
- blockquote:after,
59
- q:before,
60
- q:after {
61
- quotes: none;
62
- content: '';
63
- content: none;
64
- }
65
-
66
- b,
67
- strong {
68
- font-weight: 600;
69
- }
70
-
71
- table {
72
- border-collapse: collapse;
73
- border-spacing: 0;
74
- }
75
-
76
- input::-moz-focus-inner {
77
- border: 0;
78
- }
79
-
80
- h1,
81
- h2,
82
- h3,
83
- h4,
84
- h5,
85
- h6 {
86
- margin: 0;
87
- padding: 0;
88
- font-size: 1.5em;
89
- letter-spacing: -.05em;
90
- color: #666;
91
- line-height: 1em;
92
- }
Binary file
@@ -1,65 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html lang="en" dir="ltr" prefix="og: http://ogp.me/ns#" itemscope itemtype="http://schema.org/WebPage">
4
-
5
- <head>
6
- <meta charset="UTF-8" />
7
-
8
- <meta name="description" content="Example by Dario Passariello, Copyright (c) 2024" />
9
- <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
10
- <meta name="mobile-web-app-capable" content="yes" />
11
- <meta name="apple-mobile-web-app-capable" content="yes" />
12
- <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
13
- <meta name="msapplication-starturl" content="index.html" />
14
- <meta name="msapplication-TileColor" content="#ffffff" />
15
- <meta name="theme-color" content="#ffffff" />
16
- <meta name="google" content="nopagereadaloud" />
17
- <meta name="referrer" content="no-referrer" />
18
-
19
- <link rel="preconnect" href="https://cdn.jsdelivr.net">
20
- <link rel="dns-prefetch" href="https://cdn.jsdelivr.net" nonce />
21
-
22
- <link rel="stylesheet/less" type="text/css" href="bootstrap.less" />
23
- <link rel="stylesheet/less" type="text/css" href="styles.less" />
24
- <link rel="stylesheet/less" type="text/css" href="responsive.less" />
25
-
26
- <link rel="preload stylesheet preconnect"
27
- href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" as="style"
28
- onload="this.onload=null;this.rel='stylesheet'" nonce>
29
-
30
- <link rel="icon" type="image/x-icon" href="favicon.ico">
31
-
32
- <title>Example Memorio by Dario Passariello</title>
33
-
34
- </head>
35
-
36
- <body>
37
-
38
- <header>
39
- <nav> </nav>
40
- </header>
41
-
42
- <aside>
43
- <section>
44
- </section>
45
- </aside>
46
-
47
- <main>
48
-
49
- <br />
50
- <h1><i class="fa-solid fa-person-through-window"></i> Memorio Example </h1>
51
-
52
- <hr />
53
-
54
- </main>
55
-
56
- <footer>Copyright &copy; <span class="year">2025</span> - Dario Passariello</footer>
57
-
58
- <!-- Custom NPM -->
59
- <script src="https://cdn.jsdelivr.net/npm/memorio"></script>
60
- <script src="https://cdn.jsdelivr.net/npm/less"></script>
61
- <script src="javascript.js"></script>
62
-
63
- </body>
64
-
65
- </html>
@@ -1,2 +0,0 @@
1
- // DEFINE THE STATE CONTAINER
2
- state.custom = {}
@@ -1,47 +0,0 @@
1
- @media screen and (max-width: 699px) {
2
-
3
- :root {
4
- --w2: 60px !important;
5
- }
6
-
7
- html {
8
- overflow: auto !important;
9
- }
10
-
11
- body {
12
- display: flex !important;
13
- position: relative !important;
14
- flex-direction: column-reverse;
15
- align-items: center;
16
- overflow: auto !important;
17
- padding: 20px 10px !important;
18
-
19
- &:before {
20
- all: unset !important;
21
- }
22
-
23
- #fs {
24
- display: none;
25
- }
26
-
27
- main,
28
- aside,
29
- section,
30
- footer {
31
- all: unset !important;
32
- width: 100%;
33
- }
34
-
35
- main {
36
- display: flex !important;
37
- flex-direction: column !important;
38
-
39
- input {
40
- width: 80% !important;
41
- }
42
- }
43
-
44
- }
45
-
46
-
47
- }
@@ -1,169 +0,0 @@
1
- @import url('https://fonts.googleapis.com/css2?family=Lato');
2
-
3
- // Copyright (c) 2024 Dario Passariello
4
-
5
- :root {
6
- --header-height: 30px;
7
- --aside: 300px;
8
- --w1: 15px;
9
- --w2: 35px;
10
- --h1: 20px;
11
- }
12
-
13
- // html{
14
- // display: none;
15
- // }
16
-
17
- * {
18
- font-family: 'Lato', sans-serif;
19
-
20
- &::backdrop {
21
- background-color: rgba(255, 255, 255, 0);
22
- }
23
- }
24
-
25
- html,
26
- body {
27
- cursor: default;
28
- margin: 0;
29
- padding: 0;
30
- font-size: 1em;
31
- position: absolute;
32
- top: 0;
33
- left: 0;
34
- right: 0;
35
- bottom: 0;
36
- overflow: hidden;
37
-
38
- &:before {
39
- content: '';
40
- position: absolute;
41
- top: 0;
42
- left: 0;
43
- right: 0;
44
- bottom: 0;
45
- background-image: url('bg.jpg');
46
- background-size: cover;
47
- filter: blur(4px);
48
- z-index: 0
49
- }
50
-
51
- header {
52
- position: absolute;
53
- top: 0;
54
- height: var(--header-height);
55
- left: 0;
56
- right: 0;
57
- background: black;
58
- color: white;
59
- }
60
-
61
- aside {
62
- padding: 15px 0;
63
- display: flex;
64
- flex-direction: column;
65
- align-items: center;
66
- position: absolute;
67
- top: var(--header-height);
68
- left: 0;
69
- bottom: 0;
70
- width: var(--aside);
71
- border-right: 1px solid #bbb;
72
- overflow: auto;
73
- background: #eee;
74
-
75
- section {
76
- display: flex
77
- }
78
-
79
- hr {
80
- width: 150px;
81
- }
82
-
83
- .table {
84
- .title {
85
- display: flex;
86
- padding-left: var(--w1);
87
- display: flex;
88
-
89
- span {
90
- color: cornflowerblue;
91
- text-align: center;
92
- font-size: .65em;
93
- width: var(--w2);
94
- }
95
- }
96
-
97
- .row {
98
- display: flex;
99
-
100
- >span {
101
- color: cornflowerblue;
102
- font-size: .65em;
103
- width: var(--w1);
104
- text-align: right;
105
- padding-right: 3px;
106
- }
107
-
108
- input {
109
- width: var(--w2);
110
- height: var(--h1);
111
- padding: 1px;
112
- text-align: center;
113
- font-size: .65em;
114
- border: 1px solid #ddd;
115
- }
116
- }
117
- }
118
- }
119
-
120
- main {
121
- display: flex;
122
- flex-direction: column;
123
- align-items: center;
124
- position: absolute;
125
- top: var(--header-height);
126
- left: var(--aside);
127
- right: 0;
128
- bottom: 0;
129
- overflow: auto;
130
-
131
- >span {
132
- position: absolute;
133
- top: 10px;
134
- right: 10px;
135
- width: unset
136
- }
137
-
138
- button {
139
- font-size: 1em;
140
- margin: 3px;
141
- padding: 8px;
142
- width: 390px;
143
- border-radius: 10px;
144
- border: 1px solid #AAA;
145
- color: #AAA;
146
- text-shadow: black 0 -1px, white 0 1px;
147
-
148
- &:hover {
149
- background: #CCC;
150
- cursor: pointer;
151
- }
152
- }
153
-
154
- hr {
155
- background: gray;
156
- height: 1px;
157
- width: 350px;
158
- margin: 10px;
159
- }
160
- }
161
-
162
- footer {
163
- position: absolute;
164
- bottom: 10px;
165
- right: 20px;
166
- font-size: .8em;
167
- }
168
-
169
- }